DE3442823C2 - - Google Patents
Info
- Publication number
- DE3442823C2 DE3442823C2 DE3442823A DE3442823A DE3442823C2 DE 3442823 C2 DE3442823 C2 DE 3442823C2 DE 3442823 A DE3442823 A DE 3442823A DE 3442823 A DE3442823 A DE 3442823A DE 3442823 C2 DE3442823 C2 DE 3442823C2
- Authority
- DE
- Germany
- Prior art keywords
- data
- block
- memory
- subunits
- control
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
Die Erfindung betrifft ein Verfahren und eine Anordnung zur Steuerung
der Übertragung von Daten
entsprechend dem Oberbegriff des Patentanspruches 1.
Derartige Verfahren sind z. B. aus Computing
Surveys, Vol. 14, Nr. 3, September 1982, Seiten 473
bis 530, insbesondere Seite 501, linke Spalte oben oder
aber aus IBM Technical Disclosure Bulletin, Vol. 25,
No. 11 B, April 1983, Seiten 6177/6178 für nach dem
"copy-back"-Prinzip arbeitende Cache-Speicher bekannt.
Die Verwendung mehrerer, jeweils die Änderung einer Untereinheit
innerhalb eines Datenblocks markierender Steuerbits
soll dabei sicherstellen, daß jeweils die geänderten
Untereinheiten, z. B. entsprechend der von einem normalen
Speicherbefehl erfaßten Datenbreite, meistens also
Doppelwörter, anstelle des gesamten Datenblocks in den
Arbeitsspeicher übertragen werden. Das ist besonders von
Vorteil, wenn der Datenumfang je Block sehr groß ist und
daher der Umfang des Datenaustausches vom Cache-Speicher
zum Arbeitsspeicher beträchtlich verringert werden kann,
insbesondere wenn die Anzahl der geänderten Untereinheiten
im Verhältnis zur Gesamtzahl der Untereinheiten
eines Blockes verhältnismäßig klein ist.
Andererseits erfordert gerade das "copy-back"-Verfahren
einen höheren Sicherungsgrad für die Daten im Cache-Speicher,
da zu geänderten Daten im Cache-Speicher keine Kopie
derselben Daten im Arbeitsspeicher vorhanden ist.
Daten in nach dem "copy-back"-Verfahren abeitenden
Cache-Speichern werden daher in der Regel durch einen
fehlerkorrigierenden Code geschützt - man siehe die
zuerst genannte Literaturstelle, Seite 501, Abschn. 6 -,
um eine ausreichende Funktionsfähigkeit zu gewährleisten.
Dabei hängt der Aufwand für die Sicherung gegen Speicherfehler
und für die Korrektur in erheblichem Maße
davon ab, wie störanfällig die verwandten Speicherbausteine,
meistens in Form von RAM, sind und ob daher
neben Einzelfehlern auch Doppelfehler oder gar Dreifachfehler
zu erkennen und zu korrigieren sind, um eine
ausreichende Funktionssicherheit des Pufferspeichers
sicherzustellen. So sind z. B. für Blöcke mit
je 32 Bytes zu je acht Bit insgesamt 128 zusätzliche
Prüfbits zur Korrektur von Einzelfehlern auf Byteebene
erforderlich, was 50% mehr Speicheraufwand erfordert,
wodurch sich in erheblichem Maße zusätzliche Fehlerquellen
eröffnen und sich wegen der größeren Verbindungsentfernungen
größere Laufzeiten ergeben.
Würde man nun unabhängig vom Gesichtspunkt, den Umfang
des Datentransfers zwischen Pufferspeicher und Arbeitsspeicher
möglichst klein zu halten, allgemein in Verbindung
mit den eine Änderung anzeigenden Steuerbits
jeweils nur die Untereinheiten übertragen, bei denen
eine Änderung erfolgt ist, so würden fehlerbehaftete,
nicht geänderte Untereinheiten die Steuerung gar nicht
erst belasten und die Funktionsfähigkeit der Datenverarbeitungsanlage
nicht beeinträchtigen, da gültige Kopien
dieser Untereinheiten sowieso im Arbeitsspeicher vorhanden
sind. Insbesondere würden nicht korrigierbare und
damit zum Programmabbruch führende Fehler bei ungeänderten
Untereinheiten ohne Auswirkung bleiben, so daß die
Verfügbarkeit und damit die Leistungsfähigkeit der
Datenverarbeitungsanlage gesteigert würde.
Andererseits erfordert die Übertragung von Dateneinheiten
eines Blocks einzeln nacheinander mit individuellen
Steuerbefehlen wesentlich mehr Aufwand gegenüber der
Übertragung jeweils eines ganzen Blocks mit nur einem
Steuerbefehl, insbesondere an Zeit, so daß der Vorteil
der geringeren Belastung des Speicherübertragungsweges
wenigstens teilweise durch eine Verringerung der Leistungsfähigkeit
der Datenverarbeitungsanlage wieder
aufgehoben wird.
Es ist daher Aufgabe der Erfindung, ausgehend von den
eingangs genannten Verfahren und Anordnungen diese so
zu gestalten, daß bei geringem Aufwand die durchschnittliche
Leistungsfähigkeit der Datenverarbeitungsanlage
gesteigert wird.
Diese Aufgabe wird gemäß der Erfindung durch die kennzeichnenden
Merkmale des Patentanspruches 1 gelöst.
Ausgehend von der Bildung der Untereinheiten eines Datenblocks
zunächst unabhängig von der Übertragungsbreite
auf dem Übertragungsleitungssystem allein unter dem
Gesichtspunkt, daß kleinere Untereinheiten, z. B.
in Form von Bytes, mit individueller Fehlerüberwachungsmöglichkeit,
die Wahrscheinlichkeit einer Funktionsbeeinträchtigung
durch Speicherfehler verringern
und daß sich Speicherfehler umso weniger auswirken können,
je stärker der Auswirkungsbereich eingegrenzt ist,
insbesondere wenn nur Teile eines Blockes geändert werden
wird unter dem Gesichtspunkt, daß
Speicherfehler meistens sporadisch auftreten, in den
überwiegenden Fällen der Blockübertragungsmechanismus
beibehalten, so daß insbesondere bei kleinen Blöcken
mit zum Beispiel 32 Bytes die Übertragung in den Arbeitsspeicher
mit dem geringstmöglichen Aufwand und
bei nur verhältnismäßig geringer Belastung des Speicherübertragungsweges
in im Durchschnitt kürzerer Zeit
ausgeführt werden kann. Lediglich im Fehlerfall wird
gegebenenfalls von der Blockübertragungssteuerung abgewichen
und anhand der Steuerbits eine Auswahl der zu
übertragenden Einheiten getroffen.
Damit erhöht sich zugleich die Wahrscheinlichkeit, daß
nicht geänderte fehlerhafte Daten mit nicht korrigierbaren
Fehlern ausgeschieden werden, ohne daß in gleichem
Maße die Verfügbarkeit wegen Fehlens einer entsprechenden
Fehlerkorrekturmöglichkeit eingeschränkt wird. Die
Fehlertoleranz erhöht sich also bei nur geringem zusätzlichem
Aufwand für die Änderungsbits.
Insgesamt führt das bei geringerem Aufwand zu einer
durchschnittlichen Steigerung der Leistungsfähigkeit
infolge der im Vergleich zur vorgegebenen Korrekturmöglichkeit
verbesserten Verfügbarkeit und infolge der
durchschnittlich kürzeren Übertragungszeiten.
Lösungsvarianten für den Verfahrensablauf ergeben sich
aus den Ansprüchen 2 bis 5, wobei insbesondere die Weiterbildung
der Erfindung nach Anspruch 5 mit Lesen und
Zwischenspeicherung des auszuspeichernden Datenblocks als
Einheit und mit im Fehlerfall sofortigen Überleitung in
eine Einzelbefehlssteuerung die Möglichkeit einräumt,
daß der freigemachte Pufferspeicherbereich sofort wieder
belegt und vordringliche Speicherzyklen für andere
Speicheranfragen eingeschoben werden können.
Außerdem sieht eine andere Weiterbildung gemäß den
Patentansprüchen 6 und 7 der Erfindung vor, daß auch fehlerhafte
geänderte Daten in den Arbeitsspeicher ausgelagert
werden können, ohne daß eine Speicherfehlermeldung
von diesem ausgelöst wird. Ein Prgrammabbruch wird
dann nur erforderlich, wenn auf diese fehlerhaften Daten
im Arbeitsspeicher zurückgegriffen werden muß. Vielfach
aber handelt es sich dabei nur um Zwischenergebnisse,
die im späteren Programmablauf gar nicht mehr benötigt
werden, so daß auch auf diese Weise unnötige Programmabbrüche
vermieden werden.
Entsprechende Anordnungen zur Durchführung der einzelnen
Verfahren ergeben sich aus den Ansprüchen 8 bis 12.
Einzelheiten der Erfindung seien nachfolgend anhand
in der der Zeichnung dargestellter Ausführungsbeispiele
näher erläutert. Im einzelnen zeigt
Fig. 1 ein Blockschaltbild eines Cache-Speichers mit
einer gemäß der Erfindung erweiterten Steuereinrichtung,
Fig. 2 ein Blockschaltbild der zusätzlichen Einrichtungen
gemäß der Erfindung mit mehreren Ausführungsvarianten,
Fig. 3 ein Ablaufdiagramm zur Erläuterung der Arbeitsweise
der erweiterten Steuereinrichtung entsprechend
der einen erfindungsgemäßen Varianten und
Fig. 4 ein weiteres Ablaufdiagramm zur Erläuterung einer
weiteren erfindungsgemäßen Verfahrensvarianten.
Das Blockschaltbild von Fig. 1 zeigt die wesentlichen
Teile eines Cache-Speichers C-SP mit den Übertragungsleitungssystemen
zum Arbeitsspeicher ASP und zur Prozessoreinheit
CPU einer Datenverarbeitungsanlage.
Der Cache-Speicher C-SP gliedert sich in drei Teile,
nämlich einen Teil AD-SP für die Adressen TAG, einen
Teil ST-SP für die Steuerbits und einen Teil DAT-SP
für die eigentlichen Daten, wobei die jeweils in einer
Zeile liegenden Teile aller drei Speicherteile jeweils
einen Eintrag bilden, der mit der Adresse AD 1 über die
Schreib-/Lesesteuerung S/L-ST auswählbar ist.
Der Speicherteil DAT-SP hat beispielsweise eine Breite
von jeweils n Doppelwörtern DW 1 bis DWn, die zusammen
einen Block bilden, wobei z. B. jedes Doppelwort DW aus
zwei Einzelwörtern mit je zwei Bytes zu je acht Datenbits
besteht. Jedes Byte ist beispielsweise mit einem
Paritätsbit gesichert. Die Übertragungsbreite auf den
Leitungssystemen entspricht dagegen z. B. einem
Doppelwort DW, so daß zur Übertragung eines Blockes n
Doppelwörter nacheinander zu übertragen sind, die durch
die speicherinterne Auswahlsteuerung SAW nacheinander
abhängig von der Einstelladresse AD DW-E in die richtigen
Speicherbereiche geleitet und aus diesen mit dem
Multiplexer MUX 2 nacheinander abhängig von der Einstelladresse
AD DW-A weitergeleitet werden. Der weitere
Multiplexer MUX-E dient in an sich bekannter Weise
zur Auswahl der Datenübertragungswege für die Eingabe
durch die Prozessoreinheit CPU bzw. durch den Arbeitsspeicher
ASP.
Jedem der angenommenen vier Bytes eines Doppelwortes
im Speicherteil DAT-SP, die die zu überwachenden Untereinheiten
bilden, ist im Speicherteil ST-SP ein Steuerbit
W . . . zugeordnet, das in gesetztem Zustand eine Änderung
des zugehörigen Bytes anzeigt. Bei Blöcken aus je
acht Doppelwörtern entsprechend 32 Bytes sind das insgesamt
32 Bits, nämlich W 1 bis W 32. Zusätzlich ist in
üblicher Weise wenigstens ein Gültigkeitsbit V, das die
Gültigkeit des zugehörigen Eintrags anzeigt, und ein
Sicherungszeichen SI zur Sicherung der Steuerbitinformation
vorgesehen. Ebenso sind die Adressen TAG im
Speicherteil AD-SP durch ein Sicherungszeichen SI gesichert.
Auf die Bildung der Sicherungszeichen und die Ableitung
der Steuerbits sowie die allgemeine Arbeitsweise der
Speichersteuerung SP-ST in Verbindung mit der Einrichtung
H/M zur Prüfung, ob ein gewünschter Eintrag vorliegt,
und mit der Prüfeinrichtung PPE zur Überwachung
der vom Multiplexer MUX 2 ausgewählten gelesenen Dateneinheiten
auf Fehlerfreiheit sei in diesem Zusammenhang
nicht näher eingegangen, da dies für das Verständnis der
Erfindung nicht von Bedeutung ist. Einzelheiten hierzu
sind z. B. aus dem genannten Aufsatz aus
Computing Surveys mit den darin gegebenen Literaturhinweisen
bekannt.
Neu ist jedoch gemäß der Erfindung die Ergänzung der
Speichersteuerung SP-ST durch die zusätzliche Steuereinrichtung
W-ST, die die aus dem Speicherteil ST-SP
gelesenen Steuerbits W 1 bis W 32 in Verbindung mit
den von der Prüfeinrichtung PPE gelieferten Fehlersignalen
für die einzelnen Bytes der aus dem Speicherteil
DAT-SP gelesenen Dateneinheiten DW 1 bis DWn
auswertet und davon abhängig die Übertragung der einzelnen
Dateneinheiten eines Eintrags im Cache-Speicher
C-SP bei der Auslagerung in den Arbeitsspeicher ASP
steuert.
Einzelheiten dieser Steuereinrichtung W-ST im Zusammenwirken
mit der allgemeinen Speichersteuerung SP-ST
zeigt Fig. 2.
Die Steuerbitleitungen für die Steuerbits W 1 bis W 32
eines gelesenen Eintrags im linken oberen Teil der Figur
sind entsprechend den vier Bytes für jede Dateneinheit
DW in Gruppen G 1 bis G 8 zusammengefaßt und werden
durch die ODER-Glieder OR 1 und das nachgeschaltete
ODER-Glied OR 2 auf das Vorliegen einer Änderung der
zugehörigen Datenbytes überwacht. Ist keines der Bits W 1
bis W 32 gesetzt und liegt demzufolge keine Änderung
vor, dann ist bei einer vorzunehmenden Räumung des
zugehörigen Eintrags im Cache-Speicher C-SP keine
Auslagerung in den Arbeitsspeicher ASP erforderlich.
Es genügt, wenn mit dem Signal S.INV das zugehörige
Gültigkeitsbit V im Speicherteil ST-SP auf Null gesetzt
wird und dann die neuen Daten aus dem Arbeitsspeicher
in den zugehörigen Eintrag übertragen werden.
Ist dagegen eines der Bits W 1 bis W 32 gesetzt, dann
müssen die Daten des Eintrags erst in den Arbeitsspeicher
ASP ausgelagert werden, was durch das Signal SWAP
gekennzeichnet wird und damit zur Einleitung eines
Blockübertragungszyklus führt. Zu diesem Zweck liefert
in an sich bekannter Weise ein Zähler CNT-A, gesteuert
durch Taktimpulse T, nacheinander und in Abstimmung mit
dem Übertragungszyklus für jede Dateneinheit DW . . . die
Einstelladresse AD DW-A für den Multiplexer MUX 2. Diese
Einstelladresse steuert gleichzeitig einen weiteren Multiplexer
MUX innerhalb der Steuereinrichtung W-ST, der
jeweils gleichzeitig zu den ausgewählten Dateneinheiten
DW . . . eines Blockes die zugehörige Steuerbitgruppe G . . .
auswählt und auf den Ausgang durchschaltet. Mit den so
jeweils ausgewählten vier Steuerbits, z. B. W 1 bis W 4,
werden die gleichzeitig von der die zugehörige Dateneinheit,
z. B. DW 1, überprüfenden Prüfeinrichtung PPE gelieferten
Fehlersignale PERR 0 bis 3 verknüpft.
Diese Verknüpfung kann entsprechend den möglichen verschiedenen
Lösungsvarianten auf unterschiedliche Weise
durchgeführt werden. Zur Grundausrüstung gehören dabei
die UND-Glieder U 01 bis U 31, die UND-Glieder U 02 bis
U 32 und das ODER-Glied OR 3.
Die UND-Glieder U 01 bis U 31 überwachen jeweils, ob
ein fehlerfreies geändertes Datenbyte als Untereinheit
vorliegt, und liefern das Steuersignal BYTE.SEL . . .,
das mit Signal "1" jeweils das Einschreiben des zugehörigen
Datenbytes in den Arbeitsspeicher freigibt
und mit Signal "0" jeweils die Übernahme in den Arbeitsspeicher
verhindert. Die UND-Glieder U 02 bis U 32
überwachen das Vorliegen einer geänderten, fehlerhaften
Untereinheit, was durch das ODER-Glied OR 3 zum Fehlersignal
(W PERR) führt, das dann in unterschiedlicher
Weise den weiteren Steuerungsablauf beeinflussen
kann, was später im einzelnen noch erläutert wird.
Bei der einfachsten Lösungsvariante ist das rechts vom
Multiplexer MUX gestrichelt gezeichnete zusätzliche
ODER-Glied OR 4 erforderlich, das die Fehlersignale
PERR 0 bis 3 überwacht, ob ein Fehler gemeldet ist,
und mit PERR DW ein Sperrsignal W.INH für den Rest
eines laufenden Blockzyklus auslöst, z. B. durch
Setzen der Kippstufe KS, die am Ende des Zyklus jeweils
wieder zurückgesetzt wird.
Das Sperrsignal W.INH wird zum Arbeitsspeicher ASP in
an sich bekannter Weise weitergeleitet und verhindert
die Übernahme der gleichzeitig angelieferten Dateneinheiten
für den Rest des laufenden Blockzyklus.
Die Ableitung des Sperrsignals W.INH kann zusätzlich
davon abhängig gemacht werden, daß der Fehler kein geändertes
Byte betrifft. Zu diesem Zweck wird der Ausgang
des ODER-Gliedes OR 4 mit dem invertierten Ausgang
des ODER-Gliedes OR 3 durch das UND-Glied U 1 verknüpft,
dessen Ausgang dann mit dem Setzeingang S der
Kippstufe KS verbunden ist. Dies ist besonders dann von
Vorteil, wenn bei fehlerhaften geänderten Untereinheiten
des Datenblocks frühzeitig in eine Fehlerbehandlungsroutine
FBR mit Abbruch des laufenden Blockzyklus übergeleitet
werden soll.
Solange kein Fehler PERR . . . angezeigt wird, werden während
eines Blockzyklus die Sperrsignale BYTE.SEL . . .=0
normalerweise nicht wirksam geschaltet, so daß bis zum
Erkennen eines Fehlers alle Untereinheiten, ob geändert
oder nicht geändert, in den Arbeitsspeicher ASP übernommen
werden. Die Unterdrückung der Sperrung ist jedoch
nicht gezeigt. Sie könnte in einfacher Weise durch
ein Anlegen eines konstanten Signales "1" an alle
Sperrsignalleitungen bewirkt werden.
Tritt nun während eines laufenden Blockzyklus ein Fehler
PERR . . . auf, dann läuft bei der einen Lösungsvariante
der Blockzyklus zunächst bis zum Ende weiter. Da jedoch
das Sperrsignal W.INH eingeschaltet ist, werden ab
der fehlerbehafteten Dateneinheit keine Dateneinheiten
mehr in den Arbeitsspeicher übernommen. Am Ende des
abgelaufenden Blockzyklus, was mit dem Signal BE, des
Zählers CNT-A erkannt wird, wird auf Einzelbefehlssteuerung
umgeschaltet, und es werden nur die von geänderten
Untereinheiten betroffenen Dateneinheiten DW . . . in den
Arbeitsspeicher übertragen. Dabei werden alle betroffenen
Dateneinheiten des Blocks, also auch die bereits
übertragenen, übertragen.
Dies wird durch ein Prioritätsnetzwerk PRIO gesteuert,
das an die Ausgänge der ODER-Glieder OR 1 angeschlossen
und gestrichelt gezeichnet ist, da es bei anderen
Lösungsvarianten entbehrlich ist.
Dies Prioritätsnetzwerk PRIO ermittelt, gesteuert
durch Impulse am Eingang f in zyklischer Folge die
Gruppen G . . . von Steuerbits W . . ., die eine Änderung
anzeigen. Die ermittelten Gruppenadressen werden nacheinander
dem Zähler CNT-A zur Einstellung durch entsprechende
Steuerimpulse am Eingang ü übergeben, so
daß der Multiplexer MUX die ausgewählte Gruppe durchschaltet
und gleichzeitig der Multiplexer MUX 2 die
zugehörige Dateneinheit auswählt. Während der Einzelbefehlssteuerung
bleibt ein möglicherweise auftretendes
Sperrsignal W.INH ohne Auswirkung. Vielmehr wird durch
die Steuersignale BYTE.SEL . . . die Übernahme in den
Arbeitsspeicher gesteuert, wobei fehlerhafte nicht geänderte
Untereinheiten unberücksichtigt bleiben und
fehlerhafte geänderte Untereinheiten zum Fehlersignal
(W PERR) am Ausgang des ODER-Gliedes OR 3 und damit,
wie bereits erläutert, gegebenenfalls zum Abbruch
der Übertragung mit Überleitung in eine Fehlerbehandlungsroutine
FBR führen.
Bei einer weiteren Varianten wird der laufende Blockübertragungszyklus
mit Auftreten eines Fehlers abgebrochen
und ohne Verzug in eine Einzelbefehlssteuerung
in Verbindung mit den Steuersignalen BYTE.SEL . . . übergeleitet.
Dabei können, wie bei der vorhergehend erläuterten
Variante, alle geänderten Untereinheiten,
also auch die bereits übertragenen, übertragen werden.
Durch den augenblicklichen Abbruch des Blockzyklus besteht
aber auch die Möglichkeit, die Übertragung mit den
nicht übertragenen Dateneinheiten fortzusetzen.
Der Zähler CNT-A mit seiner Adressenmarkierung liefert
in diesem Falle den Startpunkt für das Prioritätsnetzwerk
PRIO, wobei die Adressenmarkierung mit dem Signal
üb übernommen wird. Anschließend wird dann wieder mit
Signal f entsprechend den einzelnen Übertragungszyklen
die Umsteuerung vorgenommen, bis das Signal en anzeigt,
daß alle geänderten Untereinheiten ausgelagert sind.
Auf das Prioritätsnetzwerk PRIO kann aber, wie bereits
erwähnt, verzichtet werden, wenn man generell nur einen
Blockzyklus vorsieht und die Steuersignale BYTE.SEL . . .
von vornherein wirksam werden läßt. Dann werden nämlich
nur die gewänderten Untereinheiten erfaßt. Voraussetzung
ist jedoch, daß dann kein Sperrsignal W.INH erzeugt wird.
Diese Lösungsvariante kostet vor allem dann am wenigsten
Zeit und Aufwand, wenn fehlerhafte geänderte Daten ebenfalls
in den Arbeitsspeicher ASP ausgelagert werden. In
diesem Falle führt das Fehlersignal (W PERR) zu
einem mehrfach genutzten Signal SPERR. Einerseits
stellt es in Verbindung mit den zusätzlichen UND-Gliedern
U 03 bis U 33 und den ODER-Gliedern OR 01 bis
OR 31 sicher, daß die fehlerbehafteten geänderten Bytes
für die Übernahme durch den Arbeitsspeicher mit der Erzeugung
der Signale BYTE.SEL . . .=1 gekennzeichnet werden,
und zum anderen bewirkt es am Arbeitsspeicher ASP,
daß dieser trotz des bei der eigenen Fehlerprüfung festgestellten
Fehlers die fehlerbehafteten Bytes annimmt
und als ungültig markiert, z. B. durch ein falsches
Sicherungszeichen, abgespeichert, ohne einen Speicherfehler
zu melden. Fehlerhafte, geänderte Untereinheiten
können sich dann nur auswirken, wenn im weiteren
Programmverlauf auf diese Untereinheiten erneut zugegriffen
werden muß.
Fig. 3 und Fig. 4 zeigen entsprechende Ablaufdiagramme
für die einzelnen beschriebenen Verfahrensvarianten.
Fig. 3 bezeiht sich dabei auf die Varianten mit Blockzyklussteuerung
und anschließendem Übergang in eine Einzelbefehlssteuerung
bei Auftreten eines Fehlers, deren
Ablauf im rechten unteren Teil dargestellt ist, während
der linke Teil des Ablaufdiagramms sich auf den in jedem
Fall zunächst eingeleiteten Blockzyklus bezieht.
Die Überleitung in die Einzelbefehlssteuerung erfolgt
nur im Fehlerfall, und zwar entweder am Ende eines
Blockzyklus, wenn das Sperrsignal W.INH gesetzt ist
oder aber unmittelbar, wie durch die strichpunktierte
Verbindungslinie angedeutet ist, nach Auftreten eines
Fehlers mit Abbruch des eingeleiteten Blockzyklus.
Die Auslagerung von Dateneinheiten mit Einzelbefehlssteuerung
beginnt entweder, wie dargestellt, mit der
ersten geänderten Dateneinheit, für die W DW =1 ist,
oder aber, wie bereits erläutert, mit der zum Abbruch
des Blockzyklus führenden Dateneinheit anhand der vom
Zähler CNT-A eingenommenen Zählerstellung zur Festlegung
des Startpunktes für das Prioritätsnetzwerk PRIO.
Bei geänderten Untereinheiten auftretende Fehler führen,
wie gestrichelt angedeutet ist, entweder zum Abbruch
mit Überleitung in eine Fehlerbehandlungsroutine FBR
oder aber, wenn die Art des Programms es für sinnvoll
erscheinen läßt, zu einer Auslagerung in den Arbeitsspeicher
mit entsprechendem Begleitsignal SPERR.
Das Ablaufdiagramm von Fig. 4 betrifft die Verfahrensvariante
mit einmal ablaufendem Blockzyklus, wobei
die Byteauswahlsignale BYTE.SEL . . . von vornherein
wirksam sind, so daß in jedem der aufeinanderfolgenden
Schreibzyklen lediglich die geänderten Bytes in den
Arbeitsspeicher eingeschrieben werden.
Bei den bisher beschriebenen Varianten ist der Cache-
Speicher C-SP jeweils solange blockiert, bis die
Auslagerung eines Blockes abgeschlossen ist, da die
einzelnen Dateneinheiten unmittelbar aus dem Cache-
Speicher ohne Zwischenspeicherung zur Übertragung gelangen.
Man könnte jedoch zusätzlich einen Zwischenspeicher
für den gesamten Eintrag vorsehen und die
Sicherungszeichen aller Dateneinheiten zunächst prüfen,
um davon abhängig zu entscheiden, ob die Auslagerung
im Rahmen eines Blockzyklus oder aber gleich
durch Einzelbefehlssteuerung erfolgen soll. Während
der Prüfzeit und auch während der Einzelbefehlssteuerung
könnten der gesamte Eintragsbereich im Cache-Speicher
bereits wieder belegt oder aber andere Speicheranfragen
ohen weiteres berücksichtigt werden.
Die Sicherung der Daten ist beim beschriebenen Ausführungsbeispiel
mit einem einzigen Paritätsbit je Byte
durchgeführt worden, was im Fehlerfall keine Korrektur
zuläßt. Trotzdem beeinträchtigt nicht jeder Fehler die
Verfügbarkeit, da infolge der gewählten Größe der Untereinheiten
die Gefahr verringert wird, daß Fehler bei
nicht geänderten Dateneinheiten sich auf geänderte Dateneinheiten
auswirken können. Trotz fehlender Möglichkeit
einer Fehlerkorrektur läßt sich also die Funktionsfähigkeit
infolge der größeren Fehlertoleranz erheblich
steigern.
Bei größerer Speicherfehlerwahrscheinlichkeit mit der
Notwendigkeit zur Korrektur z. B. von Einzelfehlern gilt
Analoges für nicht korrigierbare Doppelfehler.
Die Durchführung der Verfahren ist dabei nicht an Schaltungsteile
in fest verdrahteter Logik entsprechend dem
Ausführungsbeispiel von Fig. 2 gebunden. Die einzelnen
Verfahrensschritte sind ohne weiteres auch von einer
speicherprogrammierten Steuerung, z. B. einem
Mikroprozessor, ausführbar.
Selbstverständlich können anstelle der als Untereinheiten
gewählten Bytes beispielsweise zwei oder auch vier
Bytes jeweils eine Untereinheit bilden, der jeweils ein
Steuerbit W zugeordnet wird. Die Größe der zu wählenden
Untereinheiten richtet sich dabei in erster Linie
nach der Art der Daten und deren Änderungshäufigkeit
sowie nach dem angestrebten Sicherungsgrad bei einer
vorgegebenen Fehlerwahrscheinlichkeit der verwendeten
Speicherbausteine, sie kann durch entsprechende Simulation
ermittelt werden.
Claims (12)
1. Verfahren zur Steuerung der Übertragung von in Pufferspeichern,
insbesondere Cache-Speichern, von Datenverarbeitungsanlagen
gespeicheten Daten in den Arbeitsspeicher, wobei
nur im Pufferspeicher in Form von Blöcken gespeicherte Daten
des Arbeitsspeichers geändert und geänderte Daten nur dann in
den Arbeitsspeicher übertragen werden, wenn der zugehörige
Speicherbereich für einen Block im Pufferspeicher für andere
Daten benötigt wird, die Blöcke der Daten aus selbständigen
Untereinheiten bestehen und jeder Untereinheit in Steuerbit
zugeordnet ist, das die Änderung der jeweiligen Untereinheit
anzeigt, und wobei wenigstens die Übertragung der Daten vom
Arbeitsspeicher zum Pufferspeicher jeweils im Rahmen eines
gesamten Blockes durch einen einzigen Steuerbefehl und in
umgekehrter Richtung auch im Rahmen von einzelnen Untereinheiten
mit individuellen Steuerbefehlen abhängig von den Steuerbits
möglich ist, wobei jeweils der Breite des Übertragungsleitungssystems
entsprechende Dateneinheiten nacheinander
übertragen werden,
dadurch gekennzeichnet, daß bei Auslagerung eines Datenblockes mit wenigstens einer geänderten Untereinheit aus dem Pufferspeicher (C-SP) in den Arbeitsspeicher (ASP), wobei unabhängig vom Umfang des jeweiligen Datenblocks und der von der Breite des Übertragungsleitungssystems bedingten Größe der Dateneinheiten (z. B. Doppelwörter DW . . . mit je vier Bytes) diese in Untereinheiten (z. B. in Form von Bytes) mit individueller Fehlerüberwachungsmöglichkeit unterteilt sind, denen ein individuelles Steuerbit (z. B. W 1) zur Markierung einer Änderung zugeordnet ist, bei Fehlerfreiheit aller Untereinheiten des Blockes die Übertragung jeweils im Rahmen des gesamten Blockes mit nur einem Steuerbefehl erfolgt und daß bei Vorliegen wenigstens einer fehlerhaften Untereinheit innerhalb des auszulagernden Blockes die Steuerbits (z. B. W 1 bis W 32) zur Steuerung der Übertragung der Dateneinheiten mit geänderten Untereinheiten herangezogen und nicht geänderte fehlerhafte Untereinheiten von der Übernahme in den Arbeitsspeicher (ASP) ausgeschlossen werden.
dadurch gekennzeichnet, daß bei Auslagerung eines Datenblockes mit wenigstens einer geänderten Untereinheit aus dem Pufferspeicher (C-SP) in den Arbeitsspeicher (ASP), wobei unabhängig vom Umfang des jeweiligen Datenblocks und der von der Breite des Übertragungsleitungssystems bedingten Größe der Dateneinheiten (z. B. Doppelwörter DW . . . mit je vier Bytes) diese in Untereinheiten (z. B. in Form von Bytes) mit individueller Fehlerüberwachungsmöglichkeit unterteilt sind, denen ein individuelles Steuerbit (z. B. W 1) zur Markierung einer Änderung zugeordnet ist, bei Fehlerfreiheit aller Untereinheiten des Blockes die Übertragung jeweils im Rahmen des gesamten Blockes mit nur einem Steuerbefehl erfolgt und daß bei Vorliegen wenigstens einer fehlerhaften Untereinheit innerhalb des auszulagernden Blockes die Steuerbits (z. B. W 1 bis W 32) zur Steuerung der Übertragung der Dateneinheiten mit geänderten Untereinheiten herangezogen und nicht geänderte fehlerhafte Untereinheiten von der Übernahme in den Arbeitsspeicher (ASP) ausgeschlossen werden.
2. Verfahren nach Anspruch 1,
dadurch gekennzeichnet, daß jede Auslagerung
eines Datenblocks mit einem Blockübertragungszyklus
eingeleitet wird, daß mit der jeweils ersten innerhalb des
Blockübertragungszyklus aus dem Pufferspeicher gelesenen fehlerhaften
Dateneinheit (z. B. DW 5) die Übernahme dieser und aller
im Blockübertragungszyklus nachfolgenden Dateneinheiten (z. B.
DW 6 bis DW 8) durch ein Begleitsignal (W.INH) gesperrt wird
und daß nachfolgend wenigstens alle, noch nicht übernommene geänderte
Untereinheiten aufweisenden Dateneinheiten mit Einzelbefehlssteuerung
übertragen werden, wobei gegebenenfalls von
der Speicherübernahme auszuschließende Untereinheiten innerhalb
einer Dateneinheit durch gesonderte Steuersignale
(BYTRE.SEL . . .=0) markiert werden.
3. Verfahren nach Anspruch 2, dadurch gekennzeichnet,
daß mit Lesen einer fehlerhaften
Dateneinheit (z. B. DW 5) der laufende Blockübertragungszyklus
sofort abgebrochen und auf Einzelbefehlssteuerung
umgeschaltet wird, wobei lediglich
die im Rahmen des Blockzyklus noch nicht übertragenen
Dateneinheiten berücksichtigt werden.
4. Verfahren nach Anspruch 1, dadurch gekennzeichnet,
daß jede Auslagerung eines
Datenblocks im Rahmen eines Blockübertagungszyklus
durchgeführt wird und daß während des ablaufenden
Blockübertragungszyklus alle nicht geänderten Untereinheiten
der einzelnen Dateneinheiten durch gesonderte
Steuersignale (z. B. BYTE.SEL 1=0) markiert werden,
die eine Übernahme durch den Arbeitsspeicher (ASP) unterbinden.
5. Verfahren nach Anspruch 2 oder 4, dadurch
gekennzeichnet, daß zu Beginn einer jeden
Auslagerung eines Datenblocks der zugehörige Block
zunächst als Ganzes aus dem Pufferspeicher (C-SP) gelesen
und zur Fehlerprüfung (mit PEE) zwischengespeichert
wird und daß ein Blockübertragungszyklus ohne Berücksichtigung der die
ungeänderten Untereinheiten markierenden Steuersignale
(z. B. BYTE.SEL 1=0) lediglich bei Fehlerfreiheit
aller Untereinheiten des Datenblockes eingeleitet
wird.
6. Verfahren nach einem der Ansprüche 1 bis 5, dadurch
gekennzeichnet, daß auch als
fehlerhaft erkannte und als geändert markierte Untereinheiten
in den Arbeitsspeicher (ASP) übertragen und
in diesem als ungültig markiert werden und daß die vom
Arbeitsspeicher (ASP) dabei normalerweise ausgelöste
Speicherfehlermeldung unterdrückt wird.
7. Verfahren nach Anspruch 6, dadurch gekennzeichnet,
daß die Übernahme fehlerbehafteter
Dateneinheiten in den Arbeitsspeicher (ASP)
und die Unterdrückung der Speicherfehlermeldung durch
ein gesondertes Begleitsignal (SPERR) gesteuert wird.
8. Anordnung zur Durchführung des Verfahrens nach einem
der Ansprüche 1 bis 7, bestehend aus einem dem Arbeitsspeicher
(ASP) einer Datenverarbeitungsanlage vorgeschalteten,
nach dem "copy-back"-Verfahren arbeitenden
Cache-Speicher (C-SP), aus Einrichtungen (z. B. PPE)
zur Sicherung und/oder Korrektur der im Cache-Speicher
(C-SP) in Form von Blöcken gespeicherten Daten gegen
Speicherfehler und aus einem Übertragungsleitungssystem
mit Steuerung zum Austausch von die Datenblöcke bildenden
Dateneinheiten (z. B. DW 1 bis DWn) zwischen dem
Arbeitsspeicher (ASP) und dem Cache-Speicher (C-SP)
entweder aufgrund eines einzigen Steuerbefehls im Rahmen
eines Blockzyklus oder aufgrund von Einzelsteuerbefehlen
für die einzelnen Dateneinheiten (z. B. DW 1),
gekennzeichnet durch eine gesonderte
Steuereinrichtung (W-ST) zur Überwachung sowohl der
den einzelnen Untereinheiten einer Dateneinheit zwecks Kennzeichnung
einer erfolgten Änderung zugeordneten Steuerbits (z. B.
W 1 bis W 32) als auch der von den Sicherungseinrichtungen
(PPE) gelieferten Fehlersignale (z. B. PERR 0
bis 3) sowie zur Erzeugung von Steuersignalen (z. B.
SWAP bzw. S.INH oder BYTE.SEL . . .) abhängig von den
überwachten Steuerbits (W . . .) und der Fehlersignale
(PERR . . .) zur Steuerung der Auslagerung eines gekennzeichneten
Datenblocks (mit SWAP) in den Arbeitsspeicher
(ASP) und zur Sperrung der Übernahme von
Untereinheiten des auszulagernden Datenblockes, (z. B.
mit W.INH oder BYTE.SEL . . .=0).
9. Anordnung nach Anspruch 8, gekennzeichnet
durch Einrichtungen (OR 1 und OR 2) zur Feststellung,
daß Untereinheiten des auszulagernden Datenblockes
geändert sind, und zur Erzeugung entsprechender
Steuersignale (z. B S.INV und SWAP), durch Einrichtungen
(MUX) zur Auswahl der jeweils zur aus dem
Cache-Speicher (C-SP) gelesenen und ausgewählten
Dateneinheit (z. B. DW 1) gehörigen Gruppe (z. B. G 1)
von Steuerbits (z. B. W 1 bis W 4) und durch Einrichtungen
(U 01 bis U 31) zur Ermittlung fehlerfreier
geänderter Untereinheiten und zur Erzeugung der die
Übernahme durch den Arbeitsspeicher (ASP) steuernden
Begleitsignale (BYTE.SEL . . .=1).
10. Anordnung nach Anspruch 9, gekennzeichnet
durch Einrichtungen (OR 4) zur Prüfung der jeweils
vorliegenden Fehlersignale (PERR 0 bis 3) auf
das Vorliegen eines Fehlers und zur Erzeugung eines
Sperrsignals (W.INH) zur Verhinderung der Übernahme
gleichzeitig übertragener Dateneinheiten in den Arbeitsspeicher
(ASP).
11. Anordnung nach Anspruch 9 oder 10 gekennzeichnet
durch Einrichtungen (PRI 0, CNT-A)
zur Bestimmung der jeweils von einer Änderung betroffenen
Dateneinheiten eines Blockes abhängig von den
einzelnen Steuerbitgruppen (z. B. G 1 bis G 8) der
Steuerbits (W 1 bis W 32) in lückenlöser Folge und
zur entsprechenden Einstellung der Auswahleinrichtungen
(MUX, MUX 2) für die Bereitstellung der zugehörigen
Steuerbitgruppe (z. B. G 1) und der zugehörigen Dateneinheit
(z. B. DW 1) für die Steuerung der Übertragung.
12. Anordnung nach einem der Ansprüche 9 bis 11,
gekennzeichent durch Einrichtungen
(U 02 bis U 32, OR 3) zur Ableitung eines Begleitsignales
(SPERR) bei Vorliegen fehlerbehafteter geänderter
Untereinheiten zur Erzwingung der Übernahme
der zugehörigen Dateneinheit durch den Arbeitsspeicher
(ASP) und durch Einrichtungen (U 03 bis U 33,
OR 01 bis OR 31) zur Abwandlung der die Übernahme
verhindernden individuellen Begleitsignale (BYTE.SEL . . .=0)
für die Untereinheiten in die Übernahme ermöglichende
Begleitsignale (BYTE.SEL . . . = 1) bei Auftreten
des globalen Begleitsignales (SPERR) zur Erzwingung
der Übernahme einer fehlerbehafteten Dateneinheit
durch den Arbeitsspeicher.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19843442823 DE3442823A1 (de) | 1984-11-23 | 1984-11-23 | Verfahren und anordnung zur steigerung der leistungsfaehigkeit von datenverarbeitungsanlagen mit in pufferspeichern, insbesondere in cache-speichern, gespeicherten fehlerhaften daten |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19843442823 DE3442823A1 (de) | 1984-11-23 | 1984-11-23 | Verfahren und anordnung zur steigerung der leistungsfaehigkeit von datenverarbeitungsanlagen mit in pufferspeichern, insbesondere in cache-speichern, gespeicherten fehlerhaften daten |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3442823A1 DE3442823A1 (de) | 1986-06-05 |
DE3442823C2 true DE3442823C2 (de) | 1988-04-07 |
Family
ID=6251018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19843442823 Granted DE3442823A1 (de) | 1984-11-23 | 1984-11-23 | Verfahren und anordnung zur steigerung der leistungsfaehigkeit von datenverarbeitungsanlagen mit in pufferspeichern, insbesondere in cache-speichern, gespeicherten fehlerhaften daten |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE3442823A1 (de) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3912705C2 (de) * | 1989-04-18 | 1996-06-20 | Siemens Nixdorf Inf Syst | Verfahren und Anordnung zur Steuerung des Datenaustausches bei Schreibanforderungen von Verarbeitungseinheiten an einen Cachespeicher |
DE69127936T2 (de) * | 1990-06-29 | 1998-05-07 | Digital Equipment Corp | Busprotokoll für Prozessor mit write-back cache |
-
1984
- 1984-11-23 DE DE19843442823 patent/DE3442823A1/de active Granted
Also Published As
Publication number | Publication date |
---|---|
DE3442823A1 (de) | 1986-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2806024C2 (de) | ||
DE3301628A1 (de) | Schaltungsanordnung fuer den datenaustausch zwischen zwei rechnern | |
DE3111447C2 (de) | ||
DE2430464A1 (de) | Einrichtung zur fehlergesicherten datenuebertragung | |
DE69026346T2 (de) | Technik zum Informationsschutz für fehlertolerante redundante Informationsspeichereinrichtungen | |
EP0141160A2 (de) | Schaltungsanordnung zum Registrieren von Adressen von einen fehlerhaften Speicherinhalt aufweisenden Speicherzellen | |
DE4335061C2 (de) | Mehrspeichervorrichtung | |
EP0282877A1 (de) | Verfahren und Einrichtung zur Steuerung der Fehlerkorrektur innerhalb einer Datenübertragungssteuerung bei von bewegten peripheren Speichern, insbesondere Plattenspeichern, eines Datenverarbeitungssystems gelesenen Daten | |
DE19900251A1 (de) | Vorrichtung und Verfahren zum Steuern eines vielseitigen USB-Endpunktkanals | |
DE2325137C3 (de) | Speichereinrichtung mit Bereitschaftsspeicherelementen | |
EP0350016B1 (de) | Verfahren und Einrichtung zum Duplizieren des Inhalts von Datenträgern | |
DE3442823C2 (de) | ||
DE102006019426B4 (de) | Speichermodulsteuerung, Speichersteuerung und entsprechende Speicheranordnung sowie Verfahren zur Fehlerkorrektur | |
EP0127118B1 (de) | Speichersteueranordnung, insbesondere für fehlertolerantes Fernsprech-Vermittlungssystem | |
WO2006128810A2 (de) | Verfahren zur kommunikation redundanter daten während der adressübertragung auf einem gemultiplexten adress/datenbus | |
DE3433679C2 (de) | ||
DE2242279B2 (de) | Schaltungsanordnung zur Ermittlung von Fehlern in einer Speichereinheit eines programmgesteuerten Datenvermittiungssystems | |
DE2823457A1 (de) | Verfahren und schaltungsanordnung zur fehlerueberwachung in speichersystemen digitaler rechenanlagen | |
EP0036148A1 (de) | Hybrid-Assoziativspeicher | |
DE3431770A1 (de) | Verfahren und anordnung zur sicherung von wichtigen informationen in speichereinheiten mit wahlweisem zugriff, insbesondere solchen aus ram-bausteinen | |
EP0306736A2 (de) | Verfahren zum Übertragen von in einer Fernmeldevermittlungsanlage gespeicherten Verbindungsinformationen zu einer Informationsverarbeitungsanlage | |
DE10084752T5 (de) | Verfahren zur Überwachung von parallelen Prozessen | |
DE3229111C1 (de) | Verfahren zur Fehlerkorrektur von Daten | |
DE3628259C1 (en) | Method and arrangement for control of access to the memory system consisting of cache memory and working memory in a data processing system | |
DE1449555C (de) | Einrichtung zur Korrektur von Datenubertragungsfehlern mit zwei dimensionaler Paritätsprüfung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |