-
Die
Erfindung betrifft ein Mikrocontroller- bzw. Mikroprozessor-System
gemäß Oberbegriff
des Anspruchs 1, und ein Verfahren zum Betreiben eines Mikrocontroller-
bzw. Mikroprozessor-Systems.
-
Herkömmliche
Mikrocontroller- bzw. Mikroprozessor-Systeme weisen eine oder mehrere
(zentrale) Steuer- bzw. Recheneinheiten auf (Central Processing
Units (CPUs), bzw. CPU „Cores").
-
Die
CPU oder die CPUs sind mit einer oder mehreren Speicher-Einrichtungen verbunden,
z.B. einer Programm- und einer Datenspeichereinrichtung („Programmspeicher", und „Datenspeicher").
-
Der „Programmspeicher" enthält insbesondere
die Folge der von dem bzw. den CPU Cores abzuarbeitenden Befehle,
also das Programm (und ggf. zusätzlich
entsprechende – von
dem bzw. den CPU Cores zu verwendende – Daten-Konstanten, z.B. System-Daten betreffende
Daten-Konstanten).
-
Der
Programmspeicher kann z.B. von einem EPROM (Erasable PROM bzw. Löschbaren
Festwertspeicher) oder EEPROM (Electrically Erasable PROM bzw. Elektrisch
Löschbarer
Festwertspeicher) gebildet werden, oder z.B. von einem SRAM (SRAM =
Static Random Access Memory).
-
Dadurch
kann erreicht werden, dass das Programm auch bei unterbrochener
Stromzufuhr auf der entsprechenden Speicher-Einrichtung gespeichert bleibt.
-
Für häufig zu ändernde
Programme können – alternativ – z.B. auch
DRAMs (DRAM = Dynamic Random Access Memory) als Programmspeicher verwendet
werden, die von einem externen Massenspeicher geladen werden können.
-
Im
o.g. „Datenspeicher" können z.B.
die – insbesondere
von dem bzw. den CPU Cores beim Abarbeiten des Programms ggf. abzuändernden – Variablen
gespeichert sein.
-
Der
Datenspeicher kann z.B. von einem oder mehreren RAM-Bauelementen, insbesondere
z.B. einem entsprechenden DRAM-Bauelement
(DRAM = Dynamic Random Access Memory), oder SRAM-Bauelement (SRAM = Static Random Access Memory)
gebildet werden.
-
Bei
der Speicherung von Daten in Speicherbauelementen, z.B. RAMs können zwei
verschiedene Arten von Fehlern auftreten permanente Fehler (hard
errors) und flüchtige
Fehler (soft errors).
-
Permanente
Fehler (hard errors) können durch
Defekte in den jeweiligen Halbleiter-Speicherbauelementen, und/oder
in den beteiligten Ansteuerschaltungen verursacht werden.
-
Flüchtige Fehler
(soft errors) treten nur zufällig
auf, und sind nicht reproduzierbar. Soft errors können z.B.
durch α-Strahlung verursacht
werden, z.B. durch von kosmischer Strahlung, der Umgebung des jeweiligen
Speicherbauelements, oder dem Speicherbauelement-Gehäuse selbst,
etc. herrührender α-Strahlung.
-
α-Strahlung
kann z.B. dazu führen,
dass die Speicherkondensatoren von dynamischen RAMs umgeladen werden,
oder dass die Speicher-Flip-Flops von statischen RAMs umkippen,
etc.
-
Flüchtige Fehler
können
auch durch Störimpulse
entstehen, die innerhalb oder außerhalb einer Schaltung bzw.
eines Speicherbauelements erzeugt werden.
-
Speicher-Fehler
können
weitreichende Folgen haben, z.B. zum „Absturz" (endgültigen Ausfall) eines Programms
führen,
oder dazu, dass von einem Mikrocontroller- bzw. Mikroprozessor-System ein falsches
Ergebnis geliefert bzw. berechnet wird, etc., etc.
-
Aus
diesem Grund werden in Mikrocontroller- bzw. Mikroprozessor-Systemen
entsprechende Speicherbauelemente immer häufiger so betrieben, dass eine
Erkennung oder – besser – eine Korrektur von
Speicher-Fehlern möglich
ist.
-
Zu
diesem Zweck können
entsprechende fehlererkennende oder fehlerkorrigierende Codes verwendet
werden.
-
Das
einfachste Verfahren zur Fehlererkennung besteht in der – zusätzlichen – Übertragung
und Speicherung eines sog. Paritätsbits
als Prüfbit.
-
Beispielsweise
wird – im
Falle einer sog. „geraden" Parität – das zusätzlich übertragene
Paritätsbit
auf Null gesetzt, wenn die Zahl der Einsen in den übrigen zu übertragenden
Datenbits gerade ist, und auf Eins, wenn die Zahl der Einsen in
den übrigen
zu übertragenden
Datenbits ungerade ist.
-
Umgekehrt
wird – im
Falle einer sog. „ungeraden" Parität – das zusätzlich übertragene
Paritätsbit
auf Eins gesetzt, wenn die Zahl der Einsen in den übrigen zu übertragenden
Datenbits gerade ist, und auf Null, wenn die Zahl der Einsen in
den übrigen
zu übertragenden
Datenbits ungerade ist.
-
Zur
Fehlererkennung wird das – zusätzlich übertragene – Paritätsbit zusammen
mit den abzuspeichernden, übertragenen
Datenbits abgespeichert.
-
Beim
Auslesen der Datenbits wird – erneut – das entsprechende
Paritätsbit
berechnet, und mit dem abgespeicherten Paritätsbit verglichen. Ergibt sich
ein Unterschied, ist ein Fehler aufgetreten.
-
Sind
mehrere Bits gestört,
kann mit Hilfe der o.g. Paritätsbit-Methode
eine ungerade Fehlerzahl erkannt werden, eine gerade hingegen nicht.
-
Durch Übertragung
gleich mehrerer Prüfbits (statt
eines einzigen Paritätsbits)
kann das o.g. Prinzip so verbessert werden, dass ein Fehler nicht
nur erkannt, sondern auch lokalisiert werden kann (und/oder dass
gleich mehrere bzw. auch eine gerade Anzahl an Fehlern erkannt werden
kann). Ein lokalisierter Fehler kann durch Negation des entsprechenden
Bits korrigiert werden.
-
Als
fehlerkorrigierender Code kann z.B. ein sog. Hamming-Code verwendet
werden, etc.
-
Abhängig vom
jeweils verwendeten Code, und der Anzahl an Prüfbits kann die Anzahl an erkenn-
und/oder korrigierbaren Fehlern unterschiedlich sein.
-
Z.B.
können
mit Hilfe eines sog. SECDED-Codes gleich zwei in den übertragenen
Datenbits enthaltene Fehler erkannt, und ein in den übertragenen
Datenbits enthaltener Fehler korrigiert werden (SECDED = Single
Error Correction, Dual Error Detection).
-
Wie
sich aus der in 1 gezeigten
Tabelle ergibt, ist die Anzahl an zu übertragenden (Nutz-)Datenbits,
und die Anzahl der entsprechenden, zusätzlich zu übertragenden Prüfbits (z.B.
entsprechender SECDED-Code-Bits) nicht linear.
-
Stattdessen
sind z.B. – falls
2n zu übertragende
Datenbits mit Hilfe entsprechender SECDED-Code-Bits „geschützt" werden sollen – hierzu n+2
SECDED-Code-Bits notwendig.
-
Der
sich aus den o.g. Formeln ergebende Zusammenhang zwischen der Anzahl
an zu übertragenden
(Nutz-)Datenbits, und dem entsprechenden SECDED-Code-Bit-/(Nutz-)Datenbit-Verhältnis ist aus
dem in 2 zur Veranschaulichung
dargestellten Graphen ersichtlich.
-
Wie
den Darstellungen in 1 und 2 entnommen werden kann,
werden – pro
(Nutz-)Datenbit – um
so weniger SECDED-Code-Bits
benötigt, je
größer die
Datenbreite der zu übertragenden (Nutz-)Datenbits
ist.
-
Die
Erfindung hat zur Aufgabe, ein neuartiges Mikrocontroller- bzw.
Mikroprozessor-System zur Verfügung
zu stellen, sowie ein neuartiges Verfahren zum Betreiben eines Mikrocontroller-
bzw. Mikroprozessor-Systems, insbesondere ein System und ein Verfahren,
bei denen die Anzahl der zum „Schutz" der Daten benötigten Prüfbits gering
gehalten werden kann, bei keinen oder nur geringen Performance-Einbussen.
-
Sie
erreicht dieses und weitere Ziele durch den Gegenstand der Ansprüche 1 und
8.
-
Vorteilhafte
Weiterbildungen der Erfindung sind in den Unteransprüchen angegeben.
-
Gemäß einem
Aspekt der Erfindung wird ein Mikrocontroller- bzw. Mikroprozessor-System zur Verfügung gestellt,
welches aufweist:
eine Speicher-Einrichtung, und
einen
Zwischen-Speicher zum Zwischen-Speichern von in Reaktion auf einen
in Reaktion auf einen Schreib-Befehl erzeugten, korrespondierenden
Lese- bzw. Lese-Modifizier- Schreib-Befehl
aus der Speicher-Einrichtung ausgelesenen Daten.
-
Gemäß einem
weiteren Aspekt der Erfindung wird ein Verfahren zum Betreiben eines
Mikrocontroller- bzw. Mikroprozessor-Systems zur Verfügung gestellt, welches mindestens
eine Speicher-Einrichtung umfasst, wobei das Verfahren die Schritte
aufweist:
Erzeugen eines zu einem Schreib-Befehl korrespondierenden
Lese- bzw. Lese-Modifizier-Schreib-Befehls; und
Zwischen-Speichern
von in Reaktion auf den erzeugten Lese- bzw. Lese-Modifizier-Schreib-Befehl
aus der Speicher-Einrichtung
ausgelesenen Daten.
-
Im
folgenden wird die Erfindung anhand von Ausführungsbeispielen und der beigefügten Zeichnung
näher erläutert. In
der Zeichnung zeigt:
-
1 eine
Tabelle zur beispielhaften Veranschaulichung des Zusammenhangs zwischen
der Anzahl an zu übertragenden
(Nutz-)Datenbits, der Anzahl der entsprechenden, zusätzlich zu übertragenden
SECDED-Code-Bits, und des sich jeweils ergebenden SECDED-Code-Bit-/(Nutz-)Datenbit-Verhältnisses;
und
-
2 einen
Graphen zur beispielhaften Veranschaulichung des Zusammenhangs zwischen
der Anzahl an zu übertragenden
(Nutz-)Datenbits, und dem entsprechenden SECDED-Code-Bit-/(Nutz-)Datenbit-Verhältnis;
-
3 eine
schematische Darstellung eines Mikrocontroller- bzw. Mikroprozessor-Systems
gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung; und
-
4 eine
schematische Darstellung von Speicher-Plätzen eines der in 3 gezeigten
Merge Buffer bzw. der dort gezeigten Speicher-Einrichtung, und der
jeweils gespeicherten Daten-Bits, zur Veranschaulichung von bei
einem Verfahren zum Betreiben des Mikrocontroller- bzw. Mikroprozessor-Systems
gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung durchgeführten Verfahrensschritten.
-
In 3 ist – beispielhaft – eine schematische
Darstellung eines Mikrocontroller- bzw. Mikroprozessor-Systems 1 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung gezeigt.
-
Dieses
weist eine Mikrocontroller-Einheit 7 auf, welche eine einzelne
Steuer- bzw. Recheneinheit 2a („Single-Core-System") oder mehrere Steuer- bzw.
Recheneinheiten 2a, 2a („Multi-Core-System") aufweisen kann (Central Processing
Units (CPUs), bzw. CPU „Cores" 2a, 2b).
-
Die
CPU Cores 2a, 2b sind über ein entsprechendes Bus-System 3,
und unter Zwischenschaltung einer Speicher-Steuer-Einrichtung 17,
und – wie im
folgenden noch genauer erläutert
wird – mehrerer Merge
Buffer 5a, 5b, 5c, 5d mit einer
Speicher-Einrichtung 4 verbunden.
-
Das
Bus-System 3 weist mehrere Sub-Busse auf, z.B. einen Daten-Bus 3a,
einen Steuer-Bus 3b, und einen Adress-Bus 3c.
-
Statt
oder zusätzlich
zu der in 1 gezeigten Speicher-Einrichtung 4 können eine
oder mehrere weitere Speicher-Einrichtungen
vorgesehen sein, wobei beispielsweise eine erste der Speicher-Einrichtungen 4 – insbesondere – als Programmspeicher fungiert,
und eine zweite der Speicher-Einrichtungen – insbesondere – als Datenspeicher,
etc.
-
Der „Programmspeicher" enthält insbesondere
die Folge der von dem bzw. den CPU Cores 2a, 2b abzuarbeitenden
Befehle, also das Programm (und ggf. zusätzlich entsprechende – von dem bzw. den
CPU Cores zu verwendende – Daten-Konstanten,
z.B. System-Daten betreffende Daten-Konstanten).
-
Im
o.g. „Datenspeicher" können z.B.
die – insbesondere
von dem bzw. den CPU Cores 2a, 2b beim Abarbeiten
des Programms ggf. abzuändernden – Variablen
gespeichert sein.
-
Als
Speicher-Einrichtung 4 (und/oder als weitere Speicher-Einrichtung, etc.)
können
z.B. ein oder mehrere SRAMs (SRAM = Static Random Access Memory)
verwendet werden, und/oder ein oder mehrere DRAMs (DRAM = Dynamic
Random Access Memory), etc. (und/oder alternativ z.B. auch ein oder mehrere
EPROMs (Erasable PROM bzw. Löschbarer Festwertspeicher)
und/oder EEPROMs (Electrically Erasable PROM bzw. Elektrisch Löschbarer
Festwertspeicher) und/oder Flash-Speicherbauelemente).
-
Der
o.g. Datenspeicher kann z.B. von einem oder mehreren RAM-Bauelementen, insbesondere z.B.
einem entsprechenden DRAM-Bauelement (DRAM
= Dynamic Random Access Memory), oder SRAM-Bauelement (SRAM = Static Random Access Memory)
gebildet werden.
-
Die
Speicher-Einrichtung 4, die Speicher-Steuer-Einrichtung 17,
und die Mikrocontroller-Einheit 7 können alle auf ein- und demselben Chip liegen;
alternativ kann z.B. für
die Speicher-Einrichtung 4 auch ein separater Chip vorgesehen
sein.
-
Im
vorliegenden fall weist die Speicher-Einrichtung 4 vier
separate Memory Tower 4a, 4b, 4c, 4d auf,
in denen bei einem einzelnen Zugriff jeweils (maximal) 16 Bit breite
Daten als „Nutz-Daten" abgespeichert, oder
ausgelesen werden können.
-
Alternativ
können
statt der hier beispielhaft dargestellten Speicher-Einrichtung 4 auch
beliebig anders aufgebaute und eingerichtete Speicher-Einrichtungen
verwendet werden, z.B. Speicher-Einrichtungen mit mehr oder weniger
Memory Towern, als in 3 dargestellt, und/oder Speicher-Einrichtungen, bei
denen die maximale Daten-Breite der bei einem einzelnen Zugriff
(in einem entsprechenden Memory Tower) abspeicher- oder auslesbaren
Daten höher ist,
als oben angegeben (z.B. Speicher-Einrichtungen, bei denen bei einem
einzelnen Zugriff jeweils maximal 32, 64, 128 oder 256 Bit breite
Daten als Nutz-Daten in einem entsprechenden Memory Tower abgespeichert,
oder aus diesem ausgelesen werden können).
-
Wie
im folgenden noch genauer erläutert wird,
kann von der Mikrocontroller-Einheit 7 – durch Übertragen entsprechender Befehls-Signale über den
o.g. Steuer-Bus 3b – auch
ein Lese- oder Schreib-Zugriff
durchgeführt
werden, bei dem Daten als Nutz-Daten in einem entsprechenden Memory Tower
abgespeichert, oder aus diesem ausgelesen werden sollen, die eine
kleinere Daten-Breite aufweisen, als die o.g. maximale Daten-Breite
des jeweiligen Memory Towers (z.B. 8 Bit statt der o.g. 16 Bit (oder – bei anderen,
alternativen Speicher-Einrichtungs-Konfigurationen,
z.B. bei solchen, bei welchen bei einem einzelnen Zugriff jeweils
maximal 32 Bit breite Daten als Nutz-Daten in einem entsprechenden
Memory Tower abgespeichert, oder aus diesem ausgelesen werden können – 8 oder
16 Bit statt 32 Bit (oder z.B. 8, 16 oder 32 Bit statt maximal 64
Bit, etc., etc.))).
-
Wie
in 3 veranschaulicht ist, werden beim vorliegenden
Ausführungsbeispiel
in der Speicher-Einrichtung 4, bzw. genauer: im jeweiligen
Memory Tower 4a, 4b, 4c, 4d zusammen
mit den o.g. Nutz-Daten (hier: z.B. bestehend aus jeweils 16 Bit) jeweils
zusätzlich
den jeweiligen Nutz-Daten zugeordnete Prüf-Daten (hier: z.B. jeweils
bestehend aus 6 Bit) abgespeichert.
-
Die
Prüf-Daten
werden unter Verwendung an sich bekannter fehlererkennender oder
fehlerkorrigierender Codes aus den Nutz-Daten berechnet (z.B. jeweils
durch den Mikrocontroller bzw. -prozessor 7 selbst, und/oder
durch die Speicher-Steuer-Einrichtung 17,
und/oder durch den jeweiligen Merge Buffer 5a, 5b, 5c, 5d).
-
Bei
den Prüf-Daten
kann es sich z.B. um ein oder mehrere entsprechende, unter Verwendung
entsprechender fehlererkennender Codes aus den jeweiligen Nutz-Daten
berechnete „gerade" oder „ungerade" Paritätsbits handeln,
oder z.B. um unter Verwendung entsprechender fehlerkorrigierender
Codes (ECC = Error Correcting Code), z.B. eines Hamming-Codes aus
den jeweiligen Nutz-Daten berechnete Prüfbits, etc., z.B. – beim vorliegenden
Ausführungsbeispiel – um SECDED-Code-Prüf-Daten (SECDED
= Single Error Correction, Dual Error Detection), mit deren Hilfe
zwei in den abgespeicherten Nutz-Daten enthaltene Fehler erkannt,
und ein in den abgespeicherten Nutz-Daten enthaltener Fehler korrigiert
werden kann (oder z.B. um DECTED-Code-Prüf-Daten (DECTED = Double Error
Correction, Triple Error Detection), mit deren Hilfe drei in den
abgespeicherten Nutz-Daten enthaltene Fehler erkannt, und zwei in
den abgespeicherten Nutz-Daten enthaltene Fehler korrigiert werden
können).
-
Wie
im folgenden noch genauer erläutert wird,
werden beim vorliegenden Ausführungsbeispiel unabhängig von
der tatsächlichen
Breite der von der Mikrocontroller-Einheit 7 mittels Schreib-Zugriff
jeweils angesprochenen Nutz-Daten (hier z.B. 8 Bit, oder 16 Bit) – falls
dann tatsächlich
ein Zugriff auf den entsprechenden Memory Tower 4a, 4b, 4c, 4d erfolgt (s.u.) – jeweils
die o.g. maximale Zahl der bei einem Zugriff in einem entsprechenden
Memory Tower abspeicher- oder auslesbarerer Nutz-Daten dort abgespeichert
(hier z.B. jeweils 16 Bit), und die jeweils entsprechende, zugehörige Anzahl
von Prüf-Daten (hier
z.B. jeweils 6 Bit SECDED-Code-Prüfdaten (vgl. z.B.
auch die in 1 gezeigte Tabelle)).
-
Entspricht
bei einem Schreib-Zugriff (z.B. bei einem 16-Bit-Store-Befehl) durch die Mikrocontroller-Einheit 7 die
Breite der von der Mikrocontroller-Einheit 7 über das
Bus-System 3 übermittelten,
in der Speicher-Einrichtung 4 abzuspeichernden Nutz-Daten
der o.g. Anzahl der jeweils in einem Memory Tower bei einem Einzel-Zugriff
abspeicherbaren Nutz-Daten (hier z.B. 16 Bit), werden diese – wie herkömmlich,
und ohne Zwischenspeicherung im entsprechenden Merge Buffer 5a, 5b, 5c, 5d – zusammen
mit den entsprechenden (wie oben erläutert berechneten) Prüf-Daten
an der durch die über
den Adress-Bus 3c übertragenen
Adresse definierten Stelle in der Speicher-Einrichtung 4 abgespeichert (und
zwar innerhalb eines einzigen Zyklus).
-
Ist
bei einem Schreib-Zugriff (z.B. bei einem 8-Bit-Store-Befehl) durch die
Mikrocontroller-Einheit 7 die Breite der von der Mikrocontroller-Einheit 7 über das
Bus-System 3 übermittelten,
in der Speicher-Einrichtung 4 abzuspeichernden Nutz-Daten
kleiner der o.g. Anzahl der jeweils in einem Memory Tower bei einem
Einzel-Zugriff (maximal) abspeicherbaren Nutz-Daten, wird wie folgt
verfahren:
Der entsprechende Befehl (z.B. der o.g. 8-Bit-Store-Befehl)
wird – z.B.
von der Mikrocontroller-Einheit 7, der Speicher-Steuer-Einrichtung 17, oder
dem jeweiligen Merge Buffer 5a, 5b, 5c, 5d – in einen
entsprechenden 16-Bit-Read-Modify-Write-Befehl umgewandelt (d.h. in einen
16-Bit-Read-Modify-Write-Befehl,
mit welchem eine entsprechende Stelle in der Speicher-Einrichtung 4 angesprochen wird,
wie durch den 8-Bit-Store-Befehl
(wobei die durch die Befehle angesprochene Speicher-Stelle über die über den
Adress-Bus 3c übertragene
Adresse definiert wird)).
-
Mit
anderen Worten wird also statt des o.g. Schreib-Zugriffs ein entsprechender
Lese-Modifizier-Schreib-Zugriff durchgeführt.
-
Dabei
werden – wie
aus 4, oben („Schritt 1") hervorgeht – abhängig von
der durch den 8-Bit-Store-Befehl angesprochenen Adress-Stelle entweder
(zusätzlich
zu den an den durch den 8-Bit-Store-Befehl angesprochenen Speicher-Stellen abgespeicherten
Daten) auch Daten aus der Speicher-Einrichtung 4 ausgelesen, die
an den 8 vorhergehenden (siehe 4, Fall
A, oben), oder 8 nachfolgenden (siehe 4, Fall
B, oben) Speicher-Stellen der Speicher-Einrichtung abgespeichert
sind (Bits 12a, 12b, 12c, 12d, 12e, 12f, 12g, 12h,
bzw. Bits 13a, 13b, 13c, 13d, 13e, 13f, 13g, 13h) – mit anderen Worten
wird also jeweils das entsprechende, vollständige (16-Bit) Daten-Wort 16 aus
der Speicher-Einrichtung 4 bzw.
dem entsprechenden Memory Tower 4a, 4b, 4c, 4d ausgelesen,
bzw. dasjenige (16-Bit) Daten-Wort 16, welches Daten an
einer Adress-Stelle enthält,
die der für
den 8-Bit-Store-Befehl angegebenen Adresse entspricht.
-
Die
ausgelesenen Daten (d.h. das entsprechende, vollständige Daten-Wort)
werden im entsprechenden, dem jeweiligen Memory Tower 4a, 4b, 4c, 4d zugeordneten
Merge Buffer 5a, 5b, 5c, 5d zwischengespeichert,
und dort mit den o.g. für
den o.g. 8-Bit-Store-Befehl
von der Mikrocontroller-Einheit 7 über das Bus-System 3 übermittelten,
in der Speicher-Einrichtung 4 abzuspeichernden Nutz-Daten zusammengeführt („Merging").
-
Dabei
werden – wie
aus 4, „Schritt
2" hervorgeht – zu den
o.g. durch den 16-Bit-Read-Modify-Write-Befehl im Vergleich zu dem
korrespondierenden 8-Bit-Store-Befehl zusätzlich spezifizierten 8 Bits 12a, 12b, 12c, 12d, 12e, 12f, 12g, 12h,
bzw. 8 Bits 13a, 13b, 13c, 13d, 13e, 13f, 13g, 13h (d.h.
zu den 8 ersten Bits (Fall A), oder 8 letzten Bits (Fall B) des
o.g. Daten-Worts) die entsprechenden, durch den o.g. 8-Bit-Store-Befehl
spezifizierten, von der Mikrocontroller-Einheit 7 über das
Bus-System 3 übermittelten
8 Bits hinzugefügt
(d.h. die 8 Bits 14a, 14b, 14c, 14d, 14e, 14f, 14g, 14h nachfolgend
auf die o.g. 8 Bits 12a, 12b, 12c, 12d, 12e, 12f, 12g, 12h im
entsprechenden Merge-Buffer abgespeichert (Fall A), bzw. die 8 Bits 15a, 15b, 15c, 15d, 15e, 15f, 15g, 15h vorhergehend
zu den o.g. 8 Bits 13a, 13b, 13c, 13d, 13e, 13f, 13g, 13h im
entsprechenden Merge-Buffer abgespeichert (Fall B)).
-
Für das so
erzeugte, geänderte
Daten-Wort 18 werden entsprechend wie oben erläutert (insbesondere
z.B. jeweils durch den Mikrocontroller bzw. -prozessor 7 selbst,
und/oder durch die Speicher-Steuer-Einrichtung 17, und/oder
durch den jeweiligen Merge Buffer 5a, 5b, 5c, 5d)
das oder die korrespondierenden Prüf-Daten (hier z.B.: die entsprechenden
6 SECDED-Code-Prüf-Daten-Bits)
berechnet, und – unter
Zuordnung zum o.g. geänderten Daten-Wort 18 – ebenfalls
im entsprechenden Merge-Buffer abgespeichert (erster Zyklus).
-
Daraufhin
wird – falls
ermittelt wird, dass der nächste
Zugriff durch die Mikrocontroller-Einheit 7 einen anderen
Memory Tower 4a, 4b, 4c, 4d betrifft,
als der letzte (d.h. der o.g. 8-Bit-Store-Befehl), oder falls als
nächstes
ein IDLE-Zustand eintritt, oder der nächste Befehl kein Load- und
kein Store-Befehl ist (bzw. kein Befehl vom Typ Load oder Store) – das o.g.
geänderte
Daten-Wort 18 (d.h. die in 4 gezeigten
Bits 12a, 12b, 12c, 12d, 12e, 12f, 12g, 12h, gefolgt
von den Bits 14a, 14b, 14c, 14d, 14e, 14f, 14g, 14h (Fall
A), bzw. die in 4 gezeigten Bits 15a, 15b, 15c, 15d, 15e, 15f, 15g, 15h,
gefolgt von den Bits 13a, 13b, 13c, 13d, 13e, 13f, 13g, 13h (Fall B))
an der dem – alten – Daten-Wort 16 zugeordneten Adresse
im entsprechenden Memory Tower 4a, 4b, 4c, 4d der
Speicher-Einrichtung 4 abgespeichert; zusätzlich hierzu
erfolgt auch – unter
Zuordnung zum geänderten
Daten-Wort 18 – eine
Abspeicherung der o.g., neu berechneten, korrespondierenden Prüf-Daten
(hier: der o.g. neu berechneten 6 SECDED-Code-Prüf-Daten-Bits) im entsprechenden
Memory Tower 4a, 4b, 4c, 4d der
Speicher-Einrichtung 4 (zweiter
Zyklus).
-
Wird
stattdessen ermittelt, dass beim auf den o.g. (Schreib-) Zugriff
(d.h. dem o.g. 8-Bit-Store-Befehl) unmittelbar folgenden (Schreib-)Zugriff
Speicher-Stellen angesprochen werden, die – innerhalb des entsprechenden
16-Bit-Daten-Worts,
wie beim o.g. 8-Bit-Store-Befehl – den durch den o.g. 8-Bit-Store-Befehl
spezifizierten Speicher-Stellen unmittelbar vorhergehenden (Fall
A) oder unmittelbar nachfolgenden (Fall B) Speicher-Stellen entsprechen (d.h.
falls auf den o.g. 8-Bit-Store-Befehl ein weiterer, unmittelbar
vorhergehende oder nachfolgende Speicher-Stellen betreffender 8-Bit-Store-Befehl
folgt), wird wie folgt vorgegangen (vgl. 4, „Schritt
3"):
Zu den
wie erläutert
durch den vorausgehenden 8-Bit-Store-Befehl im jeweiligen Merge Buffer abgespeicherten
8 Bits 14a, 14b, 14c, 14d, 14e, 14f, 14g, 14h (Fall
A) bzw. 15a, 15b, 15c, 15d, 15e, 15f, 15g, 15h (Fall
B) (d.h. zu den 8 letzten Bits (Fall A), oder 8 ersten Bits (Fall
B) des o.g., geänderten
Daten-Worts 18) werden die entsprechenden, durch den o.g.
neuen 8-Bit-Store-Befehl spezifizierten, von der Mikrocontroller-Einheit 7 über das
Bus-System 3 übermittelten
8 Bits hinzugefügt
(d.h. die 8 Bits 21a, 21b, 21c, 21d, 21e, 21f, 21g, 21h vorhergehend
zu den 8 Bits 14a, 14b, 14c, 14d, 14e, 14f, 14g, 14h im entsprechenden
Merge-Buffer abgespeichert (Fall A), bzw. die 8 Bits 22a, 22b, 22c, 22d, 22e, 22f, 22g, 22h nachfolgend
auf die o.g. 8 Bits 15a, 15b, 15c, 15d, 15e, 15f, 15g,
15h im entsprechenden Merge-Buffer abgespeichert (Fall B)).
-
Für das so
erzeugte, erneut geänderte
Daten-Wort 19 werden entsprechend wie oben erläutert erneut
(insbesondere z.B. jeweils durch den Mikrocontroller bzw. -prozessor
7 selbst, und/oder durch die Speicher-Steuer-Einrichtung 17,
und/oder durch den jeweiligen Merge Buffer 5a, 5b, 5c, 5d)
das oder die korrespondierenden Prüf-Daten (hier z.B.: die entsprechenden
6 SECDED-Code-Prüf-Daten-Bits) berechnet,
und – unter
Zuordnung zum o.g. geänderten
Daten-Wort 18 – im
entsprechenden Merge-Buffer abgespeichert.
-
Des
weiteren wird das o.g., erneut geänderte Daten-Wort 19 (d.h.
die in 4 gezeigten Bits 21a, 21b, 21c, 21d, 21e, 21f, 21g, 21h,
gefolgt von den Bits 14a, 14b, 14c, 14d, 14e, 14f, 14g, 14h (Fall
A), bzw. die in 4 gezeigten Bits 15a, 15b, 15c, 15d, 15e, 15f, 15g, 15h,
gefolgt von den Bits 22a, 22b, 22c, 22d, 22e, 22f, 22g, 22h (Fall
B)) an der dem – alten – Daten-Wort 16 zugeordneten
Adresse im entsprechenden Memory Tower 4a, 4b, 4c, 4d der
Speicher-Einrichtung 4 abgespeichert; zusätzlich hierzu erfolgt
auch – unter
Zuordnung zum o.g. erneut geänderten
Daten-Wort 19 – eine
Abspeicherung der o.g., erneut berechneten, korrespondierenden Prüf-Daten (hier:
der o.g. erneut berechneten 6 SECDED-Code-Prüf-Daten-Bits) im entsprechenden
Memory Tower 4a, 4b, 4c, 4d der
Speicher-Einrichtung 4 (alternativer, zweiter Zyklus).
-
Da
der oben geschilderte Fall relativ häufig auftritt, kann beim Mikrocontroller-
bzw. Mikropozessor-System 1 mit der oben beschriebenen
Vorgehensweise in der Regel ein Zyklusverlust verhindert werden;
zusätzlich
kann für
die o.g. Zugriffe die Anzahl an benötigten SECDED-Code-Prüf-Daten-Bits minimiert
werden (da statt zweier verschiedener – eigentlich insgesamt 5 × 2 = 10
SECDED-Code-Prüfbits
benötigender
8-Bit-Store-Befehle – entsprechende
lediglich jeweils 6 SECDED-Code-Prüfbits benötigende
16-Bit-Zugriffe ausgeführt
werden (vgl. auch die in 1 dargestellte Tabelle, bzw.
den in 2 dargestellten Graphen)).
-
Wird
ermittelt, dass der auf den o.g. (Schreib-)Zugriff (d.h. den o.g.
8-Bit-Store-Befehl) unmittelbar folgende Zugriff ein Lese-Zugriff
ist, mit dem entsprechende Speicher-Stellen angesprochen werden,
wie mit dem o.g. 8-Bit-Store-Befehl (z.B. ein entsprechender 8-
oder 16-Bit-Load-Befehl), werden die entsprechenden Daten direkt
aus dem Merge Buffer (und nicht – nochmals – aus der Speicher-Einrichtung 4)
ausgelesen, und an die Mikrocontroller-Einheit 7 weitergeleitet
(alternativ können
die Daten – nochmals – aus der
Speicher-Einrichtung 4 ausgelesen, und – da die entsprechenden Daten
nicht mehr aktuell sind – gleich
wieder verworfen werden)).
-
Erst
dann (d.h. einen Zyklus später)
wird das im entsprechenden Merge Buffer gespeicherte Daten-Wort 18 (d.h.
die in 4 gezeigten Bits 11a, 12b, 12c, 12d, 12e, 12f, 12g, 12h,
gefolgt von den Bits 14a, 14b, 14c, 14d, 14e, 14f, 14g, 14h (Fall
A), bzw. die in 4 gezeigten Bits 15a, 15b, 15c, 15d, 15e, 15f, 15g, 15h,
gefolgt von den Bits 13a, 13b, 13c, 13d, 13e, 13f, 13g, 13h (Fall
B)) an der dem – alten – Daten-Wort 16 zugeordneten
Adresse im entsprechenden Memory Tower 4a, 4b, 4c, 4d der
Speicher-Einrichtung 4 abgespeichert; zusätzlich hierzu erfolgt
wiederum – unter
Zuordnung zum o.g. Daten-Wort 18 – eine Abspeicherung der o.g.,
korrespondierenden Prüf-Daten
(hier: der o.g. erneut berechneten 6 SECDED-Code-Prüf-Daten-Bits)
im entsprechenden Memory Tower 4a, 4b, 4c, 4d der
Speicher-Einrichtung 4.
-
Falls
ermittelt wird, dass der auf den o.g. (Schreib-)Zugriff (d.h. den
o.g. 8-Bit-Store-Befehl) unmittelbar folgende Zugriff ein Lese-Zugriff
(z.B. ein entsprechender 8- oder 16-Bit-Load-Befehl) ist, mit dem andere
Speicher-Stellen angesprochen werden, wie mit dem o.g. 8-Bit-Store-Befehl,
jedoch im gleichen Memory Tower 4a, 4b, 4c, 4d liegende
Speicher-Stellen, werden zunächst
die entsprechenden Daten aus der Speicher-Einrichtung 4 ausgelesen, und
an die Mikrocontroller-Einheit 7 weitergeleitet, und erst
dann das im entsprechenden Merge Buffer gespeicherte, geänderte Daten-Wort 18 (d.h.
die in 4 gezeigten Bits 12a, 12b, 12c, 12d, 12e, 12f, 12g, 12h,
gefolgt von den Bits 14a, 14b, 14c, 14d, 14e, 14f, 14g, 14h (Fall
A), bzw. die in 4 gezeigten Bits 15a, 15b, 15c, 15d, 15e, 15f, 15g, 15h,
gefolgt von den Bits 13a, 13b, 13c, 13d, 13e, 13f, 13g, 13h (Fall
B)) an der dem – alten – Daten-Wort 16 zugeordneten
Adresse im entsprechenden Memory Tower 4a, 4b, 4c, 4d der
Speicher-Einrichtung 4 abgespeichert.
-
Das
Rückschreiben
des geänderten
Daten-Worts in die Speicher-Einrichtung 4 verschiebt sich
somit um einen Zyklus nach hinten.
-
Zusätzlich hierzu
erfolgt wiederum (entsprechend wie oben beschrieben) – unter
Zuordnung zum geänderten
Daten-Wort 18 – eine
Abspeicherung der o.g., neu berechneten, korrespondierenden Prüf-Daten
(hier: der o.g. neu berechneten 6 SECDED-Code-Prüf-Daten-Bits) im entsprechenden
Memory Tower 4a, 4b, 4c, 4d der
Speicher-Einrichtung 4.
-
Wird
ermittelt, dass beim auf den o.g. (Schreib-) Zugriff (d.h. dem o.g.
8-Bit-Store-Befehl) unmittelbar folgenden (Schreib-)Zugriff identische Speicher-Stellen
angesprochen werden, wie mit dem 8-Bit-Store-Befehl (d.h. falls
auf den o.g. 8-Bit-Store-Befehl ein entsprechende Speicher-Stellen
ansprechender, weiterer 8-Bit-Store-Befehl folgt), wird wie folgt
vorgegangen:
Die wie oben erläutert, und wie in 4 dargestellt durch
den vorausgehenden 8-Bit-Store-Befehl im jeweiligen Merge Buffer
abgespeicherten 8 Bits 14a, 14b, 14c, 14d, 14e, 14f, 14g, 14h (Fall
A) bzw. 15a, 15b, 15c, 15d, 15e, 15f, 15g, 15h (Fall
B) (d.h. die 8 letzten Bits (Fall A), oder 8 ersten Bits (Fall B)
des o.g., geänderten
Daten-Worts 18) werden durch die entsprechenden, durch
den o.g. weiteren 8-Bit-Store-Befehl
spezifizierten, von der Mikrocontroller-Einheit 7 über das
Bus-System 3 übermittelten 8
Bits ersetzt.
-
Für das so
erzeugte, erneut geänderte
Daten-Wort werden entsprechend wie oben erläutert erneut (insbesondere
z.B. jeweils durch den Mikrocontroller bzw. -prozessor 7 selbst,
und/oder durch die Speicher-Steuer-Einrichtung 17, und/oder durch
den jeweiligen Merge Buffer 5a, 5b, 5c, 5d)
das oder die korrespondierenden Prüf-Daten (hier z.B.: die entsprechenden
6 SECDED-Code-Prüf-Daten-Bits)
berechnet, und – unter
Zuordnung zum o.g. geänderten Daten-Wort – im entsprechenden
Merge-Buffer abgespeichert.
-
Des
weiteren wird das o.g., erneut geänderte Daten-Wort an der dem – alten – Daten-Wort 16 zugeordneten
Adresse im entsprechenden Memory Tower 4a, 4b, 4c, 4d der
Speicher-Einrichtung 4 abgespeichert;
zusätzlich
hierzu erfolgt auch – unter
Zuordnung zum o.g. erneut geänderten
Daten-Wort – eine
Abspeicherung der o.g., erneut berechneten, korrespondierenden Prüf-Daten
(hier: der o.g. erneut berechneten 6 SECDED-Code-Prüf-Daten-Bits)
im entsprechenden Memory Tower 4a, 4b, 4c, 4d der Speicher-Einrichtung 4 (weiterer
alternativer, zweiter Zyklus).
-
Wird
ermittelt, dass der auf den o.g. (Schreib-) Zugriff (d.h. dem o.g.
8-Bit-Store-Befehl) unmittelbar folgende Zugriff ein Schreib-Zugriff
(z.B. ein – weiterer – 8-Bit-,
oder ein 16-Bit-Store-Befehl) ist, mit dem Speicher-Stellen angesprochen
werden, die den gleichen Memory Tower betreffen, wie der 8-Bit-Store-Befehl,
jedoch ein anderes bzw. unterschiedliches Daten-Wort, als beim vorausgehenden 8-Bit-Store-Befehl – was relativ
selten vorkommt -, wird wie folgt vorgegangen:
Das im Merge
Buffer abgespeicherte Daten-Wort 18 (d.h. die wie in 4 dargestellt
durch den vorausgehenden 8-Bit-Store-Befehl
im jeweiligen Merge Buffer abgespeicherten 8 Bits 14a, 14b, 14c, 14d, 14e, 14f, 14g, 14h (Fall
A) bzw. 15a, 15b, 15c, 15d, 15e, 15f, 15g, 15h (Fall
B) (d.h. die 8 letzten Bits (Fall A), oder 8 ersten Bits (Fall B),
und die vom o.g. 16-Bit-Read-Modify-Write-Befehl beibehaltenen 8 Bits 12a, 12b, 12c, 12d, 12e, 12f, 12g, 12h (Fall
A) bzw. 13a, 13b, 13c, 13d, 13e, 13f, 13g, 13h (Fall
B))) wird bzw. werden an der dem – alten – Daten-Wort 16 zugeordneten
Adresse im entsprechenden Memory Tower 4a, 4b, 4c, 4d der
Speicher-Einrichtung 4 abgespeichert.
-
Zusätzlich hierzu
erfolgt auch – unter
Zuordnung zum o.g. geänderten
Daten-Wort 18 – eine
Abspeicherung der o.g. neu berechneten, korrespondierenden Prüf-Daten
(hier: der o.g. neu berechneten 6 SECDED-Code-Prüf-Daten-Bits) im entsprechenden Memory
Tower 4a, 4b, 4c, 4d der Speicher-Einrichtung 4.
-
Da
der entsprechende Merge Buffer mit dem Schreiben des o.g. Daten-Worts 18 in
die Speicher-Einrichtung 4 beschäftigt ist, kann er auf den o.g. – weiteren – 8-Bit-
oder den o.g. 16-Bit-Store-Befehl
der Mikrocontroller-Einheit 7 zunächst nicht reagieren.
-
Erst
wenn der entsprechende Merge Buffer den Schreib-Vorgang abgeschlossen
hat, kann er auf die Anfrage der Mikrocontroller-Einheit 7 reagieren. Entsprechend
wie oben beschrieben wird dann wie folgt vorgegangen:
Der entsprechende
Befehl (z.B. der o.g. weitere 8-Bit-Store-Befehl) wird – z.B. von der Mikrocontroller-Einheit 7,
der Speicher-Steuer-Einrichtung 17, oder dem jeweiligen
Merge Buffer 5a, 5b, 5c, 5d – in einen
entsprechenden 16-Bit-Read-Modify-Write-Befehl
umgewandelt (d.h. in einen 16-Bit-Read-Modify-Write-Befehl, mit welchem eine
entsprechende Stelle in der Speicher-Einrichtung 4 angesprochen wird,
wie durch den weiteren 8-Bit-Store-Befehl (wobei die durch die Befehle
angesprochene Speicher-Stelle über
die über
den Adress-Bus 3c übertragene
Adresse definiert wird)).
-
Mit
andere Worten wird also wiederum statt des o.g. Schreib-Zugriffs ein entsprechender
Lese-Modifizier-Schreib-Zugriff durchgeführt.
-
Dabei
werden – wie
aus 4, oben („Schritt 1") hervorgeht – abhängig von
der durch den weiteren 8-Bit-Store-Befehl angesprochenen Adress-Stelle
entweder (zusätzlich
zu den an den durch den 8-Bit-Store-Befehl angesprochenen Speicher-Stellen abgespeicherten
Daten) auch Daten aus der Speicher-Einrichtung 4 ausgelesen, die
an den 8 vorhergehenden (siehe 4, Fall
A, oben), oder 8 nachfolgenden (siehe 4, Fall
B, oben) Speicher-Stellen der Speicher-Einrichtung abgespeichert
sind (Bits 12a, 12b, 12c, 12d, 12e, 12f, 12g, 12h,
bzw. Bits 13a, 13b, 13c, 13d, 13e, 13f, 13g, 13h) – mit anderen Worten
wird also wiederum jeweils das entsprechende, vollständige (16-Bit)
Daten-Wort 16 aus der Speicher-Einrichtung 4 bzw. dem entsprechenden
Memory Tower 4a, 4b, 4c, 4d ausgelesen,
bzw. dasjenige (16-Bit) Daten-Wort 16, welches Daten an
einer Adress-Stelle enthält,
die der für
den weiteren 8-Bit-Store-Befehl angegebenen Adresse entspricht.
-
Die
ausgelesenen Daten (d.h. das entsprechende, vollständige Daten-Wort)
werden im entsprechenden, dem jeweiligen Memory Tower 4a, 4b, 4c, 4d zugeordneten
Merge Buffer 5a, 5b, 5c, 5d zwischengespeichert,
und dort mit den o.g. für
den o.g. weiteren 8-Bit-Store-Befehl von der Mikrocontroller-Einheit 7 über das
Bus-System 3 übermittelten,
in der Speicher-Einrichtung 4 abzuspeichernden Nutz-Daten
zusammengeführt.
-
Dabei
werden – wie
aus 4, „Schritt
2" hervorgeht – zu den
o.g. durch den 16-Bit-Read-Modify-Write-Befehl im Vergleich zu dem
korrespondierenden 8-Bit-Store-Befehl zusätzlich spezifizierten 8 Bits 12a, 12b, 12c, 12d, 12e, 12f, 12g, 12h,
bzw. 8 Bits 13a, 13b, 13c, 13d, 13e, 13f, 13g, 13h (d.h.
zu den 8 ersten Bits (Fall A), oder 8 letzten Bits (Fall B) des
o.g. Daten-Worts) die entsprechenden, durch den o.g. 8-Bit-Store-Befehl
spezifizierten, von der Mikrocontroller-Einheit 7 über das
Bus-System 3 übermittelten
8 Bits hinzugefügt
(d.h. die 8 Bits 14a, 14b, 14c, 14d, 14e, 14f, 14g, 14h nachfolgend
auf die o.g. 8 Bits 12a, 12b, 12c, 12d, 12e, 12f, 12g, 12h im
entsprechenden Merge-Buffer abgespeichert (Fall A), bzw. die 8 Bits 15a, 15b, 15c, 15d, 15e, 15f, 15g, 15h vorhergehend
zu den o.g. 8 Bits 13a, 13b, 13c, 13d, 13e, 13f, 13g, 13h im
entsprechenden Merge-Buffer abgespeichert (Fall B)).
-
Für das so
erzeugte, geänderte
Daten-Wort 18 werden entsprechend wie oben erläutert (insbesondere
z.B. jeweils durch den Mikrocontroller bzw. -prozessor 7 selbst,
und/oder durch die Speicher-Steuer-Einrichtung 17, und/oder
durch den jeweiligen Merge Buffer 5a, 5b, 5c, 5d)
das oder die korrespondierenden Prüf-Daten (hier z.B.: die entsprechenden
6 SECDED-Code-Prüf-Daten-Bits)
berechnet, und – unter
Zuordnung zum o.g. geänderten Daten-Wort 18 – ebenfalls
im entsprechenden Merge-Buffer abgespeichert.
-
Daraufhin
wird – falls
die oben erläuterten Bedingungen
vorliegen (IDLE-Zustand, nächster
Befehl kein vom Typ Load oder Store) – das o.g. geänderte Daten-Wort 18 (d.h.
die in 4 gezeigten Bits 12a, 12b, 12c, 12d, 12e, 12f, 12g, 12h,
gefolgt von den Bits 14a, 14b, 14c, 14d, 14e, 14f, 14g, 14h (Fall A),
bzw. die in 4 gezeigten Bits 15a, 15b, 15c, 15d, 15e, 15f, 15g, 15h,
gefolgt von den Bits 13a, 13b, 13c, 13d, 13e, 13f, 13g, 13h (Fall
B)) an der dem – alten – Daten-Wort
zugeordneten Adresse im entsprechenden Memory Tower 4a, 4b, 4c, 4d der Speicher-Einrichtung 4 abgespeichert;
zusätzlich hierzu
erfolgt auch – unter
Zuordnung zum geänderten
Daten-Wort 18 – eine
Abspeicherung der o.g., neu berechneten, korrespondierenden Prüf-Daten (hier:
der o.g. neu berechneten 6 SECDED-Code-Prüf-Daten-Bits) im entsprechenden Memory Tower 4a, 4b, 4c, 4d der
Speicher-Einrichtung 4.
-
Folgt
auf den o.g. vorausgehenden 8-Bit-Store-Befehl statt dem o.g. weiteren 8-Bit-Store-Befehl
der o.g. 16-Bit-Store-Befehl,
werden die entsprechenden, dem Befehl zugeordneten Daten – wie herkömmlich,
und ohne Zwischenspeicherung im entsprechenden Merge Buffer 5a, 5b, 5c, 5d – zusammen
mit den entsprechenden (wie oben erläutert berechneten) Prüf-Daten
an der durch die über
den Adress-Bus 3c übertragenen
Adresse definierten Stelle in der Speicher-Einrichtung 4 abgespeichert.
-
Wird – wie oben
bereits erläutert – ermittelt, dass
der auf den o.g. (Schreib-) Zugriff (d.h. dem o.g. 8-Bit-Store-Befehl) unmittelbar
folgende Zugriff ein Schreib-Zugriff (insbesondere z.B. ein 16-Bit-Store-Befehl)
ist, mit dem Speicher-Stellen angesprochen werden, die den gleichen
Memory Tower betreffen, wie der 8-Bit-Store-Befehl, jedoch ein anderes
bzw. unterschiedliches Daten-Wort, als beim vorausgehenden 8-Bit-Store-Befehl – was relativ
selten vorkommt –,
kann alternativ zu den Erläuterungen oben
auch wie folgt vorgegangen werden:
Das dem 16-Bit-Store-Befehl
zugeordnete Daten-Wort wird unmittelbar an der entsprechenden Speicher-Stelle
in der Speicher-Einrichtung 4 abgespeichert (zusammen mit
entsprechend wie oben erläutert
berechneten, korrespondierenden Prüf-Daten (hier z.B.: die entsprechenden
6 SECDED-Code-Prüf-Daten-Bits).
-
Währenddessen
bleibt der Merge Buffer (vorübergehend)
in einem Warte-Zustand.
-
Erst
wenn der o.g. Schreib-Vorgang des (neuen, dem 16-Bit-Store-Befehl zugeordneten)
Daten-Worts beendet ist, wird das im Merge Buffer abgespeicherte
Daten-Wort 18 (d.h. die wie in 4 dargestellt
durch den vorausgehenden 8-Bit-Store-Befehl im jeweiligen Merge Buffer abgespeicherten
8 Bits 14a, 14b, 14c, 14d, 14e, 14f, 14g, 14h (Fall
A) bzw. 15a, 15b, 15c, 15d, 15e, 15f, 15g, 15h (Fall
B) (d.h. die 8 letzten Bits (Fall A), oder 8 ersten Bits (Fall B)),
und die vom o.g. 16-Bit-Read-Modify-Write-Befehl beibehaltenen 8
Bits 12a, 12b, 12c, 12d, 12e, 12f, 12g, 12h (Fall
A) bzw. 13a, 13b, 13c, 13d, 13e, 13f, 13g, 13h (Fall
B)) an der dem – alten – Daten-Wort 16 zugeordneten
Adresse im entsprechenden Memory Tower 4a, 4b, 4c, 4d der
Speicher-Einrichtung 4 abgespeichert.
-
Zusätzlich hierzu
erfolgt wiederum – unter Zuordnung
zum o.g. geänderten
Daten-Wort – eine Abspeicherung
der o.g. neu berechneten, korrespondierenden Prüf-Daten (hier: der o.g. neu
berechneten 6 SECDED-Code-Prüf-Daten-Bits)
im entsprechenden Memory Tower 4a, 4b, 4c, 4d der
Speicher-Einrichtung 4.
-
- 1
- Mikrocontroller-
bzw. Mikropozessor-System
- 2a
- CPU
Core
- 2b
- CPU
Core
- 3
- Bus-System
- 3a
- Daten-Bus
- 3b
- Steuer-Bus
- 3c
- Adress-Bus
- 4
- Speicher-Einrichtung
- 4a
- Memory
Tower
- 4b
- Memory
Tower
- 4c
- Memory
Tower
- 4d
- Memory
Tower
- 5a
- Merge
Buffer
- 5b
- Merge
Buffer
- 5c
- Merge
Buffer
- 5d
- Merge
Buffer
- 7
- Mikrocontroller-Einheit
- 12a
- Bit
- 12b
- Bit
- 12c
- Bit
- 12d
- Bit
- 12e
- Bit
- 12f
- Bit
- 12g
- Bit
- 12h
- Bit
- 13a
- Bit
- 13b
- Bit
- 13c
- Bit
- 13d
- Bit
- 13e
- Bit
- 13f
- Bit
- 13g
- Bit
- 13h
- Bit
- 14a
- Bit
- 14b
- Bit
- 14c
- Bit
- 14d
- Bit
- 14e
- Bit
- 14f
- Bit
- 14g
- Bit
- 14h
- Bit
- 15a
- Bit
- 15b
- Bit
- 15c
- Bit
- 15d
- Bit
- 15e
- Bit
- 15f
- Bit
- 15g
- Bit
- 15h
- Bit
- 16
- Daten-Wort
- 17
- Speicher-Steuer-Einrichtung
- 18
- geändertes
Daten-Wort
- 19
- erneut
geändertes
Daten-Wort
- 21a
- Bit
- 21b
- Bit
- 21c
- Bit
- 21d
- Bit
- 21e
- Bit
- 21f
- Bit
- 21g
- Bit
- 21h
- Bit
- 22a
- Bit
- 22b
- Bit
- 22c
- Bit
- 22d
- Bit
- 22e
- Bit
- 22f
- Bit
- 22g
- Bit
- 22h
- Bit