DE68923828T2 - Architektur und Schnittstelle für Speicherkarten. - Google Patents

Architektur und Schnittstelle für Speicherkarten.

Info

Publication number
DE68923828T2
DE68923828T2 DE68923828T DE68923828T DE68923828T2 DE 68923828 T2 DE68923828 T2 DE 68923828T2 DE 68923828 T DE68923828 T DE 68923828T DE 68923828 T DE68923828 T DE 68923828T DE 68923828 T2 DE68923828 T2 DE 68923828T2
Authority
DE
Germany
Prior art keywords
data
memory
card
ecc
logic
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 - Fee Related
Application number
DE68923828T
Other languages
English (en)
Other versions
DE68923828D1 (de
Inventor
David L Arlington
Jacqueline Morris Cole
Bruce G Hazelzet
David J Krolak
Hehching Harry Li
Bharat J Oza
A Frank Weaver
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE68923828D1 publication Critical patent/DE68923828D1/de
Publication of DE68923828T2 publication Critical patent/DE68923828T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • G06F11/106Correcting systematically all correctable errors, i.e. scrubbing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1028Adjacent errors, e.g. error in n-bit (n>1) wide storage units, i.e. package error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • G06F11/1056Updating check bits on partial write, i.e. read/modify/write

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Description

  • Die vorliegende Erfindung betrifft allgemein eine Computerspeicher-Schnittstelle und -architektur und insbesondere eine einfache und dennoch leistungsfähige und flexible Speicherschnittstelle und -architektur für eine Speicherkarte, die in verschiedenen Systemkonfigurationen, mit verschiedenen Matrixtypen und verschiedenen Speichergrößen verwendet werden kann. Die Erfindung betrachtet eine "intelligente" Speicherkarte mit einer verbesserten Leistung und Funktion, die einen schnellen Zugriff ohne Verlust der Funktionen zur Steigerung der Zuverlässigkeit und ein vollständiges Spektrum von direkten und partiellen, dem System gegenüber transparenten Speichervorgängen umfaßt.
  • Die Basisarchitektur eines typischen Computersystems umfaßt eine Zentraleinheit (CPU), die durch einen Bus mit einem Arbeitsspeicher (RAM) verbunden ist. Andere Einheiten als die Zentraleinheit, zum Beispiel Ein-/Ausgabe-(E/A-)Einheiten, greifen zum Lesen und Schreiben von Daten auf den RAM zu. Frühe Computersysteme benötigten diese Einheiten zur Einrichtung einer Unterbrechungsebene, um die Erlaubnis zum Zugriff auf den RAM bei der CPU anzufordern. Dies bewirkte Verzögerungen in der Verarbeitungszeit durch das Computersystem, und daher wurden Steuereinheiten mit direkten Speicherzugriff (DMA) entwickelt, um den Zugriff auf den RAM ohne Unterbrechung der CPU zu ermöglichen.
  • Diese Computersysteme, ob Mikrosysteme, Minisysteme oder Großrechner, sind im allgemeinen durch einen modularen Aufbau gekennzeichnet, wobei der RAM aus einer Mehrzahl von gedruckten Speicherschaltkarten, die sich an den Bus anschließen lassen, zusammengesetzt ist. Diese Speicherkarten enthalten im typischen Fall eine Matrix aus Chips mit integriertem Schaltkreis (IC) und wenige andere Elemente, wobei die gesamte Steuerung außerhalb der Karte von der CPU und/oder der DMA-Steuereinheit ausgeübt wird. Auf solche Karten kann zum Zwecke dieser Beschreibung als "nicht intelligente" Speicherkarten Bezug genommen werden. Die vorliegende Erfindung gehört zu einer Gruppe von Speicherkarten, auf die hierin als "intelligente" Speicherkarten Bezug genommen wird; das heißt, diese Speicherkarten umfassen verschiedene Datenfluß- und Steuerlogikelemente, die Funktionen ausführen, die in nicht intelligenten Speicherkarten außerhalb der Karte ausgeführt werden.
  • Um die Erfindung im Zusammenhang zu sehen, wird zuerst auf Fig. 1A Bezug genommen, die in Form eines Blockdiagramms der höheren Ebene eine nicht intelligente Speicherkarte und Prozessorschnittstelle nach dem Stand der Technik zeigt. In diesem System kommuniziert der Prozessor 10 über einen Paritätsbus 11 mit einer Speichersteuereinheit 12, die Fehlerkorrekturcode-(ECC-) Funktionen umfaßt. Die Steuereinheit ihrerseits kommuniziert über einen externen Speicherbus 13 mit einer Mehrzahl von Speicherkarten, von denen nur eine bei der Bezugsziffer 14 gezeigt wird. Jede dieser Speicherkarten umfaßt Ansteuerelemente und Empfänger 15, die eine Pufferung zwischen dem externen Speicherbus 13 und dem internen Speicherbus 17 bereitstellen. Der interne Speicherbus wird verwendet, um die Matrizen 16 der Arbeitsspeicher-(RAM-)Chips auf der Karte zu adressieren.
  • Die Architektur einer intelligenten Speicherkarte wird zum Vergleich in Fig. 1B gezeigt, wobei gleiche Bezugsziffern die gleichen oder entsprechende Schaltungen anzeigen. Es sei darauf hingewiesen, daß die Steuereinheit 12 und der externe Speicherbus 13 eliminiert wurden. Die Funktionen der Steuereinheit wurden in die Pufferlogik 18 aufgenommen. Wie ausführlicher beschrieben wird, stellt die Aufnahme dieser Funktionen in die Kartenschaltungen eine deutliche Verbesserung der Maschinenleistung bereit und ist die Basis zur Kennzeichnung der Speicherkarte als eine "intelligente" Speicherkarte.
  • Die vorliegende Erfindung ist insbesondere eine Verbesserung der Speicherarchitektur und der Prozessorschnittstelle, die in den Computern der IBM Serie 9370 verwendet werden. Diese Speicherkarten gehören zur Gruppe der intelligenten Speicherkarten. Fig. 2 ist ein Blockdiagramm der höheren Ebene der IBM Serie 9370 von intelligenten Speicherkarten. Diese Karten enthalten eine Speicheranordnung 21, die aus achtzig 512K·2-Matrizen von dynamischen Arbeitsspeicher-(DRAM-)Chips besteht, die in zwei Gruppen zu vierzig konfiguriert sind. Diese besondere Speicherkarte weist 8-Bit-breite interne Speicherdatenbusse 27 und 28 auf, die die Kartenlogik 23 mit den beiden Speichermatrixgruppen 21 und den beiden 2-Bit-breiten externen Speicherbussen 24 und 25 verbindet. Die unidirektionalen Steuerbusse 22a, 22b und 22c verbinden jeweils die Matrixsteuerungs-Ansteuerlogikschaltungen 26a, 26b und 26c mit den Speichermatrizen. Diese Busse liefern die Matrixadressen, die Matrixauswahlen (PAS und CAS), die Schreib-/Lesesteuerung und Daten-Ein-/Ausgabesteuerungen. Eine zentrale Steuereinheit 29 ist in zwei Teile, eine mit der Matrixsteuerungs-Ansteuerlogik 26a, 26b und 26c kommunizierende Matrixsteuerung und eine mit den bidirektionalen Datenfluß-Logikschaltungen 30 und 31 kommunizierende Datenflußsteuerung, unterteilt. Die bidirektionalen Datenfluß-Logikschaltungen 30 und 31 umfassen jeweils zwei 4-Byte-ECC-Hälften.
  • Zur Sicherstellung von korrekten Dateneingabe- und Datenausgabevorgängen der Arbeitsspeichermatrizen ist die Verwendung von Fehlererkennungs- und Fehlerkorrektureinheiten wohlbekannt. Solche Einheiten verwenden verschiedenartige Fehlererkennungscodes. Der am häufigsten verwendete Fehlererkennungscode ist der Code mit ungerader/gerader Parität, bei dem ein Paritätsbit zu jedem Datenwort hinzugefügt wird, um eine Prüfung auf ungerade oder gerade Parität zu gestatten, indem bestimmt wird, ob die Summe aller 1-Bits des Datenwortes ungerade oder gerade ist. Eine anderer oft verwendeter Typ von Paritätscodes sind die Hamming- Codes, die Einzel- und Doppelbitfehler erkennen und korrigieren können. US-A-4 710 394 (Traynor) zeigt eine Einheit dieses Typs, die einen Arbeitsspeicher mit einer Informationsmatrix und einer Paritätsmatrix enthält. Auf Datenwörter in der Informationsmatrix und entsprechende Paritätsdaten in der Paritätsmatrix wird zusammen zugegriffen, um sie zu einem Fehlersyndrom-/Paritätsgenerator und zu einer Fehlerkorrekturschaltung zu leiten, die Ausgangssignale des Fehlersyndrom-/Paritätsgenerators verwendet, um korrigierte Datenwörter zu erzeugen. Es werden Zwischenspeicher verwendet, um die korrigierten Datenwörter zur Übertragung zu einem E/A-Bus zu speichern. Im Falle eines Schreibvorgangs wird eine entsprechende Fehlererkennung und -korrektur bei den Schreibdaten durchgeführt, und ein korrigiertes Datenwort und entsprechende neue Paritätsinformationen werden erzeugt, die jeweils in der Informationsmatrix und der Paritätsmatrix gespeichert werden.
  • Die Verwendung einer "intelligenten" Speicherkarte eliminiert den Bedarf an einem zusätzlichen Bus zwischen den Speichermatrizen und dem Ort der Verwendung der Matrixdaten, wodurch die dazugehörige Busverzögerung auf diesem leistungskritischen Pfad eliminiert wird. Normalerweise ist der Bus für Ein-/Ausgabe und Cache ein Paritätsbus, so daß die ECC-Logik nicht an jeder Cache- und E/A-Schnittstelle vervielfältigt werden muß. Eine Steuereinheit mit einer ECC-Logik verbindet diesen Paritätsbus mit einer oder mehreren Speicherkarten ohne einem darauf befindlichen ECC. Die Logik auf den Speicherkarten müßte jedoch immer noch Daten zwischen der Matrix und dem Speicherbus außerhalb der Karte puffern. Indem der ECC in die Pufferlogik der Speicherkarte aufgenommen wird, ist es möglich, daß die Speicherkarte direkt auf dem Paritätsbus sitzt, wodurch ein schnellerer Speicherzugriff ermöglicht wird. In einer synchronen Umgebung stellt dies mindestens Einsparungen von einem Takt bei jedem Anruf oder jeder Speicherübertragung bereit, indem ein oder mehrere Zwischenspeicherstati eliminiert werden.
  • Da die Kartenlogik für einen ECC die Leistung durch die Eliminierung von Busverzögerungen verbessert, verbessern unabhängige Logikschaltungen für Vorgänge wie erweiterter Z-CC, Beseitigen von weichen Fehlern und Lese-/Änderungs-/Schreib-(RMW-)Vorgänge, die Leistung, indem die Zykluszeiten für diese Vorgänge verkürzt werden. Die Zykluszeiten werden verkürzt, da während dieser Vorgänge kein Bedarf an mehrfachen Busdurchläufen außerhalb der Karte besteht. Der automatische Ablauf dieser Vorgänge eliminiert einen zusätzlichen Systemaufwand für die Systemsteuerung und die damit verbundene Zeit, die benötigt würde. Ein Beispiel ist der erweiterte ECC (XECC). Das System leitet nur einen von einer Reihe von Matrixabrufvorgängen ein. Falls ein erweiterter ECC durchgeführt werden muß, hält die Speicherkarte die BELEGT- Leitung im aktiven Zustand, während der XECC intern stattfindet. Dies besteht aus einer Umkehr der anfänglich abgerufenen Daten, die die erkennbaren, jedoch nicht (allein durch den ECC) korrigierbaren Fehler enthalten, einer Speicherung zurück an dieselbe Speicherposition, einem anderen Datenabruf an diese Position und einer nachfolgenden Umkehr dieser Daten vor der Verarbeitung durch die ECC-Logik. Falls der XECC-Vorgang erfolgreich ist, werden die korrigierten Daten erneut in diese Speicherposition gespeichert. Falls er nicht erfolgreich war, werden die anfänglichen Daten mit dem erkennbaren Fehler erneut gespeichert. Auf die erfolgreichen XECC-Vorgänge folgt dann eine verbleibende nachfolgende Abrufübertragung(en) zum Systembus. Busdurchlaufverzögerungen für diese drei internen Vorgänge würden die reine Zyklus zeit für den Vorgang verlängern, falls sie extern erfolgen würden.
  • Ein anderes Beispiel ist Lesen/Ändern/Schreiben (RMW). Ein Lese- /Änderungs-/Schreibvorgang ist eine partielle Speicherung, wobei partiell bedeutet, daß eines oder mehrere, jedoch nicht alle Bytes von einem oder mehreren der 4-Byte-ECC-Wörter überschrieben werden. Um sicherzustellen, daß das ECC-Wort beziehungsweise die ECC-Wörter korrekte Daten und korrekt zugewiesene Prüfbits aufweisen, müssen die im Speicher gespeicherten Daten, die partiell überschrieben werden müssen, zuerst aus dem Speicher abgerufen werden, als ein Vorabruf weitergeleitet werden und durch den ECC laufen, um alle Einzelbitfehler zu korrigieren. Mehrfachbitfehler könnten den XECC-Vorgang aufrufen. Das System sendet einen Speicherbefehl mit einer zugeordneten Feldlänge und einer Startadresse, und die Speicherkarte bestimmt, ob ein direktes Schreiben oder ein RMW-Vorgang benötigt wird. Falls ein RMW-Vorgang benötigt wird, speichert die Karte in bestimmten Fällen alle Systemübertragungen in einem Puffer, während ein Vorabruf zum Speicher eingeleitet wird. Folglich laufen die Systemspeicherung und der Kartenvorabruf gleichzeitig ab. Wenn der Vorabruf stattfindet und Speicherfehler korrigiert sind, überschreibt die Karte die geeigneten vorher abgerufenen Bytes und speichert das Ergebnis wieder im Speicher ab. Die Operationszyklen und der Systemlogikaufwand werden wiederum auf ein Minimum herabgesetzt.
  • Die Kartenspeicher-Aktualisierung und das damit verbundene Beseitigen von weichen Fehlern erfolgen ebenfalls teilweise transparent gegenüber dem System. Für normale Aktualisierungsvorgänge aktiviert das System die Aktualisierungsleitung und wartet, bis der BELEGT-Status beendet ist. Die Speicherkarte verarbeitet die Aktualisierungsadressen-Zählung und die Matrixsteuerungen. Falls sie aktiv und ausgelöst wird, erfolgt die Beseitigung von weichen Fehlern zur aktiven Aktualisierungszeit, indem die geeigneten Aktualisierungen ersetzt werden. Die Löschvorgänge sind im Grunde ein Null-Byte-RMW. Die Daten werden aus dem Speicher abgerufen, der Karten-ECC korrigiert alle Einzelbitfehler, und anschließend werden die Daten in den Speicher zurückgeschrieben. Falls der Einzelbitfehler einen weichen Fehler betraf, ersetzt die Rückspeicherung fehlerhafte Daten, die den weichen Fehler darstellten, durch gültige Daten. Die Aktualisierung wird ebenfalls während dieses Vorgangs ausgeführt.
  • Der IBM 9370 Prozessor wurde entwickelt, um Hochleistungsfunktionen zu beinhalten, und dies machte einen verbesserten Entwurf der Speicherkarten für das System der nächsten Generation erforderlich. Die verbesserte Gestaltung und Funktion sind die Grundlage für diese Anmeldung. Die Zielsetzung des Entwurfs der nächsten Generation beinhaltete die Fähigkeit, nach dem anfänglichen Zugriff alle 27 ns bis zu acht 8-Byte-Datenübertragungen von der Speicherkarte zu erhalten. In dieser Übertragungsgeschwindigkeit von 27 ns mußte die Zeit enthalten sein, die für den Fehlerkorrekturcode (ECC), die Paritätserzeugung und andere Funktionen zur Verbesserung der Zuverlässigkeit benötigt wird.
  • Beim Entwurfsprozeß der neuen Speicherkarte war es ein anderes Entwurfsziel, alle benötigten Funktionen in einer Mindestanzahl von integrierten Schaltkreisen (ICs) unterzubringen. Das Problem hierbei war, alle benötigten Funktionen bereit zustellen und immer noch innerhalb der E/A-Beschränkungen des Chips/Moduls, die durch Kostenfaktoren und die aktuellen technischen Fähigkeiten bestimmt werden, zu bleiben.
  • Ein drittes Entwurfsziel war die Definition einer Schnittstelle und Architektur, die sowohl einfach als auch hochflexibel ist, wodurch ermöglicht wird, daß die Speicherkarte in einem breiten Spektrum von Hardware-Technologien und Systemanwendungen eingesetzt werden kann.
  • Es ist daher ein Ziel der vorliegenden Erfindung, eine verbesserte "intelligente" Speicherkarte bereitzustellen, die nach dem anfänglichen Zugriff bis zu acht 8-Byte-Übertragungen von der Speicherkarte durchführen kann.
  • Es ist ein anderes Ziel der Erfindung, eine mit allen Funktionen ausgestattete Speicherkarten-Schnittstelle und -Architektur mit minimalen Chip-Zählgrenzwerten, die durch Kostenfaktoren und technische Fähigkeiten bestimmt werden, bereitzustellen.
  • Es ist ein weiteres Ziel der Erfindung, eine Schnittstelle und Architektur für eine Computer-Speicherkarte bereit zustellen, die sehr einfach von einem Systemstandort aus für ein breites Spektrum von Hardware-Technologien und Systemanwendungen betrieben werden kann.
  • Es ist noch ein anderes Ziel der Erfindung, eine Speicherkarten- Architektur bereitzustellen, die die partielle Speicherflexibilität erheblich vergrößert, während die für die Speicherkarten- Schnittstelle benötigte Steuerung vereinfacht wird.
  • Gemäß der bevorzugten Ausführungsform der Erfindung, wie sie in der nächsten Generation der IBM 9370 Prozessorumgebung realisiert ist, stellt die Architektur und Schnittstelle der "intelligenten" Speicherkarte eine deutlich gesteigerte Leistung bereit, zum Teil durch die Verwendung der Technologie eines 80 ns schnellen dynamischen Arbeitsspeichers (DRAM), der nach dem anfänglichen Zugriff alle 27 ns bis zu acht 8-Byte-Datenübertragungen gestattet. Die Übertragungsgeschwindigkeit von 27 ns beinhaltet die Zeit, die für den Fehlerkorrekturcode (ECC), die Paritätserzeugung und andere Zuverlässigkeitsfunktionen benötigt wird. Nur zwei Logikchips oder -Module mit einem integrierten (IC) komplementären Metalloxid-Schaltkreis (CMOS) stellen alle benötigten Funktionen bereit und bleiben immer noch innerhalb der Ein-/Ausgabebeschränkungen (E/A) des Chips/Moduls, die durch Kostenfaktoren und technische Fähigkeiten bestimmt werden. Die durch die Methode der "intelligenten" Speicherkarte gegebene Einfachheit und Flexibilität stellt ein Mittel bereit, das ermöglicht, daß eine Kartenschnittstelle in einem breiten Spektrum von Hardware-Technologien und in verschiedenen Systemen verwendet werden kann. Die Architektur der Speicherkarte stellt ein komplettes Spektrum von direkten und partiellen Speichervorgängen auf eine dem System gegenüber transparente Weise bereit.
  • Die vorangegangenen und andere Ziele, Aspekte und Vorteile der Erfindung werden besser aus der folgenden ausführlichen Beschreibung einer bevorzugten Ausführungsform der Erfindung mit Bezugnahme auf die Zeichnungen verstanden, in denen:
  • Die Fig. 1A und 1B Blockdiagramme sind, die jeweils eine nicht intelligente Speicherkarte und eine intelligente Speicherkarte nach dem Stand der Technik darstellen;
  • Fig. 2 ein Blockdiagramm ist, das die Gesamtarchitektur einer intelligenten Speicherkarte nach dem Stand der Technik zeigt;
  • Fig. 3 ein Blockdiagramm ist, das die Gesamtarchitektur einer bevorzugten Ausführungsform der intelligenten Speicherkarte gemäß der Erfindung zeigt;
  • Fig. 4 ein Blockdiagramm ist, das die Datenfluß-Architektur der intelligenten Speicherkarte gemäß der Erfindung darstellt;
  • Fig. 5 ein Blockdiagramm ist, das die Steuerlogik der intelligenten Speicherkarte gemäß der Erfindung zeigt;
  • Fig. 6 ein Blockdiagramm ist, das die interne Datenfluß-Gestaltung der intelligenten Speicherkarte gemäß der Erfindung ausführlicher zeigt;
  • Fig. 7 ein Teil des Blockdiagramms von Fig. 6 ist, das den Vorgang der Abrufdaten-Ausgangsauswahl der Erfindung ausführlicher zeigt.
  • Fig. 8 ein Zeitsteuerungsdiagramm ist, das den doppelten Verzahnungsvorgang der Erfindung darstellt;
  • Fig. 9 ein Zeitsteuerungsdiagramm ist, das die Zeitsteuerung der Abrufdaten-Auswahl der Erfindung darstellt;
  • Fig. 10 ein Blockdiagramm ist, das den internen Matrixbus gemäß der Erfindung zeigt;
  • Fig. 11 ein Blockdiagramm ist, das den mehrfach genutzten Bus gemäß der Erfindung darstellt;
  • Fig. 12 ein Befehlsauflistungs- und Befehlsbezugsdiagramm für den in Fig. 11 gezeigten mehrfach genutzten Bus ist;
  • Die Fig. 13A bis 13H Tabellen sind, die Lese-/Änderungs- /Schreib-(RMW-)Optionen in Abhängigkeit von der Feldlänge und der Startbyte-Adresse für einen Zwei-Karten-Anschluß, der nach der Systemübertragung sortiert wird, zeigen;
  • Die Fig. 14A und 14B funktionelle Blockdiagramme sind, die jeweils RMW-Daten-Grenzwertdefinitionen für einen Ein-Karten- Anschluß und einen Zwei-Karten-Anschluß darstellen;
  • Fig. 15 eine Tabelle ist, die die RMW-Kombinationen der Speicherkarte gemäß der Erfindung zeigt;
  • Fig. 16 ein Flußdiagramm ist, das die Logik des RMW-Vorgangs zeigt;
  • Die Fig. 17A und 17B Zeitsteuerungsdiagramme sind, die den Zeitsteuerungsvergleich zwischen einer Vier-Matrix-Übertragung eines direkten Schreibvorgangs (WWWW) mit einer Vier-Matrix- Übertragung eines partiellen Schreibvorgangs (RWWW) darstellt, wobei die erste Matrixübertragung mit dem Vorabruf verbunden ist;
  • Fig. 18 ein Diagramm des Beseitigungs-/Aktualisierungszählers ist;
  • Fig. 19 ein Zeitsteuerungsdiagramm ist, das den Zeitsteuerungsvorgang des Löschens zeigt; und
  • Fig. 20 eine Tabelle ist, die Beispiele von realisierten Auffrischgeschwindigkeiten zeigt.
  • Mit Bezugnahme auf die Zeichnungen und insbesondere auf Fig. 3 wird ein Blockdiagramm der höheren Ebene der intelligenten Speicherkarte gemäß der Erfindung gezeigt. Die dargestellte Karte umfaßt einen Speicher 40, der aus achtzig 256K·4-DRAMs in zwei Gruppen zu je vierzig oder aus 160 256K·4-DRAMs in vier Gruppen zu je vierzig besteht. Es sind ein 16-Byte-breiter interner Speicherbus 41, 42 und ein 8-Byte-breiter externer Speicherbus 43, 44 vorhanden. Der interne Speicherbus 41, 42 stellt einen Kommunikationspfad für Daten und Steuerung zwischen dem Speicher 40 und der Logik 45 bereit, die aus zwei CMOS-Chips 46 und 47 besteht, die gestaltet wurden, um die Leistung und die Funktionen der neuen Speicherkarte zu unterstützen. Ausführlich beschrieben, ist jeder der CMOS-Chips 46 und 47 in fünf funktionelle Teile unterteilt. Der erste Teil (a) unterstützt den bidirektionalen Datenfluß zwischen dem Systembus und dem Speicher 40 und umfaßt zwei vollständige 4-Byte-ECCs. Der zweite Teil (b) ist die Hauptsteuerung, die als eine Ablaufsteuereinheit realisiert ist. Der dritte Teil (c) stellt die Matrixsteuerfunktionen bereit. Der vierte Teil (d) stellt die Datenflußsteuerung bereit. Der fünfte Teil (e) ist die Matrixsteuerungs-Wiederansteuerung. Der Entwurf und die durch die verschiedenen Teile dieser CMOS-Chips ausgeführten Vorgänge werden hierbei an späterer Stelle ausführlicher beschrieben.
  • Obwohl der Schnittstellen-Datenbus für die in Fig. 2 gezeigte Speicherkarte nach dem Stand der Technik die Anzahl der benötigten zugeordneten E/A auf ein Minimum herabsetzte, wurde die Anzahl der E/A für die Breite des Busses selbst ein bedeutender Gestaltungsfaktor. Ein breiter Datenbus außerhalb der Karte stellt für den Prozessor Schlüsselvorteile bezüglich der Leistung bereit. Wenn dieser Bus immer breiter wird, muß die Anzahl der Karten-E/A steigen. Da die Logik zumindest zwischen den Karten gesendete Signale puffern muß, muß die Anzahl der damit verbundenen E/A der Chips/Module ebenfalls zunehmen. Wenn die Anzahl der Chip-E/A steigt, nimmt die Größe des Chipbereiches zur Unterstützung dieser E/A zu, wodurch das Silikon für die benötigten Pufferschaltungen und alle hinzugefügten Logikelemente, die die Architektur der "intelligenten" Karte ausmachen, bereitgestellt wird. In der Tat sind der Karten-ECC und andere Funktionen zur Verbesserung der Zuverlässigkeit meistens frei.
  • Die Kartenaufteilung dieser E/A und der damit verbundenen Funktion kann auf eine von zwei Arten erreicht werden; entweder durch viele kleine, preiswerte Module oder ein oder zwei größere und teurere Module. Aus der Verwendung von nur einem oder zwei Modulen, wie in Fig. 3 gezeigt wird, ergaben sich Schlüsselvorteile. Folglich wurde für die vorliegende Erfindung eine Methode mit zwei Modulen gewählt, und die Kartenarchitektur mußte entwickelt werden, um diese Vorteile zu nutzen.
  • Die Kartenarchitektur wurde in einer Weise gestaltet, daß die 16-Byte-Schnittstelle 41, 42 mit den Matrizen 40, die 8-Byte- Schnittstelle 43, 44 mit dem System und die zugeordnete Kartenlogik symmetrisch halbiert werden konnten. Dies gestattete, daß eine Modulteilnummer zweimal auf der Karte verwendet werden kann. Dies reduzierte deutlich die Entwurfsentwicklung und den mit einer hinzugefügten Kartenteilnummer verbundenen Lagerungsaufwand. Obwohl die Logik ähnlich ist, müssen die zwei Logikmodule verschiedene Funktionen erfüllen. Dies wird durch eine zugeordnete Modulleitung bewirkt, die mit Masse verbunden oder auf den H-Pegel gesetzt wird, um die Logik anzupassen. Mit vier ECCs auf der Karte ist es nicht schwierig, die Logikfunktion über zwei oder vier Module hinweg zu partitionieren. Indem die Anzahl der Module unter vier gehalten wird, wird die Anzahl der Übertragungsleitungen zwischen den Modulen bei sechs gehalten. Wenn ECC-Abschnitte über Modulgrenzen hinweg aufgeteilt werden müssen, zum Beispiel beim Hauptspeicher für den IBM 9370 Prozessor, steigen die Chip-Durchlaufsignale deutlich an.
  • Um die Anzahl der Module auf zwei zu begrenzen, wurde die Matrixsteuerlogik mit der Datenflußlogik zusammen untergebracht. Wie in Fig. 2 zu sehen ist, weist IBM 9370 Hauptspeicher zwei Datenflußmodule 30 und 31, drei Matrixsteuerungs-Wiederansteuerungsmodule 26a, 26b und 26c und ein Hauptsteuerungsmodul 29 auf. Indem diese Logik innerhalb eines Moduls untergebracht wird, können zeitlich kritische Matrixsteuersignale (wie RAS-, CAS- und Adreßsignale) von einem Logikchip erzeugt werden. Dies verringert die Zeitabstände und erhöht die Zeitgrenzwerte, was zu einer Verbesserung der reinen Kartenleistung führt. Die Abstandsverringerung ergibt sich aus der mit dem Pfad, dem Prozeß und der Umgebung für die interne Logik und die Ansteuerelemente verbundenen Überwachung, die sich auf einem einzigen Chip befindet. Die Begrenzung der Anzahl der Module pro Karte führt zu einer Verringerung der Gesamtanzahl von Logikmodul-Anschlußstiften, sowohl für die Stromversorgung als auch für Signale. Diese Verringerung erklärt eine leichte Verbesserung der Zuverlässigkeit der Karte und eignet sich für eine bessere Nutzung der nutzbaren Fläche der Karte und eine bessere Kartenverkabelung.
  • Obwohl ein Modul den optimalen Lösungsweg dargestellt hätte, stand keine Packungstechnik zur Verfügung, um die Gesamtanzahl der E/A und die damit verbundenen gleichzeitig benötigten Leitungsumschaltungen zu verarbeiten. Es wurden letztendlich zwei anstelle von vier Modulen gewählt, um ein technisches Schlüsselproblem, das die unten erläuterte Datenverzahnung außerhalb der Karte betrifft, zu vermeiden. Das Vermeiden dieses Problems hing zu einem großen Teil mit der ausgewählten Architektur zusammen. Falls vier Logikmodule verwendet werden müßten, würde die funktionelle Partitionierung es erforderlich machen, daß jedem Modul ein ECC zugeordnet werden müßte. In diesem Falle würde die Datenverzahnung, die von 16-Bytes in der Matrix auf 8- Bytes im System umgesetzt werden muß, es erforderlich machen, daß die E/A von einem ECC-Modul an der Systemschnittstelle mit einer anderen physisch gekoppelt werden müßte. Dasselbe würde für die restlichen beiden ECCs stattfinden. Bei dieser gekoppelten Schnittstelle ist es sehr schwierig, eine hochohmige Steuerung des Ansteuerelements ordnungsgemäß durchzuführen. Die Verzahnung zwischen den Modulen muß zeitlich mit engen Toleranzen gesteuert werden, um der Busleistung zu entsprechen, und dennoch Probleme mit Buskonkurrenzsituationen, die die Ansteuerelemente beschädigen könnten, vermeiden. Die starke Belastung des Busses und interne Logik-Synchronisierungsfehler könnten es unmöglich machen, diese kritischen Zeitsteuerungen zu erfüllen. Die vorliegende Erfindung vermeidet dies, indem zugeordnete Paare von ECCs auf einem Modul angeordnet und deren Ausgänge intern über die Datenausgangs-Auswahlmultiplexer (59 in Fig. 4) "gekoppelt" werden. Die folgende Beschreibung bezieht sich auf diese Maßnahme bei Speicherdaten-Abrufvorgängen und bezieht die anderen elementaren Architekturkomponenten, die ebenfalls in Fig. 4 gezeigt werden, mit ein.
  • Mit Bezugnahme auf die Fig. 4 und 5 werden nun die Datenflußarchitektur und die Steuerlogik der intelligenten Speicherkarte gemäß der vorliegenden Erfindung in Form eines Blockdiagramms gezeigt. Ein Abrufbefehl wird zur Karte gesendet und von der Überwachungssteuerlogik (64 in Fig. 5) interpretiert. Diese Logik steuert die Matrixsteuerlogik (63 in Fig. 5) über den internen Steuerbus (66 in Fig. 5), um die Matrizen ordnungsgemäß für einen Abrufvorgang zu aktivieren. Auf die Zugriffszeit für die Matrizen bezogen, werden die Daten kurze Zeit später auf den internen Speicherbus ausgegeben und im Speicherabrufregister 51 vorübergehend gespeichert. Die Flußauswahllogik 52 wählt die Daten im Register 51 anstelle der Daten aus dem Speicherpuffer 53 oder dem internen Datenringleitungs-Register 54 aus. Der Ausgang der Flußauswahllogik 52 wird zur ECC- und Paritätsgenerator-Logik 55 geführt, deren Ausgang zum ECC-Ausgaberegister 57 geführt wird.
  • Der Block 56 in Fig. 4 stellt die internen Register dar, die durch Diagnosebefehle geladen oder gelesen werden können. Die Buchstaben in den runden Klammern liefern Informationen über die Register. Ein Steuerregister wird durch ein (c), ein Statusregister durch ein (s) und ein Datenregister durch ein (d) angezeigt. Die Buchstaben (r) und (w) werden verwendet, um jeweils anzuzeigen, ob das Register über den "mehrfach genutzten Datenbus" gelesen und/oder beschrieben werden kann. Obwohl alle Register in der Figur für Einzelheiten der Datenflußlogik gezeigt werden, befinden sich einige Register, wie das Programmregister, tatsächlich in der Steuerlogik (71 in Fig. 5), und einige Register, wie das Zeichenregister, werden zwischen der Datenfluß- und der Steuerlogik aufgeteilt.
  • Der Entwurf mit einem doppelten Zwischenspeicher, das heißt, ein Register 51 vor dem ECC 55 und ein Register 57 nach dem ECC, ist kritisch gegenüber einem synchronen Betrieb der ECC-Logik und gegenüber dem Senden von Daten im Pipeline-Verfahren durch den ECC, um eine ununterbrochene Datenausgabe zu erhalten. Die Paritätserzeugungs- und die ECC-Logik werden als ein einziger Block gezeigt, da einige der ECC-Codierungsschaltungen einem doppelten Zweck dienen, indem sie für jedes Datenbyte ein nicht korrigiertes Paritätsbit erzeugen. Falls eine Paritätskorrektur benötigt wird, findet sie in einer gesonderten, auf die Codierungslogik folgenden Schaltung statt. Für einen Abrufvorgang erzeugt und speichert die ECC-Logik außerdem Syndromdaten im Syndromstatusregister im Block 56. Dieses Syndrom wird für zukünftige Diagnosevorgänge, die in Verbindung mit dem Abrufvorgang durchgeführt werden können, gespeichert. Die ECC-Logik 55 erzeugt außerdem alle geeigneten Fehlersignale. Die abgerufenen Daten, die vorübergehend im ECC-Ausgaberegister 57, das 16 Byte breit ist (8 Byte pro Modul), gespeichert werden, werden anschließend über die Datenausgangs-Auswahllogik 59, das Datenausgangsregister 60 und den Bustreiber 61 zum externen Systembus gemultiplext. Das Multiplexen gibt 8 Byte aus, 4 Byte von einem ECC von jedem Modul, und anschließend 8 Byte von den anderen beiden ECCs. Zur Optimierung der Leistung wird die erste 8-Byte-Übertragung zur gleichen Zeit im ECC-Ausgangsregister 57 und im Datenausgangsregister 60 zwischengespeichert. Dis ist in genaueren Einzelheiten mit Bezug auf Fig. 7 im folgenden beschrieben. Aufgrund des Verarbeitens der Daten im Pipeline-Verfahren wird die Ausgabe des ECC-Ausgangsregisters 57 außerdem über den internen Datenringleitungsbus zum internen Datenringleitungsregister 54 gesendet und zwischengespeichert. Dies erfolgt in Erwartung der möglichen Aktivierung eines erweiterten ECC-Vorgangs. Dieses Register würde die "fehlerhaften" Daten für die nachfolgenden Schritte des XECC-Vorgangs, das Umkehren und das Rückspeichern in den Speicher, zwischenspeichern.
  • Die Architektur der Steuerlogik der intelligenten Speicherkarte gemäß der Erfindung wird in Fig. 5 gezeigt. Diese Logik umfaßt drei Hauptkomponenten: eine Matrixsteuerlogik und -Wiederansteuerung 63, einen Supervisor 64 und eine Datenfluß-Steuerlogik 65. Alle diese Komponenten sind durch einen internen Steuerbus 66 untereinander verbunden und empfangen interne Taktsignale auf der Leitung 67 von der Taktgeberlogik 68. Die Matrixsteuerlogik 63 umfaßt einen Aktualisierungszähler 69 und einen Bereinigungszähler 70, die in einem späteren Abschnitt mit Bezugnahme auf Fig. 18 ausführlicher beschrieben werden. Der Supervisor 64 ist die Hauptablaufsteuereinheit, die die Ablaufsteuereinheiten, die die Matrix- und Datenfluß-Steuerlogikschaltungen 63 und 65 bilden, ansteuert. Das enthaltene Programmregister 71 wird verwendet, um die Ablaufsteuereinheit für den geeigneten Kartentyp und die Systemanwendung zu initialisieren/anzupassen. Die Datenfluß- Steuerlogik 65 beinhaltet ein Register für spezielle Funktionen (SPR) 72. Das SPR wird hauptsächlich verwendet, um die Datenfluß-Steuerlogik 65 für eine Vielzahl von Diagnose- und Selbsttestvorgängen anzupassen. Das Programmregister 71 und das SFR 72 sind Teile der in Fig. 4 gezeigten Diagnosestatusregister und internen Steuerregister 56.
  • Die Datenflußarchitektur für die Speicherkarte aus Fig. 3 wird in Fig. 6 ausführlicher gezeigt, in der die gleichen Bezugsziffern, wie sie in Fig. 4 verwendet werden, die gleichen oder ähnliche Schaltungen anzeigen. In Fig. 6 zeigen die zu einer Bezugsziffer hinzugefügten Suffixe "a" und "b" jeweils eine gerade und ungerade Datenübertragungslogik an. Um einen Schlüsselteil des Datenflusses besser zu zeigen, wird auf Fig. 7 Bezug genommen, die eine vergrößerte Ansicht der Logik im angezeigten gestrichelten Bereich des Datenflußdiagramms von Fig. 6 ist.
  • Der erste zu beschreibende Aspekt der intelligenten Speicherkarte gemäß der Erfindung ist die Leistung. Dieser Abschnitt richtet sich auf das Schlüsselproblem der Abruf- und Speicherübertragungsgeschwindigkeit und die damit verbundenen Lösungen. Außerdem werden andere einzigartige Architektur- und Schnittstellenverfahren zur Verbesserung der Gesamtleistung der Speicherkarte beschrieben.
  • Um eine Datenübertragungsgeschwindigkeit von 8 Byte pro Karte alle 27 ns aufrechtzuerhalten, wie es von der IBM 9370 Computerserie der neuen Generation gefordert wird, verwendet die Speicherkartenarchitektur zwei Arten der Verzahnung auf der Karte. Die erste Art beinhaltet den Seitenmodus-Vorgang, der ein Bestandteil der meisten, gegenwärtig verwendeten dynamischen Arbeitsspeicher-(DRAM-)Matrizen ist. Die zweite Art ist die Bearbeitung auf der Karte zwischen dem internen 16-Byte-Matrixbus und dem externen 8-Byte-Systembus. Die Architektur der "intelligenten" Speicherkarte gemäß der Erfindung gestattet diese Verzahnung in Verbindung mit der unten beschriebenen einfachen Schnittstelle und könnte für eine Vielzahl von Verzahnungsschemas verwendet werden, um verschiedenen Leistungsansprüchen gerecht zu werden.
  • Das Zeitsteuerungsdiagramm wird in Fig. 8 gezeigt. Die Verzahnung der Aktivierungsimpulsleitungen für die Adressenspalte (CAS) der Matrix während eines aktiven Matrix-Seitenmodus-Vorgangs gestattet schnellere Datenübertragungen zu und von einem Speicher als dies mit antiparallel geschalteten Abrufen oder Speichervorgängen möglich ist. Mit Bezugnahme auf Fig. 8 wird beispielsweise der Aktivierungsimpuls für die Adressenzeile (RAS) der Matrix zu allen Matrizen in einem Paar von Speichergruppen aktiviert (L-Pegel) und während eines Seitenmodus-Abrufvorgangs aufrechterhalten. Anschließend wird der CAS zur Gruppe A aktiviert, um 16 Byte aus dem Speicher abzurufen, gefolgt von der CAS-Aktivierung zur Bank B, um weitere 16 Byte abzurufen, gefolgt von weiteren 16 Byte von der Gruppe A und schließlich 16 Byte von der Gruppe B. Diese vier 16-Byte-Matrixübertragungen werden anschließend über die doppelten 16-Byte-Register (51 und 57 in Fig. 4) im Pipeline-Verfahren durch die ECC-Logik gesendet. Die vorliegende Erfindung ist für nur zwei Seitenzyklen pro Gruppe von Matrizen eingerichtet. Ein Seitenmodus-Vorgang kann jedoch aus vielen CAS-Aktivierungen während einer RAS-Aktivierung bestehen. Folglich kann die tatsächliche Anzahl von 16-Byte-Matrixübertragungen für jeden Mehrfachabrufvorgang deutlich erhöht werden. Um die Leistung für eine Vektorverarbeitung zu verbessern, könnte die Anzahl von Seitenzyklen pro Matrixgruppe erhöht werden. Die Seitengrenzwerte für genutzte Matrizen würden heutzutage mehr als genug Leistungsfähigkeit bereitstellen.
  • Jede 16-Byte-Matrixübertragung zu oder von einem Speicher wird anschließend auf der oder außerhalb der Karte mit geraden und ungeraden Systemdatenübertragungen verzahnt. Das 16-Byte-zu-8- Byte-Multiplexen von Daten bei einem Abruf wird durch die Ausgangsmultiplexer-(MUX-)Schaltungen 73 und 74 durchgeführt. Die 8-Byte-zu-16-Byte-Umsetzung in Speichern wird ausgeführt, indem die empfangenen Systemdaten jeweils zu sowohl den geraden als auch den ungeraden Abschnitten des Speicherpuffers 125a oder 126a und 125b oder 126b (in Fig. 6) geleitet werden und anschließend nur der geeignete Zwischenspeicherbereich für die entsprechende Systemübertragung aktiviert wird.
  • Die 16-Byte- und 8-Byte-Umsetzung bei Abrufen wird durch die folgende Beschreibung mit Bezugnahme auf die Fig. 6 und 7 dargestellt. Sogar Übertragungen von den LGA-Zwischenspeichern 51a werden zum ECC A 55a geleitet, während ungerade Übertragungen von den LGA-Zwischenspeichern 51b zum ECC B 55b geleitet werden. Die Ausgaben vom ECC A 55a und vom ECC B 55b werden jeweils in den LGB-Zwischenspeichern 57a und 57b gespeichert, deren Ausgänge mit einem langsamen Multiplexer (MUX) 73 verbunden sind. Die Ausgaben vom ECC A 55a und vom ECC B 55b werden außerdem zusammen mit der Ausgabe des Multiplexers 73 zu einem schnellen Multiplexer (MUX) 74 gesendet. Der Ausgang des schnellen MUX 74 ist über den Systemübertragungs-Zwischenspeicher 60 mit den Ansteuerelementen 61 verbunden, die die Schnittstelle zum Systembus bereitstellen. Die erste 8-Byte-Übertragung des Abrufs wird stets über den schnellen Multiplexerpfad 0 oder 1 und die zweite 8-Byte-Übertragung wird über den schnellen Multiplexerpfad 2 geleitet. Die erste 8-Byte-Übertragung wird zur selben Zeit im Systemübertragungs-Zwischenspeicher 60 gespeichert, wie die damit verbundene 16-Byte-Matrixübertragung in den LGB-Zwischenspeichern 57 gespeichert wird.
  • Wie in den folgenden Beispiel gezeigt wird, kann eine Speicherkarte in einer Systemkonfiguration im unteren Kosten- und Leistungsbereich vier aufeinander folgende 16-Byte-Übertragungen aus dem Speicher abrufen, indem die CAS-Leitungen verzahnt werden und diese 64 Datenbytes anschließend in acht 8-Byte-Übertragungen auf den Systembus übertragen werden. Diese beiden Verzahnungsmaßnahmen gestatten, daß die Daten im Pipeline-Verfahren so durch die Fehlerkorrekturcode-(ECC-)Schaltungen 55a und 55b geleitet werden, daß alle acht Datenübertragungen zusammenhängend sind und bei der minimalen Systemtaktgeschwindigkeit erfolgen. Das Zeitsteuerungsdiagramm für dies wird in Fig. 9 gezeigt. In Fig. 9 zeigen die Zahlen in runden Klammern an, welche Registerzwischenspeicher aktiviert werden, wenn sich der Zeitsteuerungsimpuls auf einem H-Pegel befindet. Die Buchstaben a/b zeigen an, daß sowohl gerade (a) als auch ungerade (b) Daten (vollständige 16 Byte) zur selben Zeit zwischengespeichert werden.
  • Um der Übertragungsgeschwindigkeit von 27 ns bei Abrufvorgängen zu entsprechen und eine optimale Flexibilität der Datensteuerung zu gestatten, mußte eine einzigartige Ausgangsmultiplexer- und Zwischenspeicher-Schaltung entwickelt werden. Diese Schaltung mußte zwei kritische Zeitsteuerungspfade erfüllen. Ein Pfad ist die interne Verzögerung vom Zwischenspeicher 51 zum Zwischenspeicher 57 durch die ECC-Abruflogik, und der andere Pfad ist der Zwischenspeicher 60 zur Systembusausgabe. Die für die Zwischenspeicher-Zwischenspeicher-Verzögerung über den Systembus erforderlichen 27 ns verhinderten die Anordnung einer kombinatorischen Logik zwischen den Systemzwischenspeichern 60 und den Ansteuerelementen 61. Folglich mußte die Multiplexerlogik für die Verzahnung von der 16-Byte-Matrixübertragung zur 8-Byte-Systemübertragung zwischen den internen ECC-Zwischenspeichergruppen angeordnet werden. Dies erzeugte das Problem, die ersten 8 Byte von jeder Matrixübertragung (entweder gerade oder ungerade) rechtzeitig durch die ECC-Schaltungen 55a und 55b laufen zu lassen, damit sie in den Systemzwischenspeichern 60 gespeichert und anschließend sofort ausgegeben werden. Dieses spezielle Zwischenspeicher- und Multiplexerschema wird für die Daten- und Paritätsbits, sowie für einige der Fehlersignale verwendet. Die folgende Beschreibung liefert Einzelheiten dieses Schemas.
  • Um das Verstehen der folgenden Beschreibung zu erleichtern, bedeutet der Begriff "normaler Abruf", daß kein Datenumlauf über die 64-Byte-Grenze (4-Matrix-Übertragung) erfolgt. Folglich sind Übertragungsfolgen 01234567, G34567, 456, G7, usw. gestattet;
  • 12345670, 670123, 70, usw. sind jedoch nicht gestattet. Die Folge 01234567 wird im Zeitsteuerungsdiagramm von Fig. 9 gezeigt. Der Begriff "Seitenabruf" bezieht sich nur auf komplette acht Übertragungsvorgänge, bei denen Grenzüberschreitungen gestattet sind. Beispiele für gerade Startfolgen sind 23456701, 67012345, usw. Beispiele für ungerade Startfolgen sind 10325476, 54761032, usw.
  • Bei normalen Abrufe oder Seitenabrufen, die die gerade (ECC A 55a) Systemübertragung zuerst aussenden, werden die folgenden Maßnahmen durchgeführt. Der 16-Byte-Matrixabruf wird im LGA 51a und 51b von beiden Modulen auf der Karte zwischengespeichert. Diese Stelle wird für einen Abruf in Fig. 9 an der Taktposition 3 gezeigt. Die vier ECCs in beiden Modulen verarbeiten diese Daten, und die kompletten 16 Byte werden im LGB 57a und 57b an der Taktposition 5 zwischengespeichert. Die im LGB 57a und 57b zwischengespeicherten 16 Byte speichern die Daten für die zweite 8-Byte-Systemübertragung, während die nächste 16-Byte-Matrix- Übertragung, die zur gleichen Zeit im LGA 51 an der Taktposition 5 zwischengespeichert wird, im Pipeline-Verfahren durch die ECC- Logik 55a und 55b läuft. Die zwischengespeicherten LGB-Daten werden außerdem für eine vollständige interne 16-Byte-Datenringleitung (plus Prüfbits) verwendet, falls der erweiterte ECC aufgerufen wird. Für diesen besonderen Fall (gerade zuerst) werden die 8 Byte von jedem ECC A 55a außerdem zur selben Zeit (Taktposition 5) über den Pfad 0 des "schnellen Multiplexers" 74 zu den Systemzwischenspeichern 60 geleitet und anschließend auf den Systembus geleitet. Beim nächsten Takt (Taktposition 6) werden die zuvor zwischengespeicherten 8 Byte aus jedem ECC B 55b vom LGB 57b über den Pfad 1 des "langsamen Multiplexers" 73 und den Pfad 2 des schnellen Multiplexers 74 zu den Systemzwischenspeichern 60 geleitet. Folglich werden die zusammenhängenden 8- Byte-Übertragungen außerhalb der Karte von 4 Byte von einem Modul und 4 Byte von dem anderen gebildet.
  • Bei normalen Abrufen, die die ungerade (ECC B 55b) Systemübertragung zuerst aussenden, werden die Daten im LGA 51a, 51b und im LGB 57a, 57b zwischengespeichert und von den ECCs 55a und 55b auf dieselbe Weise wie im vorherigen Fall verarbeitet. Die Daten des ECCs B 55b werden jedoch nicht zur LGB-Zeit (Taktposition 5) in den Systemzwischenspeichern gespeichert. Es wird eine Ein- Taktzyklus-Verzögerung verwendet, um einen Abstand vor der nächsten Datenübertragungsfolge zu erhalten, wobei die Speicherung der ungeraden Daten im Systemzwischenspeicher 60 an der Taktposition 6 erhalten wird und gestattet wird, daß die Übertragungsfolge für diesen Fall zusammenhängend ist. Infolgedessen wird dasselbe Multiplexerschema vom LGB zum Systemzwischenspeicher, das für den ersten Fall verwendet wurde, beibehalten, wobei der Eingang des Pfades 0 des "schnellen Multiplexers" 74 zu den Systemzwischenspeichern zur LGB-Zeit blockiert wird.
  • Bei Seitenabrufen, die die ungerade (ECC B 55b) Systemübertragung zuerst aussenden, muß die ungerade Übertragung sofort ohne einen vor ihr befindlichen Abstand ausgesendet werden. In diesem Fall werden die Systemzwischenspeicher zur LGB-Zeit (Taktposition 5) über den Pfad 1 des "schnellen Multiplexers" 74 mit den Daten des EEC B geladen. Beim nächsten Takt (Taktposition 6) werden die zuvor zwischengespeicherten 8 Byte von jedem ECC A 55a über den Pfad 0 des "langsamen Multiplexers" 73 und über den Pfad 2 des "schnellen Multiplexers" 74 vom LGB 57a zu den Systemzwischenspeichern geleitet.
  • Alle befehlsaktivierten Diagnosedatenübertragungen zum Systembus kommen von "LGB-ähnlichen" Zwischenspeichern, die Daten von einem früheren Zyklus speichern. Da der lange LGA-ECC-Pfad an der ersten Busübertragung nicht beteiligt ist, werden alle Diagnosebefehls-Abrufübertragungen über die "langsamen Multiplexer" 73 geleitet. Um die Anzahl der für die Speicherkarte gemäß der Erfindung benötigten Diagnoseabrufe anzupassen, wird ein zusätzlicher Pfadeingang (3) des "langsamen Multiplexers" 73 zum "schnellen Multiplexer" 74 hinzugefügt, um einen symmetrischen 4-zu-1-Multiplexer daraus zu bilden. Die "langsamen Multiplexer" 73 können so breit wie nötig gemacht werden. Diese Zunahme der Breite betrifft die zuvor erwähnte Zunahme der Übertragungstiefe, die durch die Flexibilität des mehrfach genutzten Datenbusses erhalten werden kann. Diagnosedatenübertragungen, die nicht befehlsbezogen sind, sondern die Einstellungen des internen Registers für spezielle Funktionen (SPR) (56 in Fig. 4) betreffen, werden in den Datenpfad vor den LGB-Zwischenspeichern und den Ausgangsmultiplexern geleitet. Folglich werden ihre Übertragungen gemäß einem der obigen drei Fälle bearbeitet.
  • Wie in Fig. 10 gezeigt wird, stellt die Verwendung von vier separaten 4-Byte-ECCs 75, 76, 77 und 78 auf der Karte ein Mittel zur Durchführung von 4-Byte-Direktspeichervorgängen bereit, auch wenn der Kartenmatrixbus 16 Byte breit ist. Dies ist entscheidend für die Systemleistung, wenn kein Cache vorhanden ist, da mehrere der Hauptspeichereinheiten weniger als 16 Byte breit sind. Mit dieser besser unterteilten ECC-Lösung können alle Speicherungen, die an der ECC-Grenze in 4-Byte-Schritten beginnen, als direkte Speicherungen erfolgen. Wenn direkte Speicherungen nicht durchgeführt werden können, werden zusätzliche Zyklen für einen Lese-/Änderungs-/Schreib-(RMW-)Vorgang benötigt, um dieselben Ergebnisse zu erhalten.
  • Die Verwendung von vier 4-Byte-ECCs gestattet außerdem, daß die Speichermatrizen in einer Mal-4-(x4-)Konfiguration anstelle einer Mal-1-(x1-)Konfiguration verwendet werden können. Die Mal-4-Verwendung der Matrizen, vier Daten-E/A pro Chip, gestattet eine bessere Speicherunterteilung. Das heißt, für eine gegebene Speicherchipdichte kann eine geringere Kartenadressendichte erreicht werden, indem die Tiefe des Speichers innerhalb einer einzelnen Gruppe durch eine Steigerung der E/A-Breite der Matrizen innerhalb dieser Gruppe verringert wird. Um beispielsweise eine 16-Byte-Bandbreite unter Verwendung von 512K·2-Matrizen zu erhalten, werden 80 Matrizen benötigt. Die zusätzlichen Matrizen sind zur Prüfung und für die mit jedem ECC verbundenen Reservebits vorhanden. Folglich beträgt die Speichertiefe der Gruppe 512 KB, und die Gruppengröße beträgt 8 Megabyte (MB). Die kleinste Zwei-Gruppen-Karte umfaßt 16 MB. Es müssen stets mindestens zwei Gruppen für die benötigte Verzahnung, die zuvor beschrieben wurde, vorhanden sein. Falls die 1-MB-DRAMs mit 256K·4 konfiguriert sind, werden nur 40 Matrizen benötigt, um die 160 Bit für die Gruppe zu erhalten (128 Bit für die 16 Byte, 28 Bit für die Prüfbits, plus vier Reservebits) . Folglich ist eine Gruppe nur 256 KB tief und 4 MB groß. Die kleinste Zwei-Gruppen-Karte kann nun lediglich 8 MB umfassen. Das komplette Spektrum von Kartendichten für den Prozessor wird erreicht, indem mehrere Matrixgruppen mit derselben Breite hinzugefügt werden. Durch die Mal- 4-Konfiguration zur Verringerung der Unterteilung und das Vorhandensein von vier ECCs für ein effizientes direktes Schreiben wurde ein Schlüsselvorteil realisiert, indem der interne Matrixbus, wie in Fig. 10 dargestellt wird, auf eine bestimmte Weise strukturiert wird. Die E/A 1 von jeder Matrix werden zum ersten ECC 75, die E/A 2 von jeder Matrix zum zweiten ECC 76, die E/A 3 von jeder Matrix zum dritten ECC 77, und die E/A 4 von jeder Matrix werden zum vierten ECC 78 geleitet. Auf diese Weise betrifft ein großer Matrixfehler, wie ein Chipausfall, meistens nur ein Bit pro ECC-Wort. Dies ermöglicht, daß die Einzelfehlerkorrektur-(SEC-)Hardware am effizientesten arbeitet, um den Fehler zu erfassen.
  • Die redundante Matrix weist ebenfalls eine Mal-4-Konfiguration auf. Auf diese Weise kann für jedes ECC-Wort ein Redundanzbit (Reservebit) bereitgestellt werden. Die Logik hat die Fähigkeit, zu ermöglichen, daß alle vier Bits der redundanten Matrix ausgelagert werden, um einen Chipausfall zu ersetzen, oder nur ein Teil der Bits ausgelagert wird, um Chip-E/A-Fehler zu ersetzen. Es werden Redundanzbit-Adressenregister auf dem Chip bereitgestellt, um diese Auslagerung für jeden, individuellen Forderungen entsprechenden ECC zu steuern. Es sind außerdem zusätzliche Redundanzbit-Adressenregister vorhanden, um eine separate Steuerung zwischen Matrixgruppen auf der Karte bereitzustellen. Folglich kann die redundante Matrix in einer Gruppe einen Chipausfall in Position 1 auslagern, während die redundante Matrix in einer anderen Gruppe einen Chipausfall in Position 9 auslagern kann. Es sei darauf hingewiesen, daß die kombinierte Wirkung von vier ECCs und die Verwendung der Matrizen in einer Mal- 4-Konfiguration nur vollständig realisiert werden kann, wenn Matrizen mit Datenauswahlen verwendet werden. Folglich stellt die Verwendung von 1-MB- und 4-MB-Matrizen mit individuellen Datenauswahlen gegenüber Standardmatrizen, die keine Datenauswahlen aufweisen, einen Schlüsselvorteil hinsichtlich der Leistung bereit.
  • Mit erneuter Bezugnahme auf Fig. 4 wird die Auswirkung der ECC- Logikverzögerungen in der Speicherkarte gemäß der Erfindung auf ein Minimum herabgesetzt, indem für Abrufvorgänge eine einzigartige Doppelzwischenspeicher-Gruppe 51 und 57 und eine Datenflußgestaltung, die die Anzahl der Schaltungen ebenfalls erheblich verringert, verwendet werden. Für Speichervorgänge ist das Doppelzwischenspeicher-Paar 53 und 57, und für Vorgänge, die eine interne Datenringleitung benötigen, wäre das Doppelzwischenspeicher-Paar 54 und 57. Das Schema der synchronen Doppelzwischenspeicher, bei dem Daten im ECC 55 gespeichert und aus diesem abgerufen werden, ermöglicht, daß Daten mit einer hohen Geschwindigkeit im Pipeline-Verfahren durch den ECC 55 geleitet werden. Zusätzlich verbessert der ECC-Eingangsspeicher 51 bei einem Abruf die gesamte ECC-Leistung, indem die Daten in den ECC-Codierungsschaltungen synchronisiert werden. Dies ist entscheidend, wenn eine oder mehrere Matrizen fehlerhaft sind und ihr Datenausgang sich auf einem unbestimmten Pegel befindet. Der Eingangsspeicher zwingt diese Daten entweder auf einen gültigen oder einen fehlerhaften Status, wobei beide durch den ECC und, falls notwendig, durch den XECC verarbeitet werden können. Die Synchronisierung am ECC-Ausgang stellt sicher, daß alle Daten und die Parität gültig sind, wenn bei einem Abruf eine Übertragung zum System stattfinden muß, insbesondere wenn ein Bit korrigiert wird, und daß gültige Prüfbits für eine Übertragung zu den Matrizen erzeugt wurden, falls ein Speichervorgang durchgeführt wird.
  • Die synchrone Gestaltung der Doppelzwischenspeichers gestattet außerdem eine Flexibilität hinsichtlich der verschiedenen Taktfrequenzen. Der Fluß durch den ECC 55 kann auf die Taktfrequenz abgestimmt werden, indem die Daten durch ein Vielfaches der Taktfrequenz, die einen ausreichenden Zeitgrenzwert für den langsamsten Zwischenspeicher-Zwischenspeicher-Pfad gestattet, im Pipeline-Verfahren von Zwischenspeicher zu Zwischenspeicher übertragen werden. Der Prozessor im unteren Kosten- und Leistungsbereich, der die Speicherkarte gemäß der Erfindung verwendet, hat eine Taktrate von 40 ns; folglich wird der ECC-Pfad für einen Abruf auf eine Taktverzögerung von den LGA-Zwischenspeichern 51 zu den LGB-Zwischenspeichern 57 abgestimmt. Dasselbe würde für einen Speichervorgang gelten. Für die Taktrate von 27 ns des Prozessors im oberen Leistungsbereich sind zwei Taktzyklen für die internen Zwischenspeicher-Zwischenspeicher-Übertragungen gestattet. Um Ein-Takt-Übertragungen über den externen Systembus bereits zustellen, werden die internen Zwischenspeichergruppen der Karte so um die interne Logik angeordnet, daß die Verzögerung von den Empfängern zu den Zwischenspeichern und von den Zwischenspeichern zu den Treibern begrenzt wird. Das Entwicklungsziel war, daß keine kombinatorische Logik zwischen ihnen vorhanden ist.
  • Um die zum Durchlauf durch die interne Abrufpfadlogik benötigte Zeit auf ein Minimum herabzusetzen, erfolgt die Paritätserzeugung parallel zur ECC-Codierungsschaltung. In der Tat besteht ein großer Teil der Paritätserzeugungslogik aus Teilen der Codierungslogik, wodurch Schaltungen eingespart werden. Um eine mögliche Datenbitkorrektur innerhalb eines Bytes durch den ECC zu berücksichtigen, weisen die Paritätsbits in ihren Pfaden exklusive ODER-Elemente zur Korrektur auf, die denjenigen in den Datenpfaden ähnlich sind. Falls irgendein Bit in einem Byte korrigiert (invertiert) wird, wird das zugeordnete Paritätsbit invertiert, um eine korrekte Parität auf dem Systembus aufrechtzuerhalten.
  • Die Anzahl der Schaltungen wird durch diese Architektur erheblich verringert, indem der Zwischenspeicherfluß durch den ECC und andere interne Logikelemente unidirektional ist. Dies gilt für alle Vorgänge, die interne Ringleitungen für den XECC und RMW beinhalten. Dies verringert indirekt die gesamten ECC-Pfadverzögerungen, indem die Belastung der Einheiten auf ein Minimum herabgesetzt wird und die Länge der Chipdrähte abnimmt. Der Effekt des bidirektionalen Datenflusses auf dem Chip wird, wie in Fig. 4 dargestellt wird, durch die einzigartige Leitung zwischen den Zwischenspeichergruppen 51, 53, 57 und 60 und durch die Paare von System- und Speicheransteuerelementen und -empfängern 61, 62 und 50, 58 erreicht. Die ECC-Ausgangszwischenspeicher 57 speisen den Speicher bei Speichervorgängen direkt und gehen während Abrufvorgängen durch die Ausgangsschaltung 60 zum System. Die Zuführung zu den ECC-Eingangszwischenspeichern 51 und 53 erfolgt bei Abrufen durch die Speicherempfänger 50 und bei Speicherungen durch die Systemempfänger 62.
  • Ein Schlüsselmerkmal der Kartenschnittstelle ist der breite, mehrfach genutzte Datenbus. Die Verwendung dieses Busses begrenzt die Anzahl von Steuereingängen und Status- und Fehlerausgängen, die zur ordnungsgemäßen Kartenfunktion zu dieser Speichersystem-Schnittstelle hinzugefügt werden müssen. Folglich ist er die Schlüssellösung für die Funktion hinsichtlich der in der Kartengestaltung vorgesehenen Ein-/Ausgabe-(E/A-)Beschränkung des Chips/Moduls. Der mehrfach genutzte Datenbus ist außerdem die Schlüssellösung für die erforderliche Kartenflexibilität. Auf der Modul-E/A-Ebene ist die Spezifikation des mehrfach genutzten Busses die folgende:
  • Modul-E/A-Bus (45 Gesamtbits)
  • a) Bytes 1 bis 3 für bidirektionale Daten- oder Adresseneingabe (24)
  • b) Byte 0 für bidirektionale Daten- oder Befehls-, Feldlängeneingabe (08)
  • c) Zusatzbyte für die Eingabe von Byte 0 des anderen Moduls (08). (Es sei darauf hingewiesen, daß dieser Mehrfachanschluß gestattet, daß der einzelne Eingang der Befehls- uns Feldlängeninformationen an den Kartenkontakten von den Logikmodulen gemeinsam genutzt werden kann.) Diese Zusatzbyte- Kartenebene, die zu den beiden Logikmodulen führt, ist in Fig. 11A gezeigt.
  • d) Bidirektionale Paritätsbits 0 bis 4 für die vier bidirektionalen Datenbytes (04)
  • e) Paritätsbiteingang für das Zusatzbyte (01).
  • Der mehrfach genutzte Datenbus verringert die Gesamtanzahl von Karten-E/A-Signalen an der Systemschnittstelle, indem verschiedene Eingabe- und Ausgabedatenfelder über dieselben Busleitungen gemultiplext werden. Die tatsächlichen Multiplexzuweisungen mit der Daten- und Adreß-/Befehls-/Feldlänge wird in Fig. 11B gezeigt. Das Datenbyte 0 des Moduls L (Fig. 11A) wird beispielsweise mit dem Feldlängenteil des "Befehls"-Wortes, das zur Karte gesendet wird, wenn die Auswahl (SEL) ausgelöst wird, gemultiplext. Es sei darauf hingewiesen, daß das Zusatzbyte (durch DROP gekennzeichnet) nur für das "Befehls"-Wort und nicht für alle Datenwortübertragungen vorhanden ist. Die zugeordneten Paritätsbits werden in Fig. 11B nicht gezeigt. Am wichtigsten ist, daß dies eine direkte Verringerung der Chip-E/A-Signalanschlüsse und der Modul-E/A-Signalanschlüsse auf der Kartenlogik betrifft. Die spezifischen Datenfelder des mehrfach genutzten Busses sind für die bevorzugte Ausführungsform der "intelligenten" Speicherkarte im folgenden aufgelistet:
  • 1) Eingabefelder
  • a) Befehl/Feldlänge/Adresse ("Befehls"-Wort)
  • b) Normale Speicherdaten (einschließlich Parität)
  • c) Diagnosedaten (1)
  • Steuerregisteranschlüsse
  • i) Register für spezielle Funktionen 72 (interne Steuerung der Datenflußlogik) (Einleitung eines nicht befehlsbezogenen Diagnosevorgangs)
  • ii) Redundanzbit-Adressenregister 56d (steuern interne Bitauslagerung)
  • iii) Programmregister 71 (Initialisierung der internen Steuerlogik)
  • Datenregisteranschlüsse 56f
  • i) Prüfbitregister
  • ii) Redundanzbitregister
  • d) Diagnosedaten (2)
  • Datenringleitungs-Speicher
  • Direkte Prüfspeicher und redundante Bitspeicher
  • Speicher ohne ECC
  • 2) Ausgabefelder
  • a) Normale Abrufdaten (einschließlich Parität)
  • b) Diagnosedaten (I)
  • Steuerregister-Lesevorgänge
  • i) Register für spezielle Funktionen 72
  • ii) Redundanzbit-Adressenregister 56d
  • iii) Programmregister 71
  • iv) Maskenregister 56c
  • Datenregister-Lesevorgänge
  • i) Prüfbitregister 56f
  • ii) Redundanzbitregister 56f
  • Statusregister-Lesevorgänge
  • i) Syndromregister 56a
  • ii) Prüfinformationen 56b
  • iii) Erweiterte ECC-Zähler 56e
  • d) Diagnosedaten (2)
  • Datenringleitungs-Abrufe
  • Direkte Prüfabrufe und Redundanzbitabrufe
  • Abruf ohne ECC.
  • In der obigen Auflistung bezieht sich Diagnosedaten (1) auf diejenigen, die befehlsgesteuert sind. Zur Befehlsauflistung muß auf Fig. 12 Bezug genommen werden. Diagnosedaten (2) bezieht sich auf diejenigen, die durch die Einstellungen des Registers für spezielle Funktionen (SFR) 72 gesteuert werden. Es sei darauf hingewiesen, daß das Laden des SFRs 72 befehlsgesteuert ist. Es muß auf den Befehl HEX 060 in Fig. 12 Bezug genommen werden. Es sei darauf hingewiesen, daß Fig. 12 außerdem ein Diagramm "Hexadezimalcode-Interpretation" und Beispiele enthält.
  • Die Logik auf der Speicherkarte ist in zwei Hauptbereiche unterteilt: 1) die Steuerlogik, 46b bis e oder 47b bis e, die aus einem Supervisor 64 (Steuerung der Ablaufsteuereinheit), einer Matrixsteuerlogik 63 und einer Datenfluß-Steuerlogik 65 besteht; und 2) die Datenflußlogik selbst, 46a oder 47a, die die ECC-Logik und die Redundanzbit-Auslagerungslogik und verschiedene Datenleitpfade zwischen dem Kartenmatrixbus und dem Systembus außerhalb der Karte enthält.
  • Der mehrfach genutzte Datenbus bearbeitet die meisten der Steuereingangssignale über die Befehls- /Feldlängen- /Adressenübertragung zur Kartenauswahlzeit (aktiver SEL-Eingang) oder über interne Register, die durch einen der Diagnosebefehle (die in Fig. 12 gezeigten Befehle 060 oder 0D0) geladen werden. Die einzigen beiden zugeordneten Modul-E/A, die hinzugefügt werden mußten, außerhalb dieses Busses andere als diejenige für Takt- und Treibersteuerungsmakros (17 Signale) und außerhalb des Systems verwendete Matrixtestsignale (2), werden unten aufgelistet. Die Takt- und Treibermakro-Ein-/Ausgaben werden hier nicht angesprochen, da sie auf den meisten oder allen Karten im System standardmäßig vorhanden sind.
  • Minimierter Satz von Steuereingängen
  • 1) SEL: Kartenauswahlsignal
  • 2) REP: Kartenaktualisierungs-Aktivierungssignal.
  • Der mehrfach genutzte Datenbus bearbeitet die meisten der Status- und Fehlersignale über Diagnose-Abrufbefehle (die in Fig. 12 gezeigten Befehle 160 oder 1D0). Die einzigen Statusmodul- E/A, die außerhalb des mehrfach genutzten Busses hinzugefügt werden mußten, werden unten aufgelistet:
  • Minimierter Satz von Status-/Fehlerausgängen
  • 1) BUSY: Statussignal für Belegtzustand der Karte
  • 2) XFER: Statussignal für gültige Datenübertragung zum System
  • 3) MCL: Signal für Maschinenfehler
  • 4) MBE: Signal für Mehrfachbitfehler
  • 5) SBE: Signal für Einzelbitfehler
  • 6) UCE: Signal für unkorrigierbaren Fehler.
  • Die einzige verbleibende Modul-E/A, die nicht durch den mehrfach genutzten Datenbus bearbeitet wird, und die zuvor erwähnten Signale sind die zwischen den Logikelementen benötigten Signale zur Übertragung über den Chip, die unten aufgelistet werden:
  • 1) MSYNC: Maschinenfehler-Synchronisierungssignal
  • 2) XSYNC: Synchronisierungssignal für erweiterten ECC
  • 3) SSYNC: Beseitigungs-Synchronisierungssignal
  • 4) MACKN: Maschinenfehler-Bestätigungssignal
  • 5) XACKN: Bestätigungssignal für erweiterten ECC
  • 6) SACKN: Beseitigungs-Bestätigungssignal.
  • Obwohl diese Schnittstelle der Speicherschnittstelle in dem früheren IBM 9370 Prozessor teilweise ähnelt, stellt eine wesentliche Verbesserung der Art und Weise, wie Befehle bearbeitet werden, eine größere Funktionsfähigkeit, eine höhere Flexibilität und weniger Systembefehle bereit. Die Speicherschnittstelle des früheren IBM 9370 Prozessors weist ein 7-Bit-Befehlsfeld auf, in dem alle Bits decodiert werden, um eine feststehende Anzahl von dedizierten Befehlen bereitzustellen. Dies war für die Diagnosebefehle ausreichend, es war jedoch etwas einschränkend für Abruf-, Direktspeicherungs- und Lese-/Änderungs-/Schreib- (RMW-) Vorgänge. Dieses etwas zufällige Decodierungsschema stellte nur sechs verschiedene Speicher-"Längen" und sechs verschiedene Abruf-"Längen" von 4 bis 64 Byte bereit. Der Lese-/Änderungs- /Schreibvorgang wird durch sechzehn separate Befehle bearbeitet, die aus vom System erzeugten separaten Abrufbefehlen und separaten Befehlen zur partiellen Speicherung bestehen.
  • Die verbesserte Speicherschnittstelle des IBM 9730 Prozessors gemäß der Erfindung weist ein 10-Bit-Feld auf, das auf die folgende Weise konfiguriert wird. Es gibt nur zwei Befehlsbits, eines für die Abruf-/Speichersteuerung und eines für die Steuerung von normalen Vorgängen/Diagnosevorgängen. Dies sind die beiden obersten Bits, die in der Auflistung "Interpretation der hexadezimalen Codes" von Fig. 12 gezeigt werden. Die anderen acht Bits, die in Fig. 12 unter diesen gezeigt werden, werden auf zwei Arten verwendet. Für Diagnosebefehle werden sie als eine direkte Decodierung verwendet, um einen zugeordneten Diagnosevorgang auszuwählen. Für normale Befehle werden sie jedoch verwendet, um die Feldlänge für diesen Abruf oder diese Speicherung anzuzeigen. Daher werden die normalen Befehle mit X (2XX, 3XX) gezeigt. Die Buchstaben X stellen verschiedene hexadezimale Werte dar, die für zulässige Speicher- oder Abruf-"Längen" vorkommen können. Die Feldlänge stellt in Verbindung mit der Startbyteadresse die Flexibilität auf der Grundlage eines einzelnen Bytes bereit, indem ermöglicht wird, daß mit diesem einzelnen Befehl von einem bis zu 256 sequentielle Bytes pro Karte bearbeitet werden können. Die tatsächliche Realisierung auf der Grundlage einer Karte beträgt bis zu 64 Byte. Dies kann leicht auf 256 Byte erweitert werden, was durch ein Austauschen der Logik möglich wird, und die 256-Byte-Grenze kann geändert werden, indem mehr Feldlängenbits zur Architektur hinzugefügt werden. Der größte Vorteil ist, daß für jeden normalen Speichervorgang nur ein Befehl und für jeden normalen Abrufvorgang nur ein separater Befehl benötigt werden. Für Speicherungen werden die Startadresse und die Feldlänge für diesen einen zugeordneten Befehl von der Kartenlogik verwendet, um automatisch zu bestimmen, ob eine direkte Speicherung erfolgen muß oder ob einer der 8256 eindeutigen Lese-/Änderungs-/Schreibvorgänge intern durchgeführt werden muß.
  • Die Fig. 13A bis 13H zeigen den Zusammenhang zwischen der Startbyteadresse, die durch die Ziffern in den Spalten "SB" angezeigt wird, und der Feldlänge, die durch die Ziffern in den Zeilen "FL" angezeigt wird. Ein Befehl "321" würde beispielsweise auf der Grundlage der Tabellen in Fig. 13 wie folgt interpretiert werden. Der hexadezimale Wert 3 würde bedeuten, daß es ein Abrufbefehl (3XX) war. Der hexadezimale Wert 21, der die beiden X und folglich die Feldlänge für den zugeordneten Abrufbefehl darstellt, wird als FL=33 interpretiert. Falls die zugeordnete Startbyteadresse SB=000 wäre, müßte in Fig. 13C nachgesehen werden, um ein "·" oder ein "*" in einem diesen entsprechenden Feld zu finden. FL = 33 und SB = 000 entsprechen einem "·" im Rahmen. Die "·" und "*" haben nur eine eindeutige Bedeutung, wenn Speicherbefehle betrachtet werden, und ihre Bedeutung wird in Fig. 13A erklärt. Die "drei Übertragungen" beziehen sich auf die Anzahl von Systemübertragungen, die zum Abrufen der zugeordneten Daten stattfinden müssen. Das "(HE)" bezieht sich auf einen Zwei-Karten-Anschluß. Diese Tabellen zeigen eine maximale FL von 127, die sich auf eine maximale Anzahl von 128 Byte, die in acht Übertragungen übertragen werden können, bezieht. Da das zuvor erwähnte Maximum für eine Karte 64 Byte beträgt, würden für 128 Byte zwei Karten benötigt werden.
  • Das Multiplexen auf dem mehrfach genutzten Datenbus gestattet jede Anzahl von Diagnosespeicherungen oder -abrufen in oder von speziellen Kartensteuerregistern. Jedes dieser beiden Logikmodule auf der Speicherkarte weist zwei Schlüsselsteuerregister auf, die einen großen Teil der mit der Schnittstelle gemäß der Erfindung verbundenen Flexibilität bereitstellen. Obwohl Chip-Steuerregister ein sehr verbreitetes Entwurfshilfsmittel sind, ist es die Kombination von Funktionen der Speicherkarte, die von diesen Registern unterstützt werden, die sie einzigartig macht. Diese Funktionen werden aufgelistet und kurz beschrieben.
  • Das Register für spezielle Funktionen (SFR) 72 wird verwendet, um die Art und Weise der Ausführung von normalen Befehlen im Datenfluß oder die Art und Weise der Konfiguration der Datenpfade selbst für einen beliebigen Vorgang zu ändern. Die 24 Bit des Registers stellen die folgenden Funktionen bereit und gestatten, daß zukünftige Funktionen in Abhängigkeit von künftigen Erweiterungen hinzugefügt werden können. Dieses Register könnte leicht auf 32 Bit oder darüberhinaus erweitert werden. Die frühere IBM 9370 Speicherkarte umfaßte nur vier SPR-Bits. Drei wurden decodiert, um die folgenden acht Funktionen bereitzustellen: a) Keine spezielle Funktion; b bis d) Simulation eines maschinenbedingten Fehlers für nur ein Datenbit, ein Prüfbit oder beide pro Modul; e) Unterdrücken des ECCs beim normalen Lesen; f) Einfache Datenringleitung ohne Speicher; g) Speicherzusatzbits bei normalen Abruf-/Speicherbefehlen; und h) Inaktivieren des Redundanzbitregisters beim Speichern ohne ECC. Das vierte SFR-Bit wurde verwendet, um verschiedene Betriebsarten zum Aktivieren des Syndromregisters auszuwählen. Das SFR 72 gemäß der vorliegenden Erfindung gestattet die folgende Steuerung:
  • 1. DATENRINGLEITUNG - Es werden drei verschiedene Datenringleitungs-Vorgänge bereitgestellt, um dem System zu gestatten, Kartendaten ohne Zugriff auf den Speicher zu speichern und abzurufen. Dies ermöglicht drei Schlüssel-Datenflußpfade auf der Karte, die ohne eine Störung vom Speicher (oder des Speichers) gelesen werden können. Diese Funktion stellt eine Vielzahl von anderen Diagnoseverwendungen bereit und kann sogar ermöglichen, daß die Karte als ein kleiner Cache verwendet werden kann.
  • 2. SPEICHERZUSATZBITS BEI NORMALEN BEFEHLEN - Dies ermöglicht ein schnelles Testen aller Prüfbit- und Redundanzbit-Matrixpositionen unter Verwendung von normalen Speicher- und Abrufbefehlen. Dies ist förderlich zum Ausgleich der Unfähigkeit des Systems, den Vorgang "Matrixtestmodus" zu verwenden, um schnell alle Matrixpositionen auf der Karte zu testen. Der "Matrixtestmodus" wird hierbei an späterer Stelle ausführlicher beschrieben.
  • 3. SIMULATION EINES MASCHINENBEDINGTEN FEHLERS - Dies ermöglicht, daß bestimmte Bits ohne eine physische Beschädigung der Karte bei einem Wert haftenbleiben. Die vollständige Fähigkeit des Vorgangs des erweiterten ECCs der Karte kann nur nachgewiesen werden, falls ein maschinenbedingter Fehler vorhanden ist (Haftbit). Da Karten mit einem "sauberen" Speicher (ohne Matrixfehler wie Haftbits) ausgeliefert werden müssen, muß ein Haftbit in der Logik aktiviert werden, um ein Matrixproblem zu simulieren. Es gibt zwei Bits pro ECC, die haften bleiben können (vier pro Modul) . Jedes Haftbit wird von einem einzelnen Bit im SFR, nicht von einer Decodierung von mehreren Bits, gesteuert. Folglich ist jede Kombination der vier Bits möglich.
  • 4. ECC UNTERDRÜCKEN - ECC-Vorgänge, die mit Abrufen oder Speicherungen verbunden sind, können unterdrückt werden. Es erfolgt keine Korrektur oder Fehlersignale bei Abrufen und keine Prüfbiterzeugung bei Speicherungen. Redundanzbits können ebenfalls in Verbindung mit den Prüfbits gesteuert werden. Der Entwurf des IBM 9370 Prozessors benötigte einen zugeordneten Befehl zur Ausführung der ECC-Unterdrückung bei Speicherungen.
  • 5. UNTERDRÜCKEN DES ERWEITERTEN ECCs - Der erweiterte ECC kann bei Abrufbefehlen oder Vorabrufen, die mit Lese-/Änderungs- /Schreibvorgängen verbunden sind, oder bei beiden separat unterdrückt werden.
  • 6. ERWEITERTER ECC-ZÄHLER - Die Geschwindigkeit, mit der der erweiterte ECC-Zähler die Aktivierung eines externen Statussignals auslöst, wird durch dieses Register gesteuert. Das System überwacht diese Statusleitung, um eine Meldung darüber zu erhalten, wie "schmutzig" der Speicher möglicherweise ist. Sie wird als ein Hinweis darüber verwendet, daß eine Diagnoseroutine normale Arbeitsgänge zu einem geeigneten Zeitpunkt unterbrechen muß, um das Ausmaß von möglichen Matrixfehlern und die mögliche Verwendung von einem oder mehreren Reservebits zu bestimmen, um einen großen Abschnitt des fehlerhaften Speichers, der zu einer erheblichen Verminderung der Systemleistung oder sogar einem Verlassen von fehlerhaften Daten führen könnte, auszulagern.
  • 7. SNYDROMREGISTER - Das SFR steuert, wann die internen Register Syndromdaten von einem bestimmten Vorgang für ein späteres Auslesen zwischenspeichern. Die Register können in Abhängigkeit von vier verschiedenen Fehlerbedingungen aktiviert werden: 1) Kein Fehler - Die Register werden bei jeder Abrufübertragung aktualisiert. 2) Die Register werden aktualisiert und speichern nur das Auftreten von einem Einzelbitfehler. Dies kann während der Fehlerbehebung verwendet werden, um das Auftreten eines zweitweise auftretenden Einzelbitfehlers während eines erweiterten Durchlaufs zu erfassen. Die zwischengespeicherten Syndromdaten können anschließend verwendet werden, um das mit diesem Fehler verbundene Matrixbit zu lokalisieren. 3) Die Register werden aktualisiert und bei allen Mehrbitfehlern aufrechterhalten. 4) Die Register werden aktualisiert und nur für einen Einzelbitfehler während eines erweiterten ECC-Vorgangs gespeichert. Für diesen Fall kann das Syndrom verwendet werden, um die Art des Doppelbitfehlers, der den erweiterten ECC-Vorgang auslöste, zu bestimmen. Falls der XECC- Vorgang selbst nicht erfolgreich war, existieren zwei (oder 4, 6, 8, 10, usw.) weiche Fehler. Falls der XECC erfolgreich war und die zugeordneten Syndromdaten für den (die) betroffenen ECC(s) alle Nullen wären, würden zwei maschinenbedingte Fehler existieren und korrigiert werden. Falls das Syndrom ein gültiger ungerader Wert wäre, würden ein weicher und ein maschinenbedingter Fehler existieren und korrigiert werden. Der XECC-Vorgang löscht den weichen Fehler aus dem Speicher, und der ungerade Syndromwert zeigt an, wo er sich befand. Ein maschinenbedingter Fehler ist ein tatsächlicher Fehler im Speicher, der physisch durch eine neue Matrix ersetzt oder elektrisch ausgelagert werden muß. Ein weicher Fehler besteht aus Daten in einer Matrix, die durch Strahlung oder Störungen verändert wurden. Die Matrix ist nicht beschädigt, und daher kann der Fehler korrigiert werden.
  • 8. LÖSCHUNGSFREQUENZ - Sie aktiviert das Beseitigen von weichen Fehlern während der Aktualisierungszeit und steuert die Geschwindigkeit, mit der es stattfindet.
  • Das Programmregister 71 wird von der Steuerlogik verwendet, um die Operation der Karte in Abhängigkeit von der Systemeingabe, die durch die Überwachung der Art der angeschlossenen Karten und die Kenntnis der Systemkonfiguration bestimmt wird, anzupassen. Die im System gespeicherten geeigneten Daten werden anschließend in dieses Register geladen. Die 32 Bit des Registers stellen die folgenden Funktionen bereit und gestatten, daß zukünftige Funktionen in Abhängigkeit von künftigen Erweiterungen hinzugefügt werden.
  • 1. Meldung der Kartengröße
  • 2. Anzahl der Matrixgruppen auf der Karte
  • 3. Kartenposition im Anschluß
  • 4. Anzahl der Karten im Anschluß
  • 5. ECC-Laufzeitverzögerung
  • 6. Zeitliche Verschiebung des Speichertreibers zur gleichzeitigen Vermittlung
  • 7. Programmieren des Signals "Karte BELEGT"
  • 8. Vielzahl von Steuerungen zum Abändern der RAS- und CAS-Impulse der Matrix. Diese Änderung gestattet die Verwendung von verschiedenen Matrixtechniken oder die Verbesserung der Matrix-Zeitgrenzwerte in Abhängigkeit von der tatsächlichen Hardware-Leistung. Im früheren IBM 9370 Speicher gab es kein solches Programmregister.
  • Die Kartenarchitektur gemäß der Erfindung stellt das Merkmal eines "Matrixtestmodus" bereit, mit einem minimalen zugeordneten E/A- und Logikaufwand und dennoch ermöglicht, daß die Fertigungstestzeit der Karte halbiert wird. Der "Matrixtestmodus" gestattet, daß alle an einer Speicherposition auf der Karte befindlichen Daten durch eine Ein-Matrix-Übertragungs- (zwei Systemübertragungen) Speicherung und anschließend einen Ein-Matrix-Übertragungs-Rückabruf einschließlich Prüfbits (CBs) und Redundanzbits (RBs) getestet werden. Dies erfolgt durch die vollständige Unterdrückung des Karten-ECCs und der Paritätsaktivität. Die ECC-Korrektur und die Paritätserzeugung werden bei Abrufen blockiert, und die ECC-Prüfbiterzeugung und die Paritätsprüfung werden bei Speicherungen blockiert. Die Vier-Modul- E/A für die Parität werden für vier der sieben Modulprüfbits verwendet, und die vier wiederangesteuerten E/A für Mehrbitfehler (MBE) werden für die drei Prüfbits und das Redundanzbit verwendet. MBE können verwendet werden, da der ECC unterdrückt wird, und der für einen bidirektionalen Betrieb im "Matrixtestmodus" benötigte Empfänger ist bereits für eine Prüfschaltung auf dem MBE-Treiber vorhanden.
  • Die Verringerung der Testzeit kann dargestellt werden, indem sie mit der Art und Weise verglichen wird, wie die Systemdiagnosen alle Matrizen im "Systemmodus" der Karte testen müssen. Für jede Speicheradressenposition auf der Karte muß das System für eine Speicherung und einen Abruf folgendes durchführen. Wie zu erkennen ist, müssen bei jeder Adressenposition im gesamten Kartenspeicherbereich insgesamt acht Systemübertragungen durchgeführt werden, um jede Matrix zu testen. Dies ist ein wesentlicher Zeitaufwand für Kartendichten von 64 MB und mehr. Es sei darauf hingewiesen, daß eine Option eines Registers für spezielle Funktionen, das nur Prüf- und Redundanzbits bei Abrufen und Speicherungen bewegt, anstelle der Befehle 060 und 160 verwendet werden kann, das in Fig. 12 dargestellt wird. Dies führt immer noch zu acht Systemübertragungen:
  • Speicherung:
  • a) Befehl 060 zum Laden von CB- und RB-Registern (2 Systemübertragungen)
  • b) Befehl 2XX mit unterdrücktem ECC zum Laden von DBs (2 Systemübertragungen) Abruf:
  • a) Befehl 3XX mit unterdrücktem ECC zum Lesen von DBs (2 Systemübertragungen)
  • b) Befehl 160 zum Lesen von CB- und RB-Registern (2 Systemübertragungen).
  • Für den entsprechenden "Matrixtestmodus" muß bei jeder Adressenposition für eine Speicherung und einen Abruf nur das folgende durchgeführt werden. Wie zu erkennen ist, müssen bei jeder Adressenposition im gesamten Kartenspeicherbereich insgesamt vier "System"-Übertragungen durchgeführt werden, um jede Matrix zu testen.
  • Speicherung:
  • a) Befehl 2XX (2 Systemübertragungen)
  • Abruf:
  • a) Befehl 3XX (2 Systemübertragungen).
  • Die einzigen beiden zugeordneten Ein-/Ausgaben, die für diese Funktion benötigt werden, sind CTM und ZURÜCKSETZEN. CTM vermittelt zwischen dem "Matrixtestmodus" und dem "Systemmodus". ZU- RÜCKSETZEN stellt ein Mittel, daß die Karte ohne die Notwendigkeit eines umfangreichen Scannens initialisiert werden kann. Das System führt die Karteninitialisierung und viele seiner Diagnosevorgänge durch die Verwendung von Scannen durch. Die Hinzufügung von "Zurücksetzen" und die Befehle für interne Register- Ladevorgänge und -Lesevorgänge (Befehle 060, 0D0 und 160, 1D0) gestatten, daß der Fertigungstest mit gerade genügend Scannen durchgeführt wird, um sicherzustellen, daß der Scanpfad und die damit verbundenen Steuerungen auf der Karte verschaltet sind. Dies ermöglicht eine Verringerung des Testaufwands und der Testzeit. Die Kontinuität des Scanpfades auf den Chips wird beim Chip-/Modultest überprüft, und die betroffenen Funktionen werden während des Kartentests der Logik im "Systemmodus" überprüft.
  • Die Fähigkeit zum "Matrixtestmodus" auf dieser Karte würde außerdem gestatten, daß ein anderes System mit einem ECC außerhalb der Speicherkarte diese Karte verwenden kann. In diesem Fall wären die Prüfbits und Redundanzbits parallel zu den Datenbits für die Logik außerhalb der Karte zur Verwendung verfügbar. Die RB-Auslagerung auf der Karte könnte in diesem Modus immer noch verwendet werden. Die Tatsache, daß keine Paritätsbits erzeugt werden, ist nicht wichtig, da der ECC-Schutz für die Matrizen nun über die Kartenlogik und den Bus außerhalb der Karte übertragen wird.
  • Durch die Kombination von bestehenden Techniken zum Speicherentwurf mit einzigartigen Merkmalen gemäß der vorliegenden Erfindung wurde eine allgemeine und dennoch leistungsfähige und flexible Speicherschnittstelle und -architektur erreicht, die der Leistung und den funktionellen Ansprüchen der neuen Version des IBM 9370 Prozessors gerecht wird.
  • Speicherkarten mit unabhängigen Fehlerkorrektur-Fähigkeiten müssen zwei Modi für die Bearbeitung von Systemspeicherungen in den Speicher bereitstellen, um die Systeminteraktion mit dem Speicher auf ein Minimum herabzusetzen. Ein Modus ist ein direkter Modus, und der andere Modus ist eine partielle Speicherung, auf die als Lese-/Änderungs-/Schreibvorgang (RMW) Bezug genommen wird. Die direkte Speicherung kann erfolgen, wenn die zu überschreibenden Daten vollständig in eine oder mehrere Karten-ECC- Grenzen passen. Eine bevorzugte Ausführungsform der Erfindung weist vier 4-Byte-ECCs auf. Folglich kann eine direkte 4-Byte- Speicherung durchgeführt werden, falls sich alle vier Bytes vollständig innerhalb nur einer der ECC-Grenzen befinden. Die Fähigkeit, direkte 4-Byte- oder 8-Byte-Speicherungen mit der 16- Byte-Kartenschnittstelle zu den Matrizen durchzuführen, gestattet deutliche Verbesserungen der Systemleistung, wenn kein Cache-Speicher zur Pufferung des Hauptspeichers vorhanden ist. Wenn die zu speichernden Daten nicht an einer ECC-Grenze beginnen und enden, muß ein RMW-Vorgang durchgeführt werden. Ein Karten-ECC macht es erforderlich, daß zuerst ein Vorabruf der zu überschreibenden Daten durchgeführt wird. Falls es möglich ist, gestattet dieser Vorabruf, daß die ECC-Logik und die Logik des erweiterten ECCs alle Fehler, die in den zugeordneten ECC-Wörtern vorkommen, auszuräumen. Falls dies nicht ausgeführt würde, würden Fehler, die sich in dem nicht überschriebenen Teil eines ECC-Wortes befinden, durch die Erzeugung von korrekten Prüfbits für fehlerhafte Daten maskiert. Falls er künftig nicht vollständig überschrieben würde, würde dieser Fehler beim nächsten Abruf zu dieser Position zu einer Ausgabe von fehlerhaften Daten führen. Die RMW-Leistungsverschlechterung betrifft den Vorabruf- Vorgang, der die reine Zyklus zeit für die resultierende Speicherung im Speicher erheblich verlängert. Diese Zeit wird durch die Realisierung dieser Funktion auf der Speicherkarte, und nicht in einer externen Speichersteuereinheit, erheblich verringert.
  • Zur Bearbeitung von diesen beiden Modi umfaßt der Befehlssatz für den Hauptspeicher des früheren IBM 9370 Prozessors sechs separate Befehle für direkte Speicherungen von vier bis 64 Byte, acht separate Befehle für die verschiedenen Lese- (Vorabruf-) Teile einer partiellen Speicherung und acht separate zugeordnete Befehle für die verschiedenen Schreibteile einer partiellen Speicherung. Folglich muß das System bestimmen, welcher Modus gewählt werden muß und welche Befehle gesendet werden müssen. Dies stellt die Schnittstelle auf eine bestimmte Karten-ECC-Konfiguration und eine begrenzte Anzahl von Matrixtypen ein. Zukünftige Erweiterungen des Systems benötigen eventuell eine Änderung der Schnittstelle. Die Schnittstelle und Architektur gemäß der vorliegenden Erfindung gestattet eine optimale Flexibilität, indem vom System wenig gefordert wird. Ein erheblich verringerter Befehlssatz in Verbindung mit einem umstrukturierten Befehlsdatenformat stellen einen einfachen und transparenten Betrieb bereit. Diese Verbesserungen werden in den folgenden Abschnitten vom Hardware-Standpunkt aus ausführlicher beschrieben.
  • Das Befehlswort für den IBM 9370 besteht aus acht Befehlsbits und vierundzwanzig Adreßbits. Wie zuvor erwähnt wurde, wird eine Decodierung der gesamten acht Bits benötigt, um aus zweiundzwanzig verschiedenen Befehlen zur Durchführung einer bestimmten direkten Speicherung oder eines RMW-Vorgangs auszuwählen. Für den RMW-Vorgang zeigt der ausgewählte Befehl die Anzahl der zu ändernden Bytes an, und es werden nur zwei Bits des Adreßfeldes verwendet, um auf das Startbyte in diesem Modul zu zeigen. Folglich wird ein wesentlicher Teil der Systemaktion benötigt, um eine begrenzte Anzahl von RMW-Optionen auszuführen.
  • Die bevorzugte Ausführungsform der Erfindung für das Nachfolgemodell des IBM 9370 umfaßt ein "Befehlswort", das aus zwei Befehlsbits, acht Feldlängenbits und dreißig Adreßbits besteht. Ein fünftes Byte des "Befehlswortes" wird bei jedem der beiden Module auf der Karte mit nur 64 eindeutigen Bits an den Kartenkontakten erreicht, indem zwei der acht Byte beiden Modulen zugeführt werden. Für eine Darstellung der Art und Weise, wie diese Zusatzbits tatsächlich auf der Karte verdrahtet sind, muß auf Fig. 11A Bezug genommen werden. Die beiden Befehlsbits wählen zwischen einem Speicher- oder Abrufvorgang und zwischen einem normalen Vorgang oder einem Diagnosevorgang. Beim vorliegenden Entwurf werden sieben der acht Feldlängenbits verwendet, um die Anzahl der für die acht Systemübertragungen zu schreibenden Bytes zu wählen; d. h. eine Feldlänge von 0000000 für 1 Byte bis zu einer Feldlänge von 1111111 für 128 Byte. Der Bereich bis zu 128 Byte gestattet einen RMW-Vorgang über einen Zwei-Karten-Anschluß hinweg. Das achte Feldlängenbit ist verfügbar, um einen RMW-Vorgang zu gestatten, der 16 Systemübertragungen anstelle von nur 8 tief ist. Das komplette Adreßfeld wählt innerhalb des gesamten Speicherbereichs die Startposition der vier Matrixübertragungen, die den RMW-Zyklus bilden, von dem sieben Bits verwendet werden, um das Startbyte innerhalb der zugeordneten Gruppierung von vier Matrixübertragungen (acht Systemübertragungen) anzuzeigen. Bei einem Zwei-Karten-Anschluß mit einem Startbyte von 000 kann die Anzahl von Bytes, die geschrieben werden können, von 1 bis 128 variieren. Bei einem Startbyte von 127 kann nur ein Byte geschrieben werden. Folglich ist kein Umlauf über die Grenzen hinweg gestattet. Die resultierenden RMW-Vorgänge, die durchgeführt werden können, werden in den Fig. 13A bis 13H gezeigt. Einzelheiten über die Art und Weise, wie diese Diagramme zu interpretieren sind, werden oben beschrieben.
  • Ein-Karten- und Zwei-Karten-Anschlußgrenzen werden in den Figuren 14A und 14B gezeigt. Die Ziffern in den Feldern der Fig. 14A und 14B stellen Byteanzahlen dar. Ein Unterfeld mit einer 20 darin stellt beispielsweise vier mit 20, 21, 22 und 23 numerierte Bytes dar. "MODUL" stellt dar, ob sich die zugeordneten Bytes im linken oder rechten Modul auf der Karte befinden. Jedes Modul umfaßt zwei ECCs, die durch A oder B angezeigt werden. "Start" zeigt an, ob die Startadresse (Systemübertragung) gerade (ECC A) oder ungerade (ECC B) ist. Über einen Zwei-Karten-Anschluß wird nur eine Modulteilnummer verwendet. Folglich müssen die vier Module über dem Anschluß eindeutig angepaßt werden, um die verschiedenen RMW-Vorgänge durchzuführen. Die Modulposition auf einer Karte wird durch einen festverdrahteten Modulkontaktstift bestimmt. Die Kartenposition im Anschluß wird durch die Systemanpassung des Programmregisters in diesem Modul bestimmt.
  • Es gibt eine Anzahl von Schlüsselmerkmalen, die mit den RMW-Vorgängen verbunden sind. Während eines Speicherbefehls bestimmen die Startadresse und die Feldlänge, ob eine direkte Speicherung stattfindet oder ob ein RMW-Vorgang (partielle Speicherung) stattfindet. Direkte Speicherungen finden nur statt, wenn alle zu schreibenden Daten genau innerhalb eine 4-Byte-Grenze(n) fallen, die einem ECC-Wort/ECC-Wörtern entspricht.
  • Ein RMW-Vorgang, dessen Startadresse sich außerhalb einer ECC- Grenze und dessen Endadresse sich auf einer befinden, besteht aus einer Vorabruf-/Speicherübertragung, und ihm gehen bis zu sieben direkte Speicherübertragungen voraus. Auf dies wird als ein PW-RMW-Fall Bezug genommen. Ein RMW-Vorgang, dessen Startadresse sich auf einer Grenze und dessen Endadresse sich außerhalb der Grenze befinden, endet mit einer Vorabruf-/Speicherübertragung, und ihm gehen bis zu sieben direkte Speicherübertragungen voraus. Auf dies wird als ein WP-RMW-Fall Bezug genommen. Wenn sich sowohl die Start- als auch die Endadressen außerhalb der Grenzen befinden, finden Vorabruf-/Speicherübertragungen an beiden Enden mit bis zu sechs dazwischenliegenden direkten Speicherungen statt. Auf dies wird als ein PP-RMW-Fall Bezug genommen. Wenn nur eine Übertragung stattfinden muß, erfolgt in diesem Fall ein einziger Vorabruf-/Übertragungsvorgang. Diese drei verschiedenen Typen von RMW-Zyklen beinhalten alle möglichen RMW-Kombinationen. Es wird auf acht Systemübertragungen Bezug genommen, da dies die maximale Anzahl der pro Zyklus gestatteten Übertragungen ist. Alle RMW-Vorgänge mit weniger als acht Übertragungen sind eine Untergruppe von einer dieser drei Gruppen. Für die vollständige Darstellung dieser drei verschiedenen Gruppen muß auf Fig. 15 Bezug genommen werden. Die grundlegenden Konzepte von dieser auf der Karte befindlichen RMW- Funktion können außerdem auf mehr als acht Übertragungen erweitert werden. Die Architektur der Karte gestattet eine vollständige RMW-Flexibilität, obwohl die Steuerlogik verhältnismäßig einfach gehalten wurde. Um die minimale Anzahl der RMW-Typen bei drei zu halten, werden RMW-Vorgänge nur bei einem zusammenhängenden Satz von Bytes durchgeführt. Folglich können die Vorabrufe nur bei den Start- und Endbytes eines fortlaufenden Datenblocks erfolgen. In der Mitte können keine Vorabrufe stattfinden.
  • Während eines Vorabrufs ist der ECC über die gesamte Karte (oder den Zwei-Karten-Anschluß) hinweg aktiv; der erweiterte ECC (XECC) wird jedoch nur ausgelöst, falls ein Mehrbitfehler für einen ECC mit einer partiellen Speicherung innerhalb seiner Grenzen auftritt. Das Mehrbitfehler-Signal wird nicht aktiviert, falls, wie es bei einem normalen, den XECC betreffenden Abruf der Fall ist, der XECC gestartet wird. Die Arbeitsschritte des XECC erfolgen über die gesamte Karte (den Anschluß) hinweg, selbst wenn er von nur einem ECC aktiviert wird. Dies erfolgt, um die Matrix-Zeitsteuerungen synchron zu halten. Einige der oben erwähnten Übertragungsleitungen über den Chip (XSYNC, MSYNC, SSYNC, XACKN, MACKN, SACKN) werden verwendet, um zwei Module auf einer Karte oder vier Module über einen Zwei-Karten-Anschluß zu synchronisieren. Der Arbeitsablauf innerhalb jedes XECC-Vorgangs variiert jedoch in Abhängigkeit davon, ob innerhalb der Grenzen dieses ECCs eine partielle Speicherung stattfindet oder nicht. Dies wird unten ausführlicher beschrieben. Ein nicht erfolgreicher XECC-Vorgang bei Daten innerhalb einer ECC-Grenze mit einer partiellen Speicherung aktiviert einen nicht korrigierbaren Fehler (UCE), falls das geeignete SPR-Bit gesetzt wird. Unabhängig davon, ob UCE aktiv ist oder nicht, werden fehlerhafte Daten im Speicher wieder gespeichert, so daß diese Position immer noch einen erkennbaren Fehler und kein Entkommen (nicht erfaßt) von fehlerhaften Daten darstellt. Falls der Vorabruf nur ungerade Mehrbitfehler beinhaltet, wird ein UCE ohne Aufruf des XECCs aktiviert. Ein anderes Bit im SFR kann verwendet werden, um den XECC während eines RMW-Vorgangs zu deaktivieren, obwohl der XECC bei normalen Abrufvorgängen gestattet wird. Das Einzelbitfehler-Signal wird aktiviert, um Einzelbitkorrekturen bei Vorabrufen anzuzeigen.
  • Die grundlegende Steuerprozedur für direkte Speicherungen/RMW- Vorgänge wird im Flußdiagramm von Fig. 16 gezeigt. Wenn die Karte, wie es im Entscheidungsblock 101 bestimmt wird, gewählt wird, werden der Befehl, die Startadresse und die Feldlänge geladen, wie es im Funktionsblock 102 gezeigt wird. Der geladene Befehl, die Startadresse und die Feldlänge werden, wie es im Funktionsblock 103 gezeigt wird, verwendet, um die Endadresse, die Anzahl der Matrix- und Systemübertragungen und die ersten und letzten Byteaktivierungen zu bestimmen und, falls sie überhaupt benötigt werden, um zu bestimmen, wo Vorabrufe benötigt werden. In Abhängigkeit von diesen Berechnungen können, wie es im Entscheidungsblock 104 bestimmt wird, eine bis zu vier (oder mehr, je nach Entwurf) Matrixübertragungen gemäß einer Folge von Verarbeitungspfaden ablaufen. Die Art und Weise, wie die obigen Elemente berechnet werden, wird hierbei an einer späteren Stelle ausführlicher beschrieben.
  • Bei einer direkten WWWW-Speicherung bei einer Vier-Matrix-Übertragung beginnt die Folge des Verarbeitungspfades, der gefolgt wird, beim Entscheidungsblock 104, wo entschieden wird, zum Block 106 zu verzweigen. Im Entscheidungsblock 106 wird ein Test durchgeführt, um zu bestimmen, ob ein Vorgang "Änderung starten" folgen muß. Das Ergebnis dieses Tests ist negativ, und im Funktionsblock 107 wird eine Speicherung von EFB-Bytes ausgeführt, bevor im Entscheidungsblock 108 ein Test durchgeführt wird, um zu bestimmen, ob der Vorgang abgeschlossen ist. Das Ergebnis dieses Tests ist ebenfalls negativ, und die Steuerung kehrt in einer Schleife zurück zum Entscheidungsblock 104. Als nächstes geht die Logik zum Funktionsblock 109, wo eine Speicherung aller Bytes durchgeführt wird, bevor sie zum Entscheidungsblock 108 geht. Dieser Pfad wird für die dritte "W"-Übertragung erneut wiederholt. Anschließend geht die Logik zum Entscheidungsblock 113, wo ein Test durchgeführt wird, um zu bestimmen, ob der Vorgang ein "Änderung beenden" ist. Dieser Test ist negativ, und im Funktionsblock 114 wird eine Speicherung von ELB-Bytes durchgeführt, um den Vorgang zu beenden.
  • Bei einer Zwei-Matrix-PW-RMW-Übertragung beginnt die Folge des Verarbeitungspfades, der gefolgt wird, beim Entscheidungsblock 106, wo das Ergebnis positiv ist. Im Funktionsblock 112 wird ein vollständiger Abruf durchgeführt, auf den eine Datenmischung für die EPB-Bytes folgt. Anschließend wird die Steuerung über den Funktionsblock 107 und den Entscheidungsblock 108 zum Entscheidungsblock 104 zurück geleitet, der den Vorgang dann zum Entscheidungsblock 113 leitet. Der Test im Entscheidungsblock 113 ist negativ, und die Steuerung geht zum Funktionsblock 114, um den Vorgang zu beenden.
  • Bei einer Zwei-Matrix-WP-RMW-Übertragung beginnt die Folge des Verarbeitungspfades, der gefolgt wird, wieder beim Entscheidungsblock 106, wo der Test negativ ist. Der Vorgang kehrt über den Funktionsblock 107 und den Entscheidungsblock 108 in einer Schleife zurück zum Entscheidungsblock 104, der die Logik anschließend zum Entscheidungsblock 113 leitet, wo der Test positiv ist. Folglich geht die Steuerung zum Funktionsblock 115, wo ein vollständiger Abruf durchgeführt wird, auf den eine Datenmischung für die ELB-Bytes folgt.
  • Bei einer Zwei-Matrix-PP-RMW-Übertragung beginnt die Folge des Verarbeitungspfades, der gefolgt wird, wieder beim Entscheidungsblock 106, wo der Test positiv ist, und der Rest des Pfades folgt, wie es für PW beschrieben wurde, läuft anschließend in einer Schleife zum Entscheidungsblock 113, wo der Test ebenfalls positiv ist, und der Rest des Pfades geht weiter bis zur Beendigung, wie es für WP beschrieben wurde. Bei der speziellen einzelnen P-RMW-Übertragung beginnt die Folge des Verarbeitungspfades, der gefolgt wird, beim Entscheidungsblock 110, wo der Test positiv ist. In diesem Fall geht die Steuerung zum Funktionsblock 116, wo ein vollständige Abruf durchgeführt wird, auf den eine Datenmischung der mit den ELB-Bytes logisch UND-verknüpften EPB-Bytes folgt. Bei einer einzelnen direkten Schreib-Übertragung ist der Test im Entscheidungsblock 110 negativ. Was im Flußdiagramm nicht gezeigt wird, ist die für jeden vollständigen Abruf (Vorabruf) getroffene Entscheidung, ob ein XECC aktiviert werden muß oder nicht. Die verschiedenen Berechnungen, auf die in diesem Flußdiagramm Bezug genommen wird, werden unten gezeigt.
  • 1) Startadresse (SA) = Eingangsadresse
  • 2) Berechnete Endadresse (EA) = Startadresse + Feldlänge (FL)
  • 3) Berechnen (durch binäre Addition) der Anzahl der Matrixübertragungen (AXF) (von einem Ein-Karten- Anschluß ausgehend): FL-Bits SA-Bits
  • wobei zwei "*"-Bits zusammen plus eins die Anzahl der Übertragungen ergibt (z. B. 01 = 2 Übertragungen)
  • 4) Berechnen (durch binäre Addition) der Anzahl der Systemübertragungen (SXP) (von einem Ein-Karten-Anschluß ausgehend): FL-Bits SA-Bits
  • wobei drei "*"-Bits zusammen plus eins die Anzahl der Übertragungen ergibt (z. B. 111 = 8 Übertragungen)
  • 5) Mit dem Abruf (z. B. PWWW) beginnen, falls (SA(1 : 0) nicht = '00'B) oder (EA(1 : 0) nicht = '11'B) und (Nr. AXP = '00'B) . Es sei darauf hingewiesen, daß (1 : 0) zwei niederwertigste Bits (LSBs) bedeutet.
  • 6) Abruf (z. B. WWWP) beenden, falls (EA(1 : 0) nicht = '11'B)
  • 7) Bytefreigabe-Decodierungen bei der ersten Matrixübertragung (EFB-Bytes) 1-Karten-Anschluß Links Rechts
  • In der obigen Tabelle wird EPBn aktiv, falls der Hexadezimalwert von vier LSBs von SA (für einen Ein-Karten-Anschluß) oder fünf LSBs von SA (für einen Zwei-Karten-Anschluß) kleiner oder gleich dem gegebenen Hexadezimalwert ist. ≤ 'F' Hex oder ≤ '1F' bedeutet, daß EPB stets eingeschaltet ist.
  • 8) Bytefreigabe-Decodierungen bei der letzten Matrixübertragung (ELB-Bytes) 1-Karten-Anschluß Links Rechts
  • In der obigen Tabelle wird EFBn aktiv, falls der Hexadezimalwert von vier LSBs von EA (für einen Ein-Karten-Anschluß) oder fünf LSBs von EA (für einen Zwei-Karten-Anschluß) größer als oder gleich dem gegebenen Hexadezimalwert sind. ≥ '0' Hex bedeutet, daß ELB stets aktiv ist.
  • BEISPIELE FÜR DIE BYTEAUSWAHL
  • (Auf Fig. 16 Bezug nehmen):
  • 1) Einzelne Matrixübertragung mit Abruf/Änderung/Schreiben; zur Spezifikation befindet sich ein 12-Byte bei Adresse '02'Hex. Das System wählt die Karte, 101, mit Befehl, Adresse, Feldlänge. Die Karte lädt diese, 102.
  • Startadresse und Feldlänge:
  • SA(7 : 0) = '00000010'B ('01' Hex)
  • FL(7 : 0) = '00001011'B ('OB' Hex).
  • Die Karte berechnet anschließend mittels des Blocks 103 folgendes:
  • Endadresse:
  • FL(7 : 0) 00001011
  • SA(7 : 0) + 00000010
  • EA(7 : 0) 00001101
  • Anzahl der Übertragungen:
  • FL(7 : 0) 00001011
  • SA(3 : 0) + 0010
  • SUMME 00001101
  • AXF(1 : 0) = 00 daher eine Übertragung auf dem Matrixbus
  • Anzahl der Systemübertragungen:
  • FL(7 : 0) 00001011
  • SA(2 : 0) + 010
  • SUMME 00001101
  • SXP(2 : 0) = 001 daher zwei Übertragungen auf dem Matrixbus
  • Beginn der Änderung = WAHR, weil SA(1 : 0) ≠ '00'B
  • Ende der Änderung = WAHR, weil EA(1 : 0) ≠ '11'B
  • Berechnen der EFBs und ELBs im Block 103:
  • Linkes EFB(0 : 7) = '00111111'B
  • Linkes ELB(0 : 7) = '11111111'B
  • Rechtes EFB(0 : 7) = '11111111'B
  • Rechtes ELB(0 : 7) = '11111100'B.
  • Zum Block 104, da es ein Schreibbefehl ist. Da dies nur eine Matrixübertragung ist, ist dies die sowohl die erste als auch die letzte Übertragung beim Block 104. Die Verarbeitung geht weiter zum Block 110. Beim Block 110 sind sowohl "Änderung starten" als auch "Änderung beenden" WAHR. Die Verarbeitung geht weiter zum Block 116. Beim Block 116 erfolgt ein vollständiger Abruf, anschließend eine Mischung der Daten nach der Gleichung, und die Verarbeitung geht weiter zum Block 111.
  • Linkes Modul: EFB(0 : 7) = '00111111'B
  • ELB(0 : 7) = '11111111'B
  • Logisches UND = '00111111'B
  • alte Datenbytes neue Datenbytes
  • Rechtes Modul: EFB(0 : 7) = '11111111'B
  • ELB(0 : 7) = '11111100'B
  • Logisches UND = '11111100'B
  • neue Datenbytes alte Datenbytes.
  • Im Block 111 erfolgt die Speicherung der alten Daten zu den linken Modulbytes 0 und 1 und den rechten Modulbytes 6 und 7 nach der Gleichung. Die neuen Daten werden zu den linken Modulbytes 3 bis 7 und den rechten Modulbytes 0 bis 5 gespeichert. Gehe weiter zum Block 108. Im Block 108 ist der Vorgang beendet, und die Steuerung geht zum Wartestatus im Block 101.
  • 2) PW-Beispiel für eine Zwei-Matrix-Übertragung: Schreiben von dreizehn Byte bei Adresse 7. Im Block 101 wählt das System die Karte, sendet den Befehl, die Adresse und die Feldlänge. Im Block 102 lädt die Karte diese.
  • Startadresse und Feldlänge:
  • SA(7 : 0) = '00000111'B ('07' Hex)
  • FL(7 : 0) = '00001100'B ('0C' Hex).
  • Im Block 103 führt die Karte die folgenden Berechnungen durch:
  • Endadresse:
  • FL(7 : 0) 00001100
  • SA(7 : 0) + 00000111
  • EA(7 : 0) 00010011
  • Anzahl der Matrixübertragungen:
  • FL(7 : 0) 00001100
  • SA(3 : 0) + 0111
  • SUMME 00010011
  • AXF(1 : 0) = 01 daher müssen zwei Übertragungen durchgeführt werden
  • Anzahl der Systemübertragungen:
  • FL(7 : 0) 00001100
  • SA(2 : 0) + 111
  • SPX(2 : 0) - 010 daher drei Übertragungen auf dem Systembus
  • Beginn der Änderung = WAHR, weil SA(1 : 0) φ '00'B
  • Ende der Änderung = FALSCH, weil EA(1 : 0) = '11'B.
  • Die EFBs und ELBs werden im Block 103 wie folgt berechnet:
  • Linkes EPB (0 : 7) = '00001111'B
  • Linkes ELB (0 : 7) = '11110000'B
  • Rechtes EPB(0 : 7) = '00011111'B
  • Rechtes ELB(0 : 7) = '00000000'B.
  • Gehe zum Block 104, da es ein Schreibbefehl ist. Im Block 104 ist dies die erste von zwei Matrixübertragungen. Als nächstes gehe zum Block 106. Im Block 106 ist "Beginn der Änderung" WAHR, daher gehe weiter zum Block 112, wo ein vollständiger Abruf erfolgt, und anschließend wird die Mischung der Daten für die EPBs durchgeführt.
  • Linkes Modul: EPB(0 : 7) = '00001111'B alte Daten neue Daten
  • Rechtes Modul: EPB(0 : 7) = '00011111'B alte Daten neue Daten.
  • Gehe weiter zum Block 107 und "Kein Vorgang" bei den linken Modulbytes 0 bis 3. Obwohl die alten Daten abgerufen und korrigiert wurden, werden sie nicht wieder im Speicher gespeichert, was ein Löschvorgang wäre. Als nächstes werden die alten Daten zu den rechten Modulbytes 0 : 2 gespeichert. Die neuen Daten werden zu den linken Modulbytes (4 : 7) und den rechten Modulbytes (3 : 7) gespeichert. Als nächstes gehe weiter zum Block 108 und von dort zum Block 104, da der Vorgang nicht beendet ist. Im Block 104 ist dies die letzte Matrixübertragung. Gehe weiter zum Block 113, wo "Änderung beenden" FALSCH ist. Als nächstes gehe zum Block 114 und die ELBs werden geschrieben:
  • Linkes Modul: ELB(0 : 7) = '11110000'B neue Daten alte Daten
  • Rechtes Modul: ELB(0 : 7) = '00000000'B alte Daten.
  • Der neue Pfad wird zu den Bytes (0 : 3) des linken Moduls gespeichert, und es wird "Kein Vorgang" bei den anderen 12 Byte durchgeführt. In diesem Fall wurde kein Vorabruf durchgeführt, folglich ist der Inhalt von diesen 12 Byte des Speichers unbekannt und daher müssen sie ungestört bleiben. Als nächstes gehe weiter zum Block 108. Der Vorgang ist nun beendet, und die Steuerung geht zum Block 101 zurück.
  • 3) WP-Beispiel für eine Zwei-Matrix-Übertragung; Schreiben von 5-Bytes bei Adresse 12 (dezimal) . Im Block 101 wählt das System die Karte und sendet den Befehl, die Adresse und die Feldlänge. Im Block 102 lädt die Karte diese.
  • Startadresse und Feldlänge:
  • SA(7 : 0) = '00001100'B ('0C' Hex)
  • FL(7 : 0) = '00000100'B ('04' Hex).
  • Im Block 103 führt die Karte die folgenden Berechnungen durch:
  • Endadresse:
  • FL(7 : 0) 00000100
  • SA(7 : 0) + 00001100
  • EA(7 : 0) 00010000
  • Anzahl der Matrixübertragungen:
  • FL(7 : 0) 00000100
  • SA(3 : 0) + 1100
  • SUMME 00010000
  • AXP(1 : 0) = 01 daher müssen zwei Matrixübertragungen durchgeführt werden
  • Anzahl der Systemübertragungen:
  • FL(7 : 0) 00000100
  • SA(2 : 0) + 100
  • SUMME 00001000
  • SPX(2 : 0) = 001 daher zwei Systemübertragungen
  • Änderung starten = FALSCH, weil SA(1 : 0) ≠ '00'B
  • Änderung beenden = WAHR, weil EA(1 : 0) ≠ '11'B
  • Die ELBs und EPBs werden berechnet:
  • Linkes EPB (0 : 7) = '00000000'B
  • Linkes ELB (0 : 7) = '10000000'B
  • Rechtes EPB(0 : 7) = '00001111'B
  • Rechtes ELB(0 : 7) = '00000000'B.
  • Es ist ein Schreibbefehl, folglich geht die Verarbeitung weiter zum Block 104. Im Block 104 ist dies die erste von zwei Matrixübertragungen. Gehe weiter zum Block 106, wo "Änderung starten" FALSCH ist. Als nächstes gehe weiter zum Block 107. Im Block 107 werden die EFBs geschrieben:
  • Linkes Modul: EPB(0 : 7) = '00000000'B
  • alte Daten erhalten
  • Rechtes Modul: EPB(0 : 7) = '00001111'B
  • alte Daten neue Daten erhalten speichern.
  • Es wird "Kein Vorgang" bei den linken Modulbytes (0 : 7) und den rechten Modulbytes (0 : 3) durchgeführt. Die neuen Daten werden zu den rechten Modulbytes (4 : 7) gespeichert. Als nächstes gehe weiter zum Block 108. Da der Vorgang nicht beendet ist, gehe weiter zum Block 104. Im Block 104 ist dies die letzte Matrixübertragung. Gehe weiter zum Block 113, wo "Änderung beenden" WAHR ist. Gehe weiter zum Block 115, und es wird ein vollständiger Abruf durchgeführt, anschließend werden die Daten für die ELBs gemischt.
  • Linkes Modul: ELB(0 : 7) = '10000000'B neue Daten alte Daten
  • Rechtes Modul: ELB(0 : 7) = '00000000'B alte Daten.
  • Gehe weiter zum Block 114, wo die neuen Daten zum linken Modulbyte 0 und die alten Daten zu den Bytes (1 : 3) gespeichert werden. Es wird "Kein Vorgang" bei den restlichen Byte durchgeführt. Als nächstes gehe weiter zum Block 108. Der Vorgang ist beendet, und die Steuerung geht zum Block 101.
  • Der Datenfluß über die Karte oder über einen Zwei-Karten-Anschluß wird für einen RMW-Zyklus von der Steuerlogik auf der Grundlage eines Bytes angepaßt. Die Steuerlogik verwendet Matrixdatenauswahlen, um wortweise Schreibvorgänge zu den Matrizen zu aktivieren. Die Steuerlogik erzeugt außerdem interne Schreibfreigaben für jedes Datenflußbyte. Diese aktivieren die Steuerung der in Fig. 6 gezeigten Abruf-/Speicherungs-Multiplexerlogik. Wenn ein Byte überschrieben werden muß, wählen die Multiplexer 120a und 120b Daten aus den Speicherpuffermultiplexern 122a und 122b. Die Speicherpuffer-Multiplexerlogik wird verwendet, um die geeigneten vier Bytewörter auszuwählen, die in Folge gespeichert werden, um zum geeigneten Zeitpunkt verwendet zu werden. Wenn die Daten nicht überschrieben werden, wählen die Multiplexer über die Abruf-/Ringleitungsmultiplexer 121a, 121b Ringleitungsdaten aus den LPD-Zwischenspeichern 54a, 54b, die vorher aus dem Speicher abgerufen und korrigiert wurden. Diese Auswahl über die Ringleitungs- und Abruf-/Speicherungsmultiplexer erfolgt nur auf den Datenbitpfaden und nicht auf den Prüfbit- oder Redundanzbitpfaden. Neue Prüfbits werden von der ECC- Logik erzeugt, nachdem die Speicherpuffer-/Ringleitungs-Datenauswahlen durchgeführt wurden, um ein neues zu speicherndes Wort zu bilden. Die Datenbit- oder Prüfbitauswahl für die Redundanzbitspeicherung erfolgt dann nach der neuen Prüfbiterzeugung.
  • Zur Verbesserung der RMW-Leistung wurde ein Speicherpuffer 53 zum Datenfluß hinzugefügt, um während einer Speicherung zusammenhängende Systemübertragungen von Daten zu gestatten. Bei einer direkten Speicherung muß der Puffer komplett genutzt werden, da die Daten im Pipeline-Verfahren durch die Datenfluß-ECC-Logik 55a, 55b geleitet werden können, wenn sie gespeichert werden. Im Falle einer direkten Speicherung mit einer geraden Startadresse werden die Daten an der Taktposition 1 in die S1E-Zwischenspeicher 125b, anschließend an der Taktposition 2 in die S1O-Zwischenspeicher 125b geladen. An dieser Stelle werden die Daten durch die ECCs 55a und 55b gesendet. Dies gestattet, daß 8-Byte- Systemübertragungen in 16-Byte-Matrixübertragungen umgesetzt werden. Bei einer Ein-Takt-ECC-Konfiguration speichert der nächste Takt, Taktposition 3, anschließend die Daten und die erzeugten Prüfbits in den LGB-Zwischenspeichern 57a, 57b. Zur gleichen Zeit kann die nächste Systemübertragung wieder in den S1E-Zwischenspeichern 125a zwischengespeichert werden und so weiter. Zur Vereinfachung der Logik für die Vielzahl von Speicherpuffervorgängen wird der zuvor erwähnte Pipeline-Vorgang für direkte Speicherungen tatsächlich etwas abgeändert, um den kompletten Speicherpuffer zu nutzen. Folglich wird die nächste 8-Byte-Datenübertragung zusätzlich zur Zwischenspeicherung der Daten in die ECC-Ausgangszwischenspeicher (LGB) 57a und 57b an der Taktposition 3 in die S2Es 126a und 126b geladen, und die beiden früheren Übertragungen werden in die SB1-Zwischenspeicher 127a und 127b verschoben. Diese Verschiebung verhindert ein Überschreiben der ersten Übertragung im S1E 125a, wenn sie als nächstes an der Taktposition 5 aktualisiert wird, und so weiter. Anschließend wird die vierte Datenübertragung an der Taktposition 4 in den S2O 126b geladen. Zusätzlich zur S1E-Aktualisierung an der Taktposition 5 werden die vorherigen dritten und vierten Übertragungen in die SB2-Zwischenspeicher 128a und 128b verschoben. An dieser Stelle sind die ersten vier Übertragungen im SB1 und SB2, und folglich können die letzten vier Übertragungen (falls ein vollständiger Ladevorgang durchgeführt werden muß) erneut in S1E, S1O, S2E und S20 geladen werden. Es muß auf den Pipeline-Effekt mit LGB 57a und 57b hingewiesen werden, in denen jeder andere Takt (3, 5, 7, usw.) aktualisiert wird, wobei 16 Datenbytes zur Matrix übertragen werden müssen. Fig. 17B zeigt die Zwischenspeicher-Zeitsteuerung für den folgenden RMW- Fall. In dieser Figur stellen die numerierten Impulse Zwischenspeichervorgänge (Datenaktualisierungen) für die zugeordnete Systemübertragungsnummer dar. Die Ziffern in runden Klammern sind Logikblock-Bezugsziffern aus Fig. 6.
  • Bei einem RMW-Vorgang, bei dem ein Vorabruf für die erste Matrixübertragung erfolgen muß, wird der Speicherpuffer vollständig genutzt. Dies gestattet, daß die Logik in zwei Modi gleichzeitig betrieben wird. Ein Teil der Logik puffert die fortlaufenden Speicherübertragungen auf dem Systembus, und ein Teil der Logik führt einen Vorabruf von Daten über den Matrixbus durch. In diesem Fall wird der Speicherpuffer wie folgt geladen: Zwischenspeicher S1E 125a, dann Zwischenspeicher S1O 125b; gefolgt vom Zwischenspeicher S2E 126a und anschließend Zwischenspeicher S2O 126b; während der Zwischenspeicher S2E 126a geladen wird, werden die in den Zwischenspeichern S1E 125a und S1O 125b gespeicherten Daten in die jeweiligen SB1-Zwischenspeicher 127a, 127b verschoben; anschließend wird der Zwischenspeicher S1E 125a, gefolgt vom Zwischenspeicher S2O 126b, erneut geladen. Es sei darauf hingewiesen, daß, wenn S2O geladen wird und die Verschiebung zum SB1 (in Fig. 17B nicht gezeigt) durchgeführt wird, die aus dem Speicherzugriff vorher abgerufenen Daten, die durch "VOR" gekennzeichnet sind, außerdem in den Speicherabrufregistern 51a und 51b zwischengespeichert werden. Wie es bei allen Abrufen der Fall ist, laufen die Abrufdaten nach der Zwischenspeicherung im LGB 57 außerdem über eine interne Ringleitung und werden im LPD 54 zwischengespeichert, um möglicherweise von einem nachfolgenden XECC-Vorgang verwendet zu werden. Mit Änderungen an der Steuerlogik können dieselben Zwischenspeicher verwendet werden, um Zyklen mit mehr als acht Übertragungen zu puffern und im Pipeline-Verfahren zu verarbeiten. RMW-Zyklen, die mit direkten Schreibvorgängen beginnen, erhalten einen leichten Leistungsvorteil, indem mit im Pipeline-Verfahren verarbeiteten Schreibvorgängen wie denjenigen aus den vollständigen Direktspeicherungszyklen begonnen wird.
  • Der Datenflußpfad für einen PW-RMW-Vorgang wird in der folgenden Erläuterung hervorgehoben. Vier Systemübertragungen werden in den Zwischenspeichern S1E, S1O, S2E und S2O 53 gepuffert. Zur gleichen Zeit wird ein Vorabruf zum Speicher durchgeführt. Die gepufferten Speicherdaten werden gehalten, während die abgerufenen Daten in die FET-Zwischenspeicher 51a und 51b zwischengespeichert werden, falls nötig, zur Einzelbitkorrektur durch die ECC-Logik 55a und 55b geführt und anschließend in den LGB-Zwischenspeichern 57a, 57b gespeichert werden. Der Fall, bei dem der XECC aktiviert wird, um einen Mehrbitfehler zu bearbeiten, wird in diesem Beispiel nicht behandelt. Die Daten werden dann über eine interne Ringleitung zu den LPD-Zwischenspeichern 54a, 54b geleitet. Die Speichermultiplexer 122a und 122b werden gesetzt, folglich werden die S1E- und S1O-Daten mit Ringleitungsdaten in die Abruf-/Speicherungs-Multiplexerschaltungen 120a, 120b geführt. Es sei darauf hingewiesen, daß die Abruf-/Ringleitungsmultiplexer 121a und 121b gesetzt werden müssen, um den Ringleitungspfad und nicht den Speicherabruf- oder den Redundanzbitauslagerungs-Pfad auszuwählen. Schreibfreigabesignale wählen Ringleitungs- oder Speicherpufferdaten auf einer Byte- Basis. Das neue Wort wird anschließend durch den ECC 55a, 55b geführt und mit den neu erzeugten Prüfbits von der ECC-Logik und, falls nötig, mit dem geeigneten Redundanzbit in den LGB- Zwischenspeichern 57a, 57b gespeichert. Die Daten von den LGB- Zwischenspeichern 57a, 57b werden anschließend im Speicher gespeichert. Der Speicherpuffermultiplexer 122a, 122b wählt anschließend die S2E- und S2O-Zwischenspeicher 126a und 126b. Es erfolgt kein weiterer Vorabruf. Diese ausgewählten Speicherdaten werden anschließend durch den ECC 55a, 55b geführt, um Prüfbits zu erzeugen, und anschließend in die LGB-Zwischenspeicher 57a, 57b gespeichert. Diese Daten werden dann im Speicher gespeichert.
  • Bei dieser RMW-Architektur gibt es eine Vorabrufoption, die auf dieser Karte nicht verwendet wird, jedoch verwendet werden könnte, um ein zusätzliches Beseitigen von weichen Fehlern bereit zustellen. Wenn Bytes innerhalb eines ECC-Wortes vorher abgerufen werden, jedoch nicht, um überschrieben zu werden, laufen die Bytes auf dieser Karte durch die ECC-Korrekturlogik, werden jedoch nicht erneut im Speicher gespeichert. Falls gestattet würde, daß diese Speicherung stattfinden kann, würde ein weicher Fehler innerhalb dieses nicht überschriebenen ECC-Wortes aus dem Speicher gelöscht werden.
  • Ein erweiterter ECC wird bei normalen Abrufvorgängen durchgeführt, um die Systemausfallzeit aufgrund des Auftretens von nicht korrigierbaren Speicherdatenfehlern auf ein Minimum herabzusetzen. Dies wird erreicht, indem das XECC-Doppelkomplement- Verfahren verwendet wird, um den maschinenbedingten Fehler aus einer Verbindung von einem maschinenbedingten und einem weichen Fehler zu entfernen. Dies ermöglicht, daß der Einzelfehlerkorrektur-/Doppelfehlerkorrektur-(SEC-/DED-)ECC bei der Übertragung korrekte Daten bereitstellt und der weiche Fehler aus dem Speicher gelöscht wird. Der erweiterte ECC wird für RMW-Vorabrufe bereitgestellt, um eine größere Anzahl von erfolgreichen partiellen Speichervorgängen zu ermöglichen. Dies spiegelt sich letzten Endes in einer Verringerung der Abrufvorgänge betreffenden XECC-Treffer und in einer möglichen Verringerung von nicht korrigierbaren Fehlern wider. Die mit der partiellen Speicherung verbundene XECC-Verzögerung ist weniger kritisch als die mit einem nachfolgenden Abruf verbundene. Bei einer partiellen Speicherung belastet das System den Bus mit den Speicherübertragungen. Sogar falls für die ersten übertragenen Speicherdaten ein Vorabruf erfolgen muß, puffert die Karte alle Speicherdaten in einen zusammenhängenden Block und bearbeitet alle Manipulationen intern. Folglich kann die Karte während des internen XECC-Zyklus belegt sein, der Bus könnte jedoch frei zur Verwendung sein. Bei einem Abruf belastet die XECC-Verzögerung den Bus, da die anfordernde Einheit auf die Übertragung der korrigierten Daten wartet. Zwischen Datenübertragungen können in diesem Fall beträchtliche Lücken vorhanden sein, falls der XECC in der Mitte eines Mehrfachübertragungs-Abrufvorgangs stattfinden.
  • Ohne XECC wäre jeder während eines RMW-Vorabrufs auftretende Doppelbitfehler nicht korrigierbar. Dies würde als ein ungerader Mehrbitfehler bearbeitet, oder ein nicht erfolgreicher XECC-Vorgang würde durch den vorliegenden Entwurf bearbeitet. Der letzte Schreibvorgang zu den Matrizen würde für diesen RMW-Vorgang blockiert werden, um die defekten, jedoch erkennbaren Daten an dieser Position beizubehalten. Folglich würde die partielle Speicherung nicht stattfinden. Dies garantiert, daß ein nachfolgender Abruf zu dieser Position, außer wenn sie zuvor vollständig überschrieben würde, wiederum zu einer nicht korrigierbaren Fehlersituation führen würde.
  • Mit dem XECC könnte ein Doppelbitfehler, der aus einem maschinenbedingten und einem weichen Fehler besteht, vorher abgerufen und korrigiert werden. In diesem Fall wird der weiche Fehler unabhängig davon, wo sich die Fehler in bezug auf das (die) überschriebene(n) Byte befinden, aus dieser Position entfernt, falls der XECC erfolgreich ist. Folglich führt ein nachfolgender Abruf aufgrund des verbleibenden maschinenbedingten Fehlers nur zu einer Einzelbitkorrektur und nicht zu einem die Datenübertragung verlangsamenden XECC. Bei einem maschinenbedingten Doppelfehler können die Fehler in der Matrix, die die Fehler verursachten, nicht korrigiert werden, indem jedoch gestattet wird, daß die partielle Speicherung stattfinden kann, könnten die überschriebenen Daten nun für eines oder beide Bits mit der Ebene übereinstimmen, an der sie haften. Folglich würden die Daten bei einem nachfolgenden Abruf die Fehler nicht als Bitausfälle zeigen, die es den Aufruf des XECC erforderlich machen.
  • Der XECC kann durch Doppelbitfehler in einem oder mehreren ECCs über den Speicheranschluß hinweg aktiviert werden. In dieser Anmeldung gibt es zwei ECCs pro Modul, zwei Module pro Karte und eine oder zwei Karten pro Anschluß. Falls nur ein ECC den XECC aktivieren muß, müssen alle ECCs über dem Anschluß, unabhängig von der Anzahl von ECCs über einem Anschluß, eine zeitlich ähnlich gesteuerte XECC-ähnliche Maßnahme ausführen, um alle Module synchron zu halten. Die Synchronisierung wird für eine korrekte Matrix und korrekte Systemoperationen benötigt. Die Übertragungsleitungen XSYNC und XACKN über den Chip werden verwendet, um diese Funktion auszuführen. Für RMW-bezogene XECC-Vorgänge bedeutet dies, daß drei verschiedene Typen von internen XECC- Vorgängen entwickelt werden mußten. Ein XECC-Vorgang ist der "vollständige" XECC-Vorgang, bei dem alle normalen Schritte während des Vorgangs stattfinden können. Die beiden anderen sind "veränderte" XECC-Vorgänge, bei denen bestimmte Schritte geändert werden. Die Notwendigkeit für diese und die zugeordneten Verarbeitungsschritte werden unten beschrieben.
  • Die Art des ausgeführten XECC-Vorgangs hängt in erster Linie von zwei Dingen ab. Eines ist der RMW-bezogene Status der bestimmten
  • ECC-Wortgrenzen, und der andere ist der Fehlerstatus innerhalb dieses ECCs. Es gibt drei Arten von RMW-Status: 1) Die Bytes innerhalb der ECC-Grenzen werden vollständig überschrieben, 2) mindestens eines, jedoch nicht alle Bytes werden überschrieben und 3) es werden keine Bytes innerhalb der Grenzen überschrieben. Außerdem gibt es drei Arten von ECC-Fehlerstati: 1) keine Fehler oder ein korrigierter Einzelbitfehler, 2) gerader Mehrbitfehler und 3) ungerader Mehrbitfehler. Falls der XECC auf einem Modul im Anschluß deaktiviert wird, so muß er für alle Module deaktiviert werden. Falls ein Modul mit einem aktiven XECC einen Synchronisierungsimpuls aussendet, um anzuzeigen, daß es einen XECC-Vorgang einleitet, und ein Modul mit einem deaktivierten XECC das Synchronisierungssignal empfängt, aktiviert das empfangende Modul eine Prüfeinrichtung, und der Vorgang wird eingestellt.
  • Im Register für spezielle Funktionen (SFR) 72 gibt es zwei Bits, die einen XECC-Vorgang bei normalen Abrufen gestatten und die gestatten, daß RMW-Vorabrufe unabhängig aktiviert oder deaktiviert werden. Falls alle RMW-XECCs über dem Anschluß deaktiviert werden, verursacht ein Mehrbitfehler (gerade oder ungerade) eine sofortige Aktivierung eines externen Signals für einen nicht korrigierbaren Fehler (UCE). Zur Fehlerbehebung und Diagnoseflexibilität kann dieses Fehlersignal für die Systemoperation blockiert werden (Abruffehler müssen bei Speicherungen nicht angezeigt werden, nur bei einem nachfolgenden Abruf) oder zur Fehlerbehebung aktiviert werden. Ein UCE kann außerdem bei einem nicht erfolgreichen XECC-Vorgang aktiviert werden.
  • Die folgende Kombination von RMW- und Fehlerstatus führt zum Ablauf eines "vollständigen" XECC-Vorgangs für diesen ECC-Sektor. Dies findet bei einem RMW-Status, bei dem mindestens eines, jedoch nicht alle Bytes innerhalb der ECC-Grenzen mit einem Überschreibvorgang verbunden sind, und bei dem Fehlerstatus, bei dem ein Mehrbitfehler vorhanden ist, statt. In diesem Fall bleiben einige der vorher abgerufenen Daten unverändert; folglich muß ein Versuch unternommen werden, die Fehler zu korrigieren, bevor ein Schreibvorgang zum Speicher durchgeführt wird. Verschiedene RMW- oder Fehlerstati in den anderen ECC-Sektoren beeinflussen den vollständigen Vorgang für diesen ECC-Sektor nicht. Die Einzelheiten dieses "vollständigen" XECC-Vorgangs werden im folgenden Schritt für Schritt beschrieben:
  • ANFÄNGLICHER ABRUF
  • 1) Der Vorabruf zum Speicher wird aktiviert, um die partielle Speicherung innerhalb einer Matrixgrenze zu erleichtern.
  • 2) Ein gerader Mehrbitfehler ist innerhalb der 4-Byte-ECC- Grenze vorhanden, die mit dieser partiellen Speicherung verbunden ist.
  • 3) Es wird ein RMW-XECC ausgelöst, das XECC-Synchronisierungssignal (XSYNC) für dieses Logikmodul wird aktiviert, um das andere Modul/die anderen Module zu synchronisieren.
  • 4) Normale Abruffehlersignale werden nicht aktiviert.
  • 5) Die fehlerhaften vorher abgerufenen Daten, die von den
  • FET-Zwischenspeichern 51 durch den ECC 55 und in die LGB-Zwischenspeicher 57 weitergeleitet wurden, werden anschließend vom LGB in einer Schleife zu den LPD-Zwischenspeichern 54 geführt.
  • 6) Es werden keine Daten auf den Systembus ausgegeben.
  • 7) Der BELEGT-Status der Karte wird während des gesamten XECC- und RMW-Vorgangs aktiv gehalten.
  • UMKEHREN/SPEICHERN
  • 1) Die Daten werden von den LPD-Zwischenspeichern 54 durch eine invertierte Exklusiv-ODER-Schaltung 129 zu den LGB-Zwischenspeichern 57 übertragen. Die Umkehrung erfolgt bei den Datenbits (DBs) und den Prüfbits (CBs) Folglich werden die bei der Speicherung vom ECC erzeugten CBs blockiert.
  • 2) Es wird keine Umkehrung im Redundanzbit-(RB-)Pfad benötigt. Die Stelle, an der die DB- und CB-Pfade in die RB-Speicherauswahllogik geführt werden, befindet sich hinter den Exklusiv-ODER-Schaltungen, die die Umkehrung bei den DB- und CB-Daten durchführen. Folglich wird die Umkehrung für die auszulagernden RBs automatisch bearbeitet.
  • 3) Die Daten werden anschließend aus den LGB-Zwischenspeichern 57 in den Speicher eingespeichert. Es wird dieselbe Speicherposition beschrieben, die anfänglich gelesen wurde. Nur die Matrixdaten-E/A für den(die) geeigneten ECC(s) wird aktiviert, um die Speicherung zu ermöglichen. Diese Auswahl wird ausgeführt, indem nur die zugeordneten Matrixdatenauswahlen aktiviert werden.
  • UMKEHRUNG/ABRUF
  • 1) Die Daten werden aus derselben Speicherposition abgerufen und in den FET-Zwischenspeichern 51 gespeichert. Diese Daten werden anschließend zu der Umkehrungs-Exklusiv-ODER-Schaltung 129 und zur ECC-Logik 55 geführt. Wiederum muß die Umkehrung nur bei den DBs und CBs durchgeführt werden, da die RBs vor der umkehrenden Exklusiv-ODER-Schaltung in diese Pfade ausgelagert werden.
  • 2) Die ECC-Korrektur findet wie bei einem normalen Abruf statt. Falls beide anfänglichen Fehler maschinenbedingt wären, würden an dieser Stelle keine Fehler erkannt werden, und es würden keine Fehlerleitungen aktiviert werden. Falls ein maschinenbedingter und ein weicher Fehler auftreten würden, würde das Einzelbitfehler-Signal aktiviert werden, und die Korrektur würde bei dem DB oder CB erfolgen, das mit dem weichen Fehler verbunden ist.
  • 3) Die korrigierten Daten werden in den LGB-Zwischenspeichern 57 gespeichert und anschließend in einer Ringleitung zu den LPD-Zwischenspeichern 54 geführt und dort gespeichert.
  • 4) Die Syndromregister 56a werden aktiv und gemäß der zugeordneten Biteinstellungen des Registers 72 für spezielle Funktionen für Syndromregister-Aktivierungen gesteuert.
  • RÜCKSPEICHERN
  • 1) Bei einem erfolgreichen RMW-XECC erfolgt keine Rückspeicherung wie diejenige bei einem XECC für einen Befehl 3XX (normaler Abruf). Statt dessen geht das Umkehren/Abrufen direkt in die Fortsetzung des RMW-Zyklus über. Folglich kann der XECC an dieser Stelle als beendet betrachtet werden, da die folgenden Maßnahmen für einen normalen partiellen Schreibvorgang ohne XECC stattfinden.
  • 2) Es erfolgt eine Byte-breite Auswahl der vorher abgerufenen und korrigierten Daten in den LPD-Zwischenspeichern 54 oder der gepufferten Speicherdaten 53 in Abhängigkeit vom Pegel der zugeordneten internen Schreibfreigabesignale. Die Speicherpufferdaten werden aus den Zwischenspeichern S1E, S1O, SB1, SB2, S2E und S2O ausgewählt.
  • 3) Für die ausgewählten Daten werden vom ECC Prüfbits erzeugt, und die geeignete RB-Auslagerung findet statt. DB, CB und RB werden anschließend in den LGB-Zwischenspeichern gespeichert und für diesen ECC in den Speicher eingespeichert.
  • 4) Der Rest des RMW-Zyklus läuft normal weiter.
  • NICHT ERFOLGREICHER XECC
  • 1) Falls zwei weiche Fehler vorhanden sind, wird das Signal für einen nicht korrigierbaren Fehler (UCE) nur aktiviert, falls das zugeordnete SFR-Bit gesetzt wird. Wenn dieses Bit zurückgesetzt wird, wird kein UCE erzeugt. Das UCE wird aktiviert, nachdem die zugegehörigen Daten in den LGB-Zwischenspeichern 57 gespeichert sind, und wird aktiv gehalten, bis es auf einen L-Pegel gesetzt wird, wenn der BELEGT-Status der Karte inaktiv wird. Einen Takt später wird das UCE in den H-Status versetzt.
  • 2) Bei einem nicht erfolgreichen RMW-XECC darf die partielle Speicherung in den Speicher nicht gestattet werden, wie es durch den Befehl gesteuert wird. Es muß jedoch eine Rückspeicherung in den Speicher erfolgen. Dies wird durchgeführt, um Daten in einem solchen Status im Speicher zu speichern, daß sie, wenn erneut auf sie zugegriffen wird, immer noch einen erkannten, jedoch nicht korrigierbaren Fehler enthalten. Die rückgespeicherten Daten müssen genau dieselben sein wie die anfänglich abgerufenen. Ein logischer Fehler könnte die Daten verändern und stellt nur ein Problem dar, falls er ein Entkommen verursacht. Dies ist höchst unwahrscheinlich.
  • 3) Bei der Rückspeicherung findet immer noch eine Auswahl zwischen den "fehlerhaften" Ringleitungsdaten im LPD 54 und den gepufferten Speicherdaten 53 statt. Die resultierenden Daten, die mit den erzeugten CBs und RBs ausgewählt werden, werden im LGB 57 blockiert. Folglich werden die anfänglichen fehlerhaften Daten wieder in den Speicher eingespeichert. Es wurde bestimmt, daß die XECC-Schritte die anfänglich abgerufenen Daten nicht verändert, falls der XECC nicht erfolgreich war, und diese LGB-Blockierung findet statt. Der Block im LGB wurde anstelle einer Position zu einem früheren Zeitpunkt ausgewählt, um genügend Zeit für eine interne Signalrückführung zur Steuerlogik 65 zu gestatten.
  • Es sei darauf hingewiesen, daß für die Rückspeicherung keine Zeit hinzugefügt wird. Die hier dargelegte Rückspeicherung ist die Fortsetzung des RMW-Zyklus, wie es beim erfolgreichen XECC der Fall ist, mit der Ausnahme, daß die anfänglichen fehlerhaften Daten anstelle der geänderten partiellen Speicherdaten zurück in den Speicher gespeichert werden.
  • Die folgenden Kombinationen von RMW- und Fehlerstatus führen zum Auftreten von einer oder zwei "geänderten" XECC-Vorgängen für diesen ECC-Sektor. Der XECC "Geändert 1" findet in den folgenden Fällen statt: 1) bei einem RMW-Status, bei dem mindestens eines, jedoch nicht alle Bytes innerhalb der ECC-Grenzen mit einem Überschreibvorgang verbunden sind, und bei dem Fehlerstatus, bei dem ein Einzelbitfehler oder kein Fehler in diesem ECC vorhanden ist, jedoch ein Mehrbitfehler in einem anderen ECC vorhanden ist, und 2) bei einem RMW-Status, bei dem alle Bytes im ECC vollständig überschrieben oder für einen beliebigen Fehlerstatus überhaupt nicht geschrieben werden. In diesem Fall sind die XECC-Schritte dieselben wie beim "vollständigen" XECC mit folgenden Ausnahmen:
  • UMKEHREN/SPEICHERN
  • 1) Die Daten von den LPD-Zwischenspeichern 54 bis zu den LGB-Zwischenspeichern 57 werden nicht invertiert.
  • 2) Die Daten im LGB 57 werden für diesen ECC nicht im Speicher gespeichert.
  • UMKEHREN/ABRUFEN
  • 1) Der Abruf aus dem Speicher wird gestattet, die abgerufenen Daten werden jedoch durch die Auswahl von zwischengespeicherten LPD-Daten intern in der Logik bei den Logikblöcken 121 blockiert.
  • 2) Die LPD-Daten werden nicht invertiert, bevor sie im LGB 57 zwischengespeichert werden.
  • 3) Das zugeordnete UCE-Fehlersignal wird für diesen ECC blockiert.
  • 4) Die LGB-Daten werden in einer Ringleitung zum LPD zurückgeführt, anschließend läuft der RMW-Vorgang normal weiter.
  • 5) Folglich hält der geänderte XECC die Maßnahmen von diesem ECC-Sektor synchron zu denjenigen des ECC-Sektors/der ECC-Sektoren, der/die den vollständigen XECC-Vorgang durchführt/durchführen. Die anfänglich abgerufenen Daten werden jedoch von der Logik nicht verändert und während des XECCs beibehalten. Diese gehaltenen Daten werden anschließend für die Auswahl zwischen gespeicherten zu überschreibenden Daten oder abgerufenen Daten, die für den Fall, daß die partielle Speicherung mit diesem ECC verbunden ist, unverändert bleiben, verwendet. Dies erfolgt, um das Risiko, daß gültige Daten in diesem ECC-Sektor durch unnötige, den Speicher betreffende Speicherungen oder Abrufe gestört werden, zu verringern.
  • Der XECC "Geändert 2" findet bei einem RMW-Status statt, bei dem mindestens eines, jedoch nicht alle Bytes innerhalb der ECC- Grenzen mit einem Überschreibvorgang verbunden sind, und bei dem Fehlerstatus, bei dem ein ungerader Mehrbitfehler vorhanden ist. Verschiedene RMW- oder Fehlerstati in den anderen ECC-Sektoren beeinflussen den Vorgang für diesen geänderten XECC nicht. In diesem Fall sind die XECC-Schritte dieselben wie beim "vollständigen" XECC mit folgenden Ausnahmen:
  • ANFÄNGLICHER ABRUF
  • 1) Der Vorgang ist derselbe wie beim vollständigen XECC, außer, daß das interne Signal für einen nicht korrigierbaren Fehler (IUCE) zum Zeitpunkt des Vorabrufes aktiviert wird. Das externe UCE wird aktiviert, falls das zugeordnete SFR-Bit gesetzt wird, und wird bis zum Ende des Zyklus aktiv gehalten, auch wenn der vollständige XECC beim Mehrbitfehler innerhalb eines anderen ECC-Sektors erfolgreich ist.
  • UMKEHREN/SPEICHERN
  • 1) Derselbe Vorgang wie beim XECC "Geändert 1".
  • UMKEHREN/ABRUFEN
  • 1) Derselbe Vorgang wie beim XECC "Geändert 1", außer, daß das UCE nicht blockiert wird und der RMW-Vorgang nicht normal weiterläuft. Statt dessen werden die folgenden Maßnahmen durchgeführt, die diesen XECC einzigartig machen: Die Auswahl zwischen fehlerhaften Daten im LAED 54 und gepufferten Speicherdaten 53 nach dem XECC-Vorgang wird gestattet, und das Ergebnis wird im LGB zwischengespeichert, die invertierten Daten werden jedoch im Speicher gespeichert. Da die anfänglichen fehlerhaften Daten durch die XECC-Vorgänge nie geändert wurden, werden diese fehlerhaften Daten aufbewahrt, indem der Speicher blockiert wird.
  • Dieser geänderte XECC führt dieselben Funktionen aus wie der andere geänderte XECC, indem dieser XECC synchron mit denjenigen des ECC-Sektors/der ECC-Sektoren, der/die den vollständigen XECC durchführt/durchführen, gehalten wird und indem die damit verbundenen Daten ungestört bleiben, indem sie gespeichert werden und während des XECCs nicht in diesen Teil des Speichers gelangen. Da jedoch ein ungerader Mehrbitfehler mit diesem ECC verbunden war, konnte der Fehler nicht korrigiert werden. Folglich wird nach dem XECC die mit dem Vorabruf verbundene normale RMW- Speicherung blockiert, um die Daten erkennbar im Speicher aufzubewahren.
  • Es gibt einen anderen RMW-Status, wenn ein Mehrbitfehler im Vorabruf auftritt. Bei einem RMW-Status, bei dem mindestens eines, jedoch nicht alle Bytes mit einem Überschreibvorgang verbunden sind, und bei dem Fehlerstatus, bei dem ein Einzelbitfehler oder kein Fehler in diesem ECC vorkommt und nur ein oder mehrere ungerade Mehrbitfehler in den anderen ECCs vorkommen. In diesem Fall wird kein XECC aktiviert, und es wird ein normaler RMW-Vorgang durchgeführt. Dieser ECC gestattet einen resultierenden Überschreibvorgang zum Speicher. Bei dem mit dem ungeraden MBE verbundenen ECC wird jeder Überschreibvorgang blockiert, und er gestattet, daß das UCE aktiviert wird, falls das SPR-Bit gesetzt wird.
  • Die vorliegende Erfindung umfaßt ein Entfernungs-(Beseitigungs-) Verfahren für weiche Fehler, das im gesamten Speicher durchgeführt wird. Es wird von dem normalen Prozeß aktiviert, den das System verwendet, um die Kartenauffrischung der dynamischen Arbeitsspeicher (DRAMs) einzuleiten. Das System aktiviert eine Auffrischleitung bei einer mittleren Geschwindigkeit von einmal alle 15,6 Mikrosekunden. Die Auffrischsteuerung durch die Verwendung eines Karten-Auffrischzählers ist nach dem Stand der Technik üblich. Der einzigartige Teil der vorliegenden Erfindung ist, daß die Löschfunktion für weiche Fehler auf eine transparente Weise mit diesem Auffrischvorgang verbunden ist.
  • Die Speicherkarte im IBM 9370 Prozessor hatte die Fähigkeit zum Beseitigen von weichen Fehlern, sie wurde jedoch nie vom System realisiert. Die Löschfähigkeit war nicht transparent und bestand aus zwei vom System aktivierten Befehlen, die einen Basisabruf aus führten, auf den ein Schreibvorgang mit Null-Byte-Änderung folgte. Das Beseitigen von weichen Fehlern an einer Position der Speicherkarte im IBM Prozessor 9370 konnte durch das Ausführen eines Null-Byte-RMW-Vorgangs verwirklicht werden. Die beiden Startbyte-Adreßbits werden ignoriert. Folglich belastet ein Löschvorgang bei einer Karte auf dem Bus den Bus für zwei Befehlszyklen. Diese Art des Beseitigens würde die Speicherverfügbarkeit und die damit verbundene Systemleistung erheblich beeinflussen, falls der gesamte Speicherbereich oft gelöscht werden müßte. Mit anderen Worten, die ECC-Wörter wurden aus einer Speicherposition ausgelesen, und die ECC-Logik wurde verwendet, um einen oder mehrere Einzelbitfehler zu korrigieren. Der Null-Byte-Änderungsschreibvorgang gestattete anschließend, daß die korrigierten ursprünglichen Daten ohne externe Überschreibvorgänge an dieselbe Position zurückgebracht wurden. Falls die Einzelbitfehler weich waren, löscht dieser aus zwei Schritten bestehende Prozeß sie aus.
  • Gemäß der vorliegenden Erfindung verwendet ein transparentes Verfahren denselben aus zwei Schritten bestehenden Basisprozeß, außer, daß das System die Speicherverfügbarkeit nicht durch die Belastung des Speicherbusses mit Befehlen beeinflussen muß. Nach diesem Schema kann eine Speicherkarte auf dem Bus einen transparenten Auffrisch-/Löschvorgang durchführen, der den Bus nicht belastet, während eine andere Karte den Bus für einen Abruf und eine Speicherung verwenden kann. Die Karten-Auffrisch- und Bereinigungszähler eliminieren die Notwendigkeit von Daten- und Adressenübertragungen auf dem Bus. Es sei darauf hingewiesen, daß ein maschinenbedingter Fehler ein Fehler ist, bei dem das zugeordnete Matrixbit physisch beschädigt ist und stets bei einem Wert haften bleibt. Ein weicher Fehler ist ein Fehler, bei dem das Bit/die Zelle nicht beschädigt ist. In diesem Fall hat Strahlung (Alphapartikel) oder Rauschen bewirkt, daß sich die Daten zu einem inkorrekten Status ändern. Dieser Fehler kann leicht behoben werden, indem die korrekten Daten über den Löschvorgang zurückgebracht werden.
  • Weiche Fehler können sich mit der Zeit in Abschnitten eines großen Speicherbereichs ansammeln. Das Ausführen einer Beseitigungsroutine für weiche Fehler durch den gesamten Speicherbereich bei einem definierten Zeitintervall stellt sicher, daß sich normale Fehler nicht in selten genutzten Abschnitten ansammeln. Durch die Verbindung des Löschvorgangs mit dem Auffrischen kann dies gut verwirklicht werden, da der Auffrischvorgang ebenfalls bei regelmäßigen Zeitintervallen im gesamten Speicherbereich durchgeführt werden muß. Die Zählereinstellung in Fig. 18 gestattet, daß die schnellere Auffrischgeschwindigkeit auf die langsamere Auffrischgeschwindigkeit skaliert werden kann, um sicherzustellen, daß die Speicherverfügbarkeit nicht beeinflußt wird. Das Beseitigen der weichen Fehler ist wichtig, um das Auftreten von zwei aneinandergereihten weichen Fehlern in einem ECC-Wort auf ein Minimum herabzusetzen. Die ECC-Logik kann in Verbindung mit der erweiterten ECC-Logik (Doppelkomplement-Wiederholung) Kombinationen aus zwei maschinenbedingten oder einem maschinenbedingten und einem weichen Fehler erkennen und korrigieren, kann jedoch nicht zwei aneinandergereihte weiche Fehler korrigieren. Dies ist erkennbar, führt jedoch zu einem nicht korrigierbaren Fehler, der die Systemoperation beeinflussen kann. Ein weicher Fehler, der, was wahrscheinlicher ist, mit zwei maschinenbedingten Fehlern aneinandergereiht ist, könnte eine ernstere Situation darstellen, bei der die ECC-Logik den Fehler falsch korrigieren würde. In diesem Fall könnte ein unerkannter Fehler entkommen; folglich müssen weiche Fehler ständig überprüft werden, um eine Zusammenstellung, die dies verursachen könnte, zu verhindern.
  • Die Speicherkarte gemäß der vorliegenden Erfindung verwendet die Karten-RMW-Hardware, um einen transparenten Null-Byte-Schreib- Löschvorgang durchzuführen. Dies wird mit Bezugnahme auf die Fig. 18, 19 und 20 beschrieben. Der transparente Löschvorgang wird durch dessen Vermischung mit dem Auffrischvorgang verwirklicht. Was die Matrizen betrifft, ist ein Abruf bei einer Wortzeilenposition dasselbe wie ein Auffrischvorgang. Die Karten- Beseitigungslogik verwendet dies, indem sie einen Löschvorgang, d. h. einen Abruf- und Speichervorgang, anstelle eines Auffrischvorgangs ausführt.
  • Wenn das System bestimmt, daß ein Auffrischvorgang benötigt wird, aktiviert es das Kartenauffrischsignal (REP) . Falls die zugeordneten Bits des Registers für spezielle Funktionen so gesetzt werden, daß der Löschvorgang ausgeschaltet wird, besteht der Auffrischzyklus nur aus zwei versetzten Matrixauffrischungen. Falls der Löschvorgang durch die Bits aktiv ist und die zugeordneten Zähler anzeigen, daß ein Löschvorgang durchgeführt werden muß, besteht der Löschzyklus aus vier Abruf- und Speicher-Löschvorgängen, die zwischen zwei Matrixgruppen aufgeteilt werden. Falls vier Matrixgruppen vorliegen, führen die anderen beiden Gruppen während dieser Zeit zwei Auffrischungen durch. Es muß auf Fig. 19 Bezug genommen werden.
  • Fig. 19 wird verwendet, um darzustellen, wie das Löschen mit dem Auffrischbefehlsvorgang vermischt wird. Wenn nur eine Auffrischung durchgeführt werden muß (in der Figur nicht gezeigt), werden alle RAS-Leitungen zu den Speichermatrizen aktiviert. Die CAS-Leitungen werden inaktiv gehalten. Dies führt bei allen Matrizen auf einer Zwei-Gruppen-Karte eine nur RAS-bezogene Auffrischung durch. Zwei Auffrischungen werden mit dem einen Auffrischbefehl durchgeführt, um eine verkürzte Zyklus zeit für das Paar auszunutzen. Bei dem Zwei-Gruppen-Löschen wird das Paar von Auffrischungen durch zwei Paare von Löschvorgängen ersetzt. Zwei Löschvorgänge müssen ein Auffrischen ersetzen, da zwei Gruppen zur gleichen Zeit aufgefrischt werden können, jedoch nur eine Gruppe auf einmal gelöscht werden kann. Dies ist auf die Tatsache zurückzuführen, daß bei einer Auffrischung mit den Matrizen keine Daten übertragen werden, bei Löschvorgängen muß dies jedoch erfolgen. Aufgrund der Daten-Ein-/Ausgabekopplung der Gruppen kann nur eine Gruppe zu einem Zeitpunkt Daten übertragen. Bei dem Fall mit vier Gruppen werden zwei Gruppen aufgefrischt, wenn die beiden anderen Gruppen gelöscht werden, wobei alles von den jeweiligen Adreßwerten in den Beseitigungs- und Auffrischzählern zu diesem Zeitpunkt abhängt.
  • Wenn der Auffrisch-/Löschvorgang erfolgt ist, wird die BELEGT- Leitung der Karte inaktiv, um anzuzeigen, daß die Karte verfügbar ist. Alle Adressierungen für Auffrisch- und Löschvorgänge werden durch interne Zähler bearbeitet. Folglich muß das System nur eine Signalleitung zu einer Karte aktivieren, um den Löschvorgang durchzuführen. Da keine Adressen gesendet werden müssen, belasten die Auffrischbefehlsaktivierungen den Bus zu keinem Zeitpunkt und belasten die Karte für nur einen Befehlszyklus.
  • Es werden zwei Löschvorgänge benötigt, um einen Auffrischvorgang zu ersetzen, da eine Auffrischung bei achtzig Matrizen gleichzeitig erfolgen kann, ein Abruf- und Speichervorgang kann jedoch nur bei einer Gruppe (vier Matrizen) auf einmal durchgeführt werden. Folglich ist der vollständige Löschvorgang ähnlich wie antiparallel geschaltete RMW-Zyklen, die jeweils aus "PP"-Vorgängen in Abhängigkeit von Matrixübertragungen bestehen (in Abhängigkeit von Systemübertragungen wäre es PWWP)
  • Wie in Fig. 18 gezeigt wird, umfaßt jedes Modul einen Auffrischzähler und einen Bereinigungszähler. In Fig. 18 entsprechen die Zeilenadreßbits (0 bis 9) des Auffrischzählers den Wortzeilen der Matrizen, die zu einem vorbestimmten Zeitintervall aufgefrischt werden müssen. Nachdem die Karte eingeschaltet ist und sowohl dieser Zähler als auch der Löschungszähler auf Null zurückgesetzt sind (eine positive Logik wird vorausgesetzt), existiert zwischen dem Bereinigungszähler und dem Auffrischzähler eine Datenübereinstimmung.
  • Das folgende Beispiel setzt voraus, daß das SFR-Bit auf 01 gesetzt ist. Wie durch die neun Cs in der zugeordneten Reihe des Diagramms gezeigt wird, wird ein Paar von doppelten Löschvorgängen durchgeführt, wenn die Bits 1 bis 9 des Auffrischzählers mit den Zeilenadreßbits 1 bis 8 und * des Bereinigungszählers übereinstimmen. Folglich wird beim ersten Auffrischbefehl ein Löschvorgang durchgeführt. Jedesmal, wenn ein Auffrischbefehl aktiviert wird, wird ein Paar von Auffrischvorgängen durchgeführt (zwei Wortzeilen), und folglich wird das Bit eins des Auffrischzählers aktualisiert. Jedesmal, wenn ein Paar von doppelten Löschvorgängen durchgeführt wird, wird das Bit eins der Spaltenadresse des Bereinigungszählers aktualisiert. Folglich weisen die zuvor zurückgesetzten Register nach dem ersten Auffrischbefehl an diesen beiden Bit-Eins-Positionen Eins-Werte auf. Wenn nun der zweite Auffrischbefehl eintrifft, stimmen neun Vergleichsbits nicht mehr überein. Daher werden keine Löschvorgänge, sondern nur Auffrischungen durchgeführt.
  • Wenn zu dem vorgeschriebenen Zeitintervall mehrere Auffrischungen stattfinden, wird der Auffrischzähler weiterhin erhöht, und der Bereinigungszähler bleibt bei der ersten Zählerhöhung. Wenn alle Speicherpositionen der Karte aufgefrischt wurden, werden die Auffrischzählerbits 0 bis 9 wieder alle Nullen, und das Bit A des Zählers hat einen Wert von eins. Bei der Einstellung von 01, sind die Bits A, B und C des Registers funktionell ein "irrelevanter Zustand", wenn der Zähler durch diesen Bereich erhöht wird. Nur die die Bits 0 bis 9 betreffende Zählung ist von Bedeutung. Jedes Schleifen durch diesen Bereich bedeutet, daß die Karte vollständig aktualisiert wurde. Da die Bits 1 bis * der Zeilenadresse des Bereinigungszählers immer noch auf Null sind, aktiviert jede Schleifen des Auffrischzählers den Löschvorgang, wenn die Vergleichsbits (C) alle auf Null sind. Wenn die Schlüssel-Auffrischzählerbits durch die Ringleitung gesendet werden, zählt der Bereinigungszähler folglich vorwärts durch den Spaltenadressen-Bitbereich, so daß die Daten von jeder Spaltenadresse auf der Karte für diese bestimmte Zeilenadresse gelöscht wurden.
  • Wenn alle Spaltenadressen für diese bestimmte Zeilenadresse durchgezählt wurden, wird der obige Vorgang für jede Zeilenadresse wiederholt, wenn die Zählung des Bereinigungszählers nun durch die Zeilenadreßbits weiterläuft. Die Zählung geht weiter, bis die Beseitigungszählung das Maximum für die neun Spaltenbits und die neun Zeilenadreßbits erreicht. An dieser Stelle wurde die Karte mit dem kleinsten Adreßbereich vollständig gelöscht, und der Löschvorgang beginnt erneut. Bei Karten mit größeren Speicherbereichen geht die Beseitigungszählung je nach der Kartengröße weiter bis zu den A-, B- oder C-Bits. Aus dieser Beschreibung ist zu ersehen, daß die Löschvorgänge über die Zeit verteilt sind und nicht gebündelt erfolgen.
  • Der Löschvorgang über den gesamten Anschluß wird von nur einem Modul gesteuert. Bei Ein-Karten-Anschlüssen ist es das linke Modul. Bei Zwei-Karten-Anschlüssen ist es das linke Modul auf der linken Karte. In diesem Steuermodul werden die Auffrisch- und Bereinigungszähler verglichen, um zu bestimmen, wann ein Löschvorgang stattfinden muß.
  • Der Bereinigungszähler wird jedesmal erhöht, wenn ein Löschvorgang durchgeführt wird. Der Bereinigungszähler kann nur vom System durch Abfragen oder über die RESET-Leitung während des Matrixtestmodus zurückgesetzt werden, und sowohl der Lösch- als auch der Auffrischvorgang müssen nach dem Einschalten zurückgesetzt werden (alle Nullen). Der Löschvorgang wird durch die Verwendung von Synchronisierungs- und Bestätigungsleitungen über einen ganzen Anschluß synchronisiert. Die Leitungen über den Chip stellen außerdem sicher, daß die Chipzähler über dem ganzen Anschluß auf denselben Werten bleiben. Diese Prüfung eliminiert die Notwendigkeit von Prüfschaltungsanordnungen zur Paritätsvorausbestimmung für jeden Zähler.
  • Der Abruf- und Speichervorgang des Löschens wird auf die folgende Art und Weise fortgesetzt. Die Daten werden aus einer Matrixposition (16 Byte) abgerufen, und die ECCs werden verwendet, um bis zu einem einzelnen maschinenbedingten oder weichen Fehler zu korrigieren. Falls ein ECC-Fehler maschinenbedingt oder normal ist oder falls kein Fehler aufgetreten ist, werden die korrigierten Daten intern in einer Ringleitung geführt, und die internen Schreibfreigabeleitungen werden alle aktiviert, um zu verhindern, daß Daten überschrieben werden. Anschließend werden die Daten auf den Matrixbus geführt. Falls ein Einzelbitfehler korrigiert wurde, werden Matrixdatenauswahlen für diesen zugeordneten ECC aktiviert, um die korrekten Daten an dieselbe Adreßposition zurückzubringen. Das Ergebnis von diesem Vorgang ist, daß jeder weiche Einzelfehler in dieser Speicherposition entfernt wird. Falls kein Fehler korrigiert wurde, werden die mit diesem ECC verbundenen Datenauswahlen nicht aktiviert. Dies erfolgt, um zu verhindern, daß die gültigen Daten im Speicher durch eine mögliche fehlerhafte Datenübertragung von der Logik gestört werden. Es gibt eine interne Prüfeinrichtung, um zu verhindern, daß Löschvorgänge auftreten, wenn andere, das Register für spezielle Funktionen betreffende Diagnosevorgänge aktiv sind. Dies verhindert die Möglichkeit einer unangebrachten Datenmanipulation während der Löschvorgänge, die die Datenintegrität beeinflussen kann.
  • Zum gegenwärtigen Zeitpunkt wird der erweiterte ECC (XECC) nicht während eines Löschvorgangs durchgeführt. Falls er verwendet werden müßte, könnte ein einzelner weicher Fehler, der mit einem maschinenbedingten Fehler aneinandergereiht war, aus dem Speicher gelöscht werden. Die doppelten Umkehrschritte des XECCs würden den maschinenbedingten Fehler entfernen und gestatten, daß der SEC/DED-ECC den einzelnen weichen Fehler korrigiert. Eine Rückspeicherung in den Speicher wäre in diesem Fall gestattet, um die mit dem weichen Fehler verbundenen fehlerhaften Daten zu bereinigen. Falls der XECC nicht ausgeführt wird, würde ein Abruf mit zwei oder mehreren fehlerhaften Bits eine Speicherung in die Matrizen verhindern, wie es der Fall ist, wenn kein Fehler vorhanden ist. Dies verhindert die Möglichkeit, daß ein falsch korrigierter dreifacher Bitfehler wieder in den Speicher eingespeichert wird, was folglich ein Entkommen von fehlerhaften Daten während eines nachfolgenden Abrufs zu dieser Position gestatten würde. Während eines Löschvorgangs werden in diesem Fall keine Fehlersignale erzeugt. Die Fehlersignale werden erzeugt, wenn ein Systemabruf zu dieser Position erfolgt.
  • Zwei Bits im Register für spezielle Funktionen werden verwendet, um die Auffrischgeschwindigkeit zu steuern. Die Kartenlogik aktiviert das System zum Voreinstellen der Löschgeschwindigkeit über den Diagnoseschreibbefehl 060 oder über das serielle Scannen in die Zwischenspeicher beim Einschalten (oder zu einem anderen Zeitpunkt) . Der Befehl 060 lädt das Register für spezielle Funktionen (SFR) über den mehrfach genutzten Datenbus. Diese Bits werden decodiert, um ein Nicht-Löschen (Standardeinstellung), ein fortwährendes Löschen (sollte nur für Testzwecke verwendet werden) und zwei verschiedene Systemlöschgeschwindigkeiten zu gestatten. Die Anzahl von FREQ-Bits in den Beseitigungs- und Auffrischzählern bestimmen diese Geschwindigkeiten. Es sei darauf hingewiesen, daß fortwährendes Löschen bedeutet, daß bei jeder Auffrischaktivierung ein Löschvorgang durchgeführt wird (im typischen Fall alle sechzehn Mikrosekunden) . Die kontinuierliche Geschwindigkeit ist verfügbar, um die mit dem Testen der Löschfunktion verbundenen Fertigungstestzeiten zu verkürzen. Die Systemverwendung wäre auf die Fehlerbehebung oder Diagnosevorgänge begrenzt.
  • Das Löschen mit einer ausgewählten Geschwindigkeit erfolgt auf eine verteilte Weise. Folglich wird eine feststehende Anzahl von Löschvorgängen so mit reinen Auffrischzyklen vermischt, daß ein konstanter Zeitraum zwischen den Löschvorgängen existiert. Bei diesem Entwurf muß keine Logik für veränderliche Kartengrößen kompensiert werden. Wenn die Größe des Kartenspeichers zunimmt, nimmt folglich die Zeit zum Löschen der gesamten Karte für eine bestimmte Einstellung der Auffrischgeschwindigkeit zu. Es ist möglich, die Logik so zu gestalten, daß eine konstante Speicherbereich-Löschgeschwindigkeit für das gesamte Spektrum von Kartengrößen aufrechterhalten wird. Dies würde jedoch für verschiedene Kartengrößen innerhalb des Systems verschiedene Speicherverfügbarkeitsgrade erzeugen. Folglich könnten Zunahmen beim Systemspeicher vom Kunden als eine Leistungsverschlechterung wahrgenommen werden. Für Beispiele für realisierte Auffrischgeschwindigkeiten und den Einfluß auf die Verfügbarkeit muß auf Fig. 20 Bezug genommen werden.
  • Fig. 20 wird verwendet, um die Geschwindigkeiten der vier Einstellungen darzustellen. Außerdem zeigt sie, daß durch die Verbindung des Löschens mit dem Auffrischen und die Durchführung des Löschens bei einer langsameren Geschwindigkeit keine größere Abnahme in der Verfügbarkeit als diejenige, die durch das Auffrischen bewirkt wird, vorliegt. Zwei Registerbits, SFR q und r, werden decodiert, um die Auffrischgeschwindigkeit auszuwählen. Die Standardeinstellung (00), die nicht gezeigt wird, schaltet den Löschvorgang ab. Folglich erfolgt kein Löschvorgang während eines Auffrischvorgangs. Die Einstellung 01 wählt die schnellere der beiden Betriebsgeschwindigkeiten, und die Einstellung 10 wählt die langsamere Geschwindigkeit. Wie mit Bezugnahme auf Fig. 18 beschrieben wird, können diese Geschwindigkeiten eingestellt werden, indem die Anzahl der Bits in den Auffrisch- und Bereinigungszählern und die Art ihres Vergleichs verändert werden. Die Einstellung 11 wird verwendet, um einen fortwährenden Löschvorgang durchzuführen; das heißt, jeder Auffrischbefehl aktiviert einen Löschvorgang. Dies wird verwendet, um den Test des Löschvorgangs zu beschleunigen. Für diesen Test würde jede Speicherposition, die gelöscht werden kann, mit weichen Fehlern versehen und Löschvorgänge bei dieser Geschwindigkeit für die zwei bis sechzehn Sekunden, die zum genauen Treffen jeder Position benötigt werden, durchgeführt. Anschließend würde eine Prüfung des Speichers durchgeführt, um zu erkennen, daß alle normalen Fehler gelöscht wurden. Der untere Teil von Fig. 20 zeigt, daß der Einfluß auf die Verfügbarkeit für die beiden Betriebs- Auffrischgeschwindigkeiten (Einstellungen 01 und 10) meistens Null ist, und zeigt, daß das System den Löschvorgang nicht bei der Testeinstellung 11 durchführen würde.
  • Der Stand der Technik ist für die Einstellbarkeit nicht sinnvoll, da die Speicherkarte des IBM 9370 Prozessors keinen unabhängigen Löschvorgang umfaßte. Falls der Löschvorgang in diesem System verwendet werden müßte, müßte die Geschwindigkeit der zugeordneten Null-Byte-Lese-/Änderungs-/Schreib-(RMW-)Befehle gesteuert werden. Obwohl die Speicherkarte 9370 ein Register für spezielle Funktionen (SPR) umfaßte, war dieses viel primitiver und beinhaltete nicht die q- und r-Bits. Die Speicherkarte 9370 enthielt nur vier Bits im SFR, wohingegen die vorliegende Erfindung ein SFR mit vierundzwanzig Bits verwendet, das eine wesentlich größere Flexibilität und Funktion gestattet.
  • Kurz zusammengefaßt, stellt die Unterbringung des Fehlerkorrekturcodes (ECC) und der gesamten Matrixsteuerung auf jeder Speicherkarte eine optimale Gestaltungsflexibilität bereit. Diese Flexibilität gestattet, daß die Matrixverwendung durch die Verwendung einer feststehenden Schnittstelle dem System gegenüber transparent ist. Die Schlüsselkomponente dieser Schnittstelle ist, wie in Fig. 3 dargestellt wird, der "mehrfach genutzte Datenbus" 43 und 44. Nur physisch-logische Umsetzungen zur Isolation von Matrixfehlern während der Systemdiagnosevorgänge sind nicht transparent; diese Veränderlichkeit kann jedoch über Software-/Hardware-Änderungen bearbeitet werden. Die Unterbringung des ECCs auf der Speicherkarte gestattet dem System außerdem in Verbindung mit internen Prüfeinrichtungen und integrierten Diagnosevorgängen, die fehlerhafte Karte (und Logik- oder Matrixkomponenten) auf einem Mehrfach-Speicherkartenbus leicht zu isolieren. Dies trägt viel dazu bei, die mit dem Speicher verbundenen Fehlererkennungs- und Fehlerisolations-(EDPI-)Nummern zu verbessern.
  • Der Schlüssel hierbei ist, daß diese Flexibilität Speichermigrations- und Speichersicherungsstrategien mit einer allgemeinen Schnittstelle ermöglicht. Ein System mit vier Steckplätzen für den Hauptspeicher kann beispielsweise einen Basisspeicherbedarf von 32 MB (vier 8-MB-Karten) und einen maximalen Speicherbedarf von 256 MB (vier 64-MB-Karten) aufweisen. Folglich ist es wünschenswert, daß jeder Kartentyp Stecker-kompatibel ist. Um das Spektrum von Kartendichten zu erhalten, müssen jedoch verschiedene Matrixtechniken mit verschiedenen Konfigurationen verwendet werden, zum Beispiel 256K·4-Matrizen für die 8-MB-Karte und 1M·4-Matrizen für die 64-MB-Karte. Zusätzlich werden für einige oder alle dieser Karten aus Versorgungsgründen eventuell Sicherungskarten mit alternativen Matrizen benötigt. In einigen Fällen können der alternativen Technik Schlüsselmerkmale wie Datenauswahleinrichtungen fehlen. Die Kartenlogik kann neu konfiguriert werden, daß sie mit der bestehenden Kartenfunktion und - leistung ohne eine Änderung der Schnittstelle übereinstimmt oder beinahe übereinstimmt. Zusätzlich zu den Änderungen der Matrixdichte können auch Leistungsverbesserungen erreicht werden, obwohl die Schnittstelle beibehalten und nur die Taktgeschwindigkeit verändert wird.
  • Die "intelligente" Kartenlogik kann außerdem die Schnittstelle beibehalten, während sie eine verbesserte Zuverlässigkeit durch die Verwendung von verschiedenen ECC-Codes oder von zusätzlicher Redundanz bereitstellt und eine verbesserte Datenübertragung bereitstellt, indem der Umfang der auf der Karte stattfindenden Verzahnung erhöht wird. Die durch diese Schnittstelle und Architektur ermöglichte Steckerkompatibilität und die Leistungsflexibilität gestatten, daß dieselbe Speicherkarte von einem Prozessor mit oder ohne den Vorteil eines Cache-Speichers verwendet wird.
  • Der "mehrfach genutzte Datenbus", der den größten Teil der "feststehenden" Schnittstelle bildet, setzt die Anzahl der zugeordneten Leitungen, die für die Schnittstelle benötigt werden, auf ein Minimum herab. Zusätzlich zur Verringerung der Modul- Ein-/Ausgabezählung stellt dies außerdem die Einfachheit und Flexibilität dieser Schnittstelle bereit. Die Verringerung der Anzahl der zugeordneten Signale vereinfacht die Zeitsteuerungen, die vom System geliefert werden müssen. Die interne Logik der "intelligenten" Speicherkarte puffert das System gegen die komplizierten Zeitsteuerungen, die für die große Vielzahl von verfügbaren Funktionen intern stattfinden müssen. Komplizierte und veränderliche Matrixzeitsteuerungen für das Spektrum der auf der Karte zu verwendenden Matrix-Hardware werden von der in Fig. 3 gezeigten korrekt initialisierten internen Logikelemente 46 und 47 erzeugt. Die Initialisierung und Anpassung der Steuerlogik, wird, wie im Blockdiagramm von Fig. 5 gezeigt wird, durch das Laden des Programmregisters 71 mit dem passenden Code ausgeführt. Das System muß lediglich das Kartenauswahl-(SEL-)Signal aktivieren und den Befehl, die Feldlänge und die Adresse zum Einleiten einer Kartenoperation bereitstellen. Bei einer Speicheroperation werden die Daten anschließend sofort über denselben mehrfach genutzten Datenbus gemultiplext. Bei einem Abruf findet die Datenübertragung nicht sofort, sondern kurze Zeit nach der Entfernung der Befehls-/Adressendaten aus dem Bus statt. Bei einigen Diagnosevorgängen wird überhaupt keine Datenübertragung benötigt. Bei jedem dieser Fälle wartet das System nach der Aktivierung und der möglichen Datenübertragung auf den inaktiven Status von "Karte BELEGT", der anzeigt, daß der Vorgang beendet ist.
  • Die Kartenlogik verringert außerdem die Anzahl der Systemzeitsteuerungsfälle, die durch die interne Ausführung einer großen Anzahl von Funktionen mit Hardware benötigt werden. Einige werden durch befehlsaktivierte Ereignisse automatisch ausgelöst: 1) Ein Abrufbefehl könnte einen internen erweiterten ECC-Vorgang automatisch auslösen, falls in den Daten vom internen Matrixbus Mehrbitfehler vorkommen; 2) Ein Lese-/Änderungs-/Schreibvorgang wird während eines Systemschreibbefehls aktiviert. Die Karte verwendet die zur Auswahlzeit gelieferte Feldlänge und Startadresse, um zu bestimmen, ob ein direkter Schreib- oder ein Lese-/Änderungs-/Schreibvorgang erfolgen muß. Einige interne Funktionen werden durch ein voreingestelltes internes Steuerregister 72 aus Fig. 5 und ein zugeordnetes externes Ereignis ausgelöst oder gesteuert: 1) Das automatische Beseitigen von weichen Fehlern wird durch die Kombination von einer Einstellung des Registers für spezielle Funktionen, einen internen Zählerzusammenhang, wie er in Fig. 8 dargestellt wird, und die Aktivierung des Auffrisch-(REP-)Signals ausgelöst. 2) Lese- oder Schreibvorgänge ohne ECC, Datenringleitungsvorgänge und andere Diagnosevorgänge werden durch Einstellungen des Registers für spezielle Funktionen und die Aktivierung von weichen Abruf- und Speichervorgängen gesteuert.
  • Die generische Art des Datenbusses selbst stellt einen großen Teil der Schnittstellenflexibilität bereit. Die einzelnen Zuweisungen über den Bus können für verschiedene Busanwendungen variiert werden, ohne die gesamte Busdefinition zu beeinflussen. Änderungen an der funktionellen Reihenfolge der Bits können an fast jeder Stelle während der Entwicklung oder für zukünftige Erweiterungen ohne eine wesentliche Systembeeinflussung leicht vorgenommen werden.
  • Zusätzlich zu den Bitänderungen über die feststehende Busbreite hinweg kann außerdem die Bustiefe für jede funktionelle Änderung oder Erweiterung leicht verändert werden. Dies erfolgt durch das Hinzufügen (oder Entfernen) von Verzweigungen der Eingangsund/oder Ausgangsmultiplexfunktion. Falls beispielsweise zu einem späten Zeitpunkt im Entwurfszyklus oder bei einem Nachfolge-Entwurf mehr Prüfeinrichtungen hinzugefügt werden, so können diese Prüfeinrichtungen durch einen vorhandenen Diagnosebefehl mit einer oder mehreren intern hinzugefügten Datenausgangsübertragungen leicht ausgelesen werden. Die Verzweigung für die Ausgangsmultiplexfunktion wird in den Fig. 4 und 7 dargestellt. Die Datenausgangs-Auswahllogik 59 wird verwendet, um zwischen Daten für normale Abrufvorgänge (Eingang a) oder Diagnoseabrufdaten (Eingang b) auszuwählen.
  • Die Prüfeinrichtungen betreffende Hinzufügung von Datenübertragungen aus dem Beispiel kann in Fig. 7 gezeigt werden. Es werden vorhandene Diagnosepfade gezeigt, die in den Multiplexer (MUX) 73 führen. Falls nötig, können leicht mehr Diagnoseleitungen hinzugefügt werden, indem der Multiplexer erweitert wird oder indem ein ähnlicher Multiplexer, der Daten zum Eingang 3 des Multiplexers 74 führt, hinzugefügt wird. Ein anderes Beispiel ist, daß sogar keine zusätzlichen internen Datenpfade benötigt werden, wenn mehr Abruf- oder Speicherdatenübertragungen aus dem Speicher zur Verbesserung der Vektorprozessorleistung benötigt werden. In diesem Fall muß die interne Matrixsteuerlogik nur geändert werden, um zu gestatten, daß mehr CAS-Aktivierungen während des Zyklus stattfinden können, vorausgesetzt, daß genügend Feldlängenbits vorhanden sind. Dies nutzt einen größeren Teil der Matrix-Seitenmodusfähigkeit, indem mehr sequentielle Datenübertragungen zwischen System und Speicher gestattet werden.
  • Die Erfindung verwirklicht außerdem eine Verringerung der Chipanzahl, wie durch den Vergleich von Fig. 2 mit Fig. 3 gezeigt wird. Die Logik 9370 in Fig. 2 ist über sechs separate Logikmodule 26a, 26b, 26c, 29, 30 und 31 verteilt. Der in Fig. 3 gezeigte Speicher der neuen Generation umfaßt nur zwei separate Logikmodule. Diese sind so gestaltet, daß nur eine Logiknummer benötigt wird, und die Anpassung für die Modulposition auf der Karte wird gesteuert, indem ein Steuereingang entweder auf den H-Pegel oder auf den L-Pegel gezogen wird. Eine ähnliche Funktion wie diejenige des Datenflußmoduls 30 in Fig. 2 betrifft den Abschnitt (a) des Moduls 46 in Fig. 3; dies gilt ebenso für die Module 31 und 47 (a). Das Steuermodul 29 verschiebt in die zwischen den beiden Module 46 und 47 aufgeteilten Abschnitte (b), (c) und (d). Die Matrixsteuerungs-Wiederansteuerungsmodule 26a, 26b und 26c weisen eine ähnliche Funktion auf, die in dem zwischen den Modulen 46 und 47 aufgeteilten Abschnitt (3) gezeigt wird.

Claims (9)

1. Speicherkarte mit einer Speichermatrix (40), die über eine Kartenlogik mit einem Systembus (43, 44) kommuniziert, wobei die Kartenlogik folgendes aufweist:
ein erstes Zwischenspeichermittel (51), das angeschlossen ist, um Daten von der Speichermatrix (40) zur vorübergehenden Speicherung der Daten zu empfangen;
ein Fehlerkorrekturcode-Mittel (55), das angeschlossen ist, um Daten vom ersten Zwischenspeichermittel (51) zur Durchführung einer Fehlererkennung und -korrektur bei den Daten zu empfangen;
ein zweites Zwischenspeichermittel (57), das angeschlossen ist, um Daten vom Fehlerkorrekturcode-Mittel (55) zur vorübergehenden Speicherung der Daten zu empfangen; und
ein Datenausgangs-Auswahlmittel (59), das angeschlossen ist, um Daten vom Fehlerkorrekturcode-Mittel (55) und vom zweiten Zwischenspeichermittel (57) zur selektiven Übertragung der Daten zum Systembus zu empfangen;
wobei das erste Zwischenspeichermittel (51), das Fehlerkorrekturcode-Mittel (55) und das zweite Zwischenspeichermittel (57) jeweils in zwei Teile (51a, 51b; 55a, 55b; 57a, 57b) unterteilt sind, die als gerader Teil (a) und ungerader Teil (b) bezeichnet werden, wobei "gerade" und "ungerade" nachfolgende Systemdatenübertragungen betreffen, und
wobei das Datenausgangs-Auswahlmittel (59) angeschlossen ist, um Daten sowohl von den geraden als auch von ungeraden Teilen (55a, 55b; 57a, 57b) des Fehlerkorrekturcode-Mittels (55) und des zweiten Zwischenspeichermittels (57) zu empfangen, und wobei die Kartenlogik desweiteren Steuermittel (63 bis 67) zur Steuerung des Datenausgangs-Auswahlmittels (59) aufweist, um die von den geraden Teilen (a) empfangenen Daten mit den von den ungeraden Teilen (b) empfangenen zu verzahnen.
2. Speicherkarte, wie sie in Anspruch 1 dargelegt ist, wobei die Speichermatrix (40) einen internen Speicherbus (41, 42), der n Bytes breit ist, umfaßt, und der Systembus ist n/2 Bytes breit, wobei das Datenausgangs-Auswahlmittel (59) n-Byte-breite Daten vom Fehlerkorrekturcode-Mittel (55) und vom zweiten Zwischenspeichermittel (57) verzahnt, um als Antwort auf das Steuermittel zusammenhängende n/2-Byte-Daten auf dem Systembus zu bilden.
3. Speicherkarte, wie sie in Anspruch 1 oder 2 dargelegt ist, wobei das Datenausgangs-Auswahlmittel (59) folgendes umfaßt:
ein langsames Multiplexermittel (73), das angeschlossen ist, um Daten von den ungeraden und geraden Teilen des zweiten Zwischenspeichermittels (57) zum selektiven heiterleiten der Daten von dort als Antwort auf das Steuermittel zu empfangen; und
ein schnelles Multiplexermittel (74), das angeschlossen ist, um Daten von den ungeraden und geraden Teilen des Fehlerkorrekturcode-Mittels (55) und vom langsamen Multiplexermittel (73) zum selektiven Weiterleiten der Daten von dort als Antwort auf das Steuermittel zu empfangen.
4. Speicherkarte, wie sie in Anspruch 3 dargelegt ist, die desweiteren folgendes umfaßt:
ein internes Datenringleitungs-Registermittel (54), das angeschlossen ist, um Daten vom Fehlerkorrekturcode-Mittel (55) zur vorübergehenden Speicherung der Daten zu empfangen; und
ein Flußauswahl-Logikmittel (52), das angeschlossen ist, um Daten vom internen Datenringleitungs-Registermittel (54) und vom ersten Zwischenspeichermittel (51) zum selektiven Senden der Daten von dort zum Fehlerkorrekturcode-Mittel (55) zu empfangen, wobei das interne Datenringleitungs-Registermittel (54) und das Flußauswahl-Logikmittel (52) einen optimierten Fehlerkorrekturcode-Pfad für die Daten bereitstellen,
5. Speicherkarte, wie sie in Anspruch 4 dargelegt ist, die desweiteren ein Speicherpuffermittel (53) umfaßt, das angeschlossen ist, um Daten vom Systembus zur vorübergehenden Speicherung der Daten zu empfangen, wobei das Flußauswahl- Logikmittel (52) außerdem angeschlossen ist, um Daten vom Speicherpuffermittel (53) zu empfangen, wobei das Speicherpuffermittel (53) Daten während eines Lese/Änderungs/ Schreibvorgangs in die Speichermatrix (40) puffert.
6. Speicherkarte, wie sie in mindestens einem der Ansprüche 1 bis 5 dargelegt ist, wobei das Steuermittel folgendes umfaßt:
ein Matrixsteuermittel (63) zum Aktivieren der Speichermatrix (40) für Abruf- und Speicherungsvorgänge;
ein Datenfluß-Steuermittel (63) zur Durchführung von Diagnose- und Selbsttestvorgängen;
ein Überwachungssteuermittel (64) zur Steuerung des Matrixsteuermittels (63) und des Datenfluß-Steuermittels (65);
ein Steuerbusmittel (66) zum Verbinden des Matrixsteuermittels (63), des Datenfluß-Steuermittels (65) und des Überwachungssteuermittels (64) untereinander; und
ein Taktgebermittel (67), das mit dem Matrixsteuermittel (63), dem Datenfluß-Steuermittel (65) und dem Überwachungssteuermittel (64) verbunden ist, um diesen synchronisierende Taktimpulse zu liefern.
7. Speicherkarte, wie sie in Anspruch 6 dargelegt ist, wobei das Matrixsteuermittel (63) folgendes umfaßt
ein Auffrischzählermittel (69) zum Zählen von Auffrischzyklen der Speichermatrix (40);
Löschungszählermittel (70) zum Zählen von Löschvorgängen von weichen Fehlern, die in der Speichermatrix 40) durchgeführt werden; und
wobei das Steuermittel (70) desweiteren Zählungen im Auffrisch- (69) und Löschungs- (70) Zählermittel zur Steuerung von antiparallelen Null-Byte-Lese-/Änderungs-/Schreibvorgängen in der Speichermatrix (40) vergleicht, um Löschvorgänge von weichen Fehlern durchzuführen, wobei Löschvorgänge von weichen Fehlern während eines Auffrischvorgangs transparent durchgeführt werden.
8. Speicherkarte, wie sie in Anspruch 6 oder 7 dargelegt ist, wobei das Datenfluß-Steuermittel (65) ein Registermittel (72) für spezielle Funktionen umfaßt, um zu ändern, wie Befehle im Datenfluß ausgeführt werden und wie Datenflußpfade für einen beliebigen Vorgang konfiguriert werden.
9. Speicherkarte, wie sie in mindestens einem der Ansprüche 6 bis 8 dargelegt ist, wobei das Überwachungssteuermittel (64) ein Programmregistermittel (71) zum Anpassen von Operationen der Karte in Abhängigkeit von der Systemeingabe, die durch die Art der angeschlossenen Karte und durch die Systemkonfiguration bestimmt wird, umfaßt.
DE68923828T 1988-06-15 1989-05-17 Architektur und Schnittstelle für Speicherkarten. Expired - Fee Related DE68923828T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/206,757 US4888773A (en) 1988-06-15 1988-06-15 Smart memory card architecture and interface

Publications (2)

Publication Number Publication Date
DE68923828D1 DE68923828D1 (de) 1995-09-21
DE68923828T2 true DE68923828T2 (de) 1996-03-28

Family

ID=22767812

Family Applications (1)

Application Number Title Priority Date Filing Date
DE68923828T Expired - Fee Related DE68923828T2 (de) 1988-06-15 1989-05-17 Architektur und Schnittstelle für Speicherkarten.

Country Status (4)

Country Link
US (1) US4888773A (de)
EP (1) EP0346629B1 (de)
JP (1) JPH06105443B2 (de)
DE (1) DE68923828T2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19835258B4 (de) * 1998-08-04 2006-07-27 Infineon Technologies Ag Integrierte dynamische Speicherschaltung mit einer Selbsttesteinrichtung

Families Citing this family (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4924375A (en) * 1987-10-23 1990-05-08 Chips And Technologies, Inc. Page interleaved memory access
US5159676A (en) * 1988-12-05 1992-10-27 Micron Technology, Inc. Semi-smart DRAM controller IC to provide a pseudo-cache mode of operation using standard page mode draws
US5235693A (en) * 1989-01-27 1993-08-10 Digital Equipment Corporation Method and apparatus for reducing buffer storage in a read-modify-write operation
US5907512A (en) * 1989-08-14 1999-05-25 Micron Technology, Inc. Mask write enablement for memory devices which permits selective masked enablement of plural segments
US5280601A (en) * 1990-03-02 1994-01-18 Seagate Technology, Inc. Buffer memory control system for a magnetic disc controller
US5341488A (en) * 1990-04-11 1994-08-23 Nec Electronics, Inc. N-word read/write access achieving double bandwidth without increasing the width of external data I/O bus
JP2862948B2 (ja) * 1990-04-13 1999-03-03 三菱電機株式会社 半導体記憶装置
US5261068A (en) * 1990-05-25 1993-11-09 Dell Usa L.P. Dual path memory retrieval system for an interleaved dynamic RAM memory unit
US5584044A (en) * 1990-09-28 1996-12-10 Fuji Photo Film Co., Ltd. Integrated circuit memory card for write in/read out capability having plurality of latching means for expandable addressing using counting means for enabling latches thereof
US5301343A (en) * 1990-12-31 1994-04-05 International Business Machines Corp. System having microprocessor local memory expansion capability through removable coupling of local memory expansion boards directly to the high speed microprocessor local bus
US5295255A (en) * 1991-02-22 1994-03-15 Electronic Professional Services, Inc. Method and apparatus for programming a solid state processor with overleaved array memory modules
JP2960560B2 (ja) * 1991-02-28 1999-10-06 株式会社日立製作所 超小型電子機器
US5274646A (en) * 1991-04-17 1993-12-28 International Business Machines Corporation Excessive error correction control
US5289477A (en) * 1991-06-06 1994-02-22 International Business Machines Corp. Personal computer wherein ECC and partly error checking can be selectively chosen for memory elements installed in the system, memory elements enabling selective choice of error checking, and method
US5267242A (en) * 1991-09-05 1993-11-30 International Business Machines Corporation Method and apparatus for substituting spare memory chip for malfunctioning memory chip with scrubbing
US5313475A (en) * 1991-10-31 1994-05-17 International Business Machines Corporation ECC function with self-contained high performance partial write or read/modify/write and parity look-ahead interface scheme
US5428762A (en) * 1992-03-11 1995-06-27 International Business Machines Corporation Expandable memory having plural memory cards for distributively storing system data
US5381539A (en) * 1992-06-04 1995-01-10 Emc Corporation System and method for dynamically controlling cache management
GB2269247A (en) * 1992-07-28 1994-02-02 Rhythm Watch Co Interfacing an IC memory card to a central processing unit of a computer
US5588112A (en) * 1992-12-30 1996-12-24 Digital Equipment Corporation DMA controller for memory scrubbing
AU5987294A (en) * 1993-02-17 1994-09-14 3Com Corporation System for reading dynamically changing data
US5638530A (en) * 1993-04-20 1997-06-10 Texas Instruments Incorporated Direct memory access scheme using memory with an integrated processor having communication with external devices
EP0683613A3 (de) * 1994-05-20 1997-01-29 At & T Corp Datennachrichtenspeicherung und Übertragung unter Verwendung eines Bildtelefons und einer Chipkarte.
GB2289779B (en) * 1994-05-24 1999-04-28 Intel Corp Method and apparatus for automatically scrubbing ECC errors in memory via hardware
US5774481A (en) * 1995-03-31 1998-06-30 International Business Machines Corporation Reduced gate error detection and correction circuit
JP3782840B2 (ja) * 1995-07-14 2006-06-07 株式会社ルネサステクノロジ 外部記憶装置およびそのメモリアクセス制御方法
IT1277386B1 (it) * 1995-07-28 1997-11-10 Alcatel Italia Apparato per lo scambio di informazioni tra carte di identificazione a circuiti integrati e un dispositivo terminale
JPH09330273A (ja) * 1996-06-10 1997-12-22 Mitsubishi Electric Corp メモリカードおよびメモリカードにおける誤り訂正方法
US5668815A (en) * 1996-08-14 1997-09-16 Advanced Micro Devices, Inc. Method for testing integrated memory using an integrated DMA controller
US5923682A (en) * 1997-01-29 1999-07-13 Micron Technology, Inc. Error correction chip for memory applications
US5953515A (en) * 1997-04-11 1999-09-14 International Business Machines Corporation Pluggable electronic card presence detect scheme for use in parallel and serial vital detect product data (VPD) collection systems
WO1998056003A1 (fr) * 1997-06-05 1998-12-10 Matsushita Electronics Corporation Dispositif a memoire ferroelectrique et son procede de commande
US6157563A (en) * 1997-06-27 2000-12-05 Matsushita Electronics Corporation Ferroelectric memory system and method of driving the same
US6360346B1 (en) * 1997-08-27 2002-03-19 Sony Corporation Storage unit, method of checking storage unit, reading and writing method
US5987628A (en) * 1997-11-26 1999-11-16 Intel Corporation Method and apparatus for automatically correcting errors detected in a memory subsystem
US5963464A (en) * 1998-02-26 1999-10-05 International Business Machines Corporation Stackable memory card
US6108730A (en) * 1998-02-27 2000-08-22 International Business Machines Corporation Memory card adapter insertable into a motherboard memory card socket comprising a memory card receiving socket having the same configuration as the motherboard memory card socket
BR9908714A (pt) * 1998-03-13 2000-11-21 Motorola Inc Identificador rfid, leitora rfid, e sistema rfid incluindo identificadores com tamanhos de memória diferentes
US6115837A (en) * 1998-07-29 2000-09-05 Neomagic Corp. Dual-column syndrome generation for DVD error correction using an embedded DRAM
US6425055B1 (en) 1999-02-24 2002-07-23 Intel Corporation Way-predicting cache memory
JP2000253183A (ja) * 1999-03-03 2000-09-14 Sony Corp ネットワークシステム、端末装置及びネットワークサーバ
US6772380B1 (en) 1999-04-21 2004-08-03 Seagate Technology Llc Smart tester and method for testing a bus connector
US6845498B1 (en) * 1999-05-11 2005-01-18 Microsoft Corporation Method and apparatus for sharing data files among run time environment applets in an integrated circuit card
US6938244B1 (en) * 1999-05-11 2005-08-30 Microsoft Corp. Interlaced protocol for smart card application development
JP3871471B2 (ja) * 1999-07-12 2007-01-24 松下電器産業株式会社 Ecc回路搭載半導体記憶装置及びその検査方法
US6370668B1 (en) * 1999-07-23 2002-04-09 Rambus Inc High speed memory system capable of selectively operating in non-chip-kill and chip-kill modes
US6591321B1 (en) * 1999-11-09 2003-07-08 International Business Machines Corporation Multiprocessor system bus protocol with group addresses, responses, and priorities
US6721943B2 (en) * 2001-03-30 2004-04-13 Intel Corporation Compile-time memory coalescing for dynamic arrays
US7069494B2 (en) * 2003-04-17 2006-06-27 International Business Machines Corporation Application of special ECC matrix for solving stuck bit faults in an ECC protected mechanism
US7080288B2 (en) * 2003-04-28 2006-07-18 International Business Machines Corporation Method and apparatus for interface failure survivability using error correction
US7320100B2 (en) * 2003-05-20 2008-01-15 Cray Inc. Apparatus and method for memory with bit swapping on the fly and testing
US7184916B2 (en) * 2003-05-20 2007-02-27 Cray Inc. Apparatus and method for testing memory cards
US7437593B2 (en) * 2003-07-14 2008-10-14 International Business Machines Corporation Apparatus, system, and method for managing errors in prefetched data
US7107390B2 (en) * 2003-10-08 2006-09-12 Micron Technology, Inc. Parity-scanning and refresh in dynamic memory devices
US7478260B2 (en) * 2003-10-20 2009-01-13 Hewlett-Packard Development Company, L.P. System and method for setting a clock rate in a memory card
US7206962B2 (en) * 2003-11-25 2007-04-17 International Business Machines Corporation High reliability memory subsystem using data error correcting code symbol sliced command repowering
US7116600B2 (en) * 2004-02-19 2006-10-03 Micron Technology, Inc. Memory device having terminals for transferring multiple types of data
JP4056488B2 (ja) * 2004-03-30 2008-03-05 エルピーダメモリ株式会社 半導体装置の試験方法及び製造方法
US7272774B2 (en) * 2004-04-16 2007-09-18 Kingston Technology Corp. Extender card for testing error-correction-code (ECC) storage area on memory modules
US7099221B2 (en) 2004-05-06 2006-08-29 Micron Technology, Inc. Memory controller method and system compensating for memory cell data losses
US7116602B2 (en) 2004-07-15 2006-10-03 Micron Technology, Inc. Method and system for controlling refresh to avoid memory cell data losses
US9459960B2 (en) * 2005-06-03 2016-10-04 Rambus Inc. Controller device for use with electrically erasable programmable memory chip with error detection and retry modes of operation
US7831882B2 (en) * 2005-06-03 2010-11-09 Rambus Inc. Memory system with error detection and retry modes of operation
US20070022244A1 (en) * 2005-07-25 2007-01-25 Honeywell International Inc. Methods and systems for refresh and error scrubbing of dynamic memory devices
JP4645837B2 (ja) * 2005-10-31 2011-03-09 日本電気株式会社 メモリダンプ方法、コンピュータシステム、およびプログラム
DE102005056865A1 (de) 2005-11-29 2007-05-31 Giesecke & Devrient Gmbh Pipeline-Mechanismus für den Datenaustausch zwischen Chipkarte und Terminal
US7562285B2 (en) 2006-01-11 2009-07-14 Rambus Inc. Unidirectional error code transfer for a bidirectional data link
JP2007257791A (ja) * 2006-03-24 2007-10-04 Fujitsu Ltd 半導体記憶装置
US8578116B2 (en) * 2006-03-28 2013-11-05 Broadcom Corporation System and method for memory data protection with secure pad memory
US20070271495A1 (en) * 2006-05-18 2007-11-22 Ian Shaeffer System to detect and identify errors in control information, read data and/or write data
US8352805B2 (en) 2006-05-18 2013-01-08 Rambus Inc. Memory error detection
US7894289B2 (en) * 2006-10-11 2011-02-22 Micron Technology, Inc. Memory system and method using partial ECC to achieve low power refresh and fast access to data
US7900120B2 (en) 2006-10-18 2011-03-01 Micron Technology, Inc. Memory system and method using ECC with flag bit to identify modified data
EP2075706B1 (de) * 2006-10-20 2010-12-15 Fujitsu Limited Speicheranordnung und auffrisch-justierverfahren
US20080168331A1 (en) * 2007-01-05 2008-07-10 Thomas Vogelsang Memory including error correction code circuit
US8370715B2 (en) * 2007-04-12 2013-02-05 International Business Machines Corporation Error checking addressable blocks in storage
JP4739296B2 (ja) * 2007-08-27 2011-08-03 ソリッド ステート ストレージ ソリューションズ エルエルシー 外部記憶装置およびそのメモリアクセス制御方法
JP4813454B2 (ja) * 2007-12-21 2011-11-09 ソリッド ステート ストレージ ソリューションズ エルエルシー 外部記憶装置およびそのメモリアクセス制御方法
TWI389030B (zh) * 2008-05-07 2013-03-11 Mstar Semiconductor Inc 於微處理器下載並執行程式碼的方法與電腦程式產品以及包含該微處理器之通訊裝置
JP4511618B2 (ja) * 2009-01-23 2010-07-28 ソリッド ステート ストレージ ソリューションズ エルエルシー 外部記憶装置およびそのメモリアクセス制御方法
US8433734B2 (en) * 2009-06-29 2013-04-30 Sandisk Technologies Inc. Selecting a file path of a removable storage device based on a root directory size comparison with a host device
JP5472808B2 (ja) * 2010-03-01 2014-04-16 ソリッド ステート ストレージ ソリューションズ インク 外部記憶装置およびそのメモリアクセス制御方法
US20120066471A1 (en) * 2010-09-14 2012-03-15 Advanced Micro Devices, Inc. Allocation of memory buffers based on preferred memory performance
JP5642764B2 (ja) * 2012-12-21 2014-12-17 ソリッド ステート ストレージ ソリューションズ インク 外部記憶装置およびそのメモリアクセス制御方法
US20150067437A1 (en) * 2013-08-30 2015-03-05 Kuljit S. Bains Apparatus, method and system for reporting dynamic random access memory error information
US9146809B2 (en) * 2013-10-07 2015-09-29 Macronix International Co., Ltd. ECC method for double pattern flash memory
US9535785B2 (en) 2014-01-17 2017-01-03 Macronix International Co., Ltd. ECC method for flash memory
US10176038B2 (en) * 2015-09-01 2019-01-08 International Business Machines Corporation Partial ECC mechanism for a byte-write capable register
US9985655B2 (en) 2015-09-01 2018-05-29 International Business Machines Corporation Generating ECC values for byte-write capable registers
US9766975B2 (en) 2015-09-01 2017-09-19 International Business Machines Corporation Partial ECC handling for a byte-write capable register
US9880900B2 (en) 2015-12-08 2018-01-30 Nvidia Corporation Method for scrubbing and correcting DRAM memory data with internal error-correcting code (ECC) bits contemporaneously during self-refresh state
US9823964B2 (en) 2015-12-08 2017-11-21 Nvidia Corporation Method for memory scrub of DRAM with internal error correcting code (ECC) bits during either memory activate and/or precharge operation
US10049006B2 (en) 2015-12-08 2018-08-14 Nvidia Corporation Controller-based memory scrub for DRAMs with internal error-correcting code (ECC) bits contemporaneously during auto refresh or by using masked write commands
KR20180081282A (ko) * 2017-01-06 2018-07-16 에스케이하이닉스 주식회사 반도체장치
EP3776207B1 (de) 2018-03-26 2023-08-09 Rambus Inc. Fehlerdetektion bei befehls-/adresskanal
US11385963B1 (en) * 2021-02-24 2022-07-12 Western Digital Technologies, Inc. Usage of data mask in DRAM write

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4317201A (en) * 1980-04-01 1982-02-23 Honeywell, Inc. Error detecting and correcting RAM assembly
FR2483713A1 (fr) * 1980-05-30 1981-12-04 Cii Honeywell Bull Dispositif pour la transmission de signaux entre deux stations de traitement de l'information
JPS5891590A (ja) * 1981-11-27 1983-05-31 Fujitsu Ltd メモリシステム
JPS5963093A (ja) * 1982-09-30 1984-04-10 Fujitsu Ltd メモリ回路
JPS60225955A (ja) * 1984-04-25 1985-11-11 Nec Corp 記憶装置
US4710934A (en) * 1985-11-08 1987-12-01 Texas Instruments Incorporated Random access memory with error correction capability
JPS62212854A (ja) * 1986-03-14 1987-09-18 Nippon Telegr & Teleph Corp <Ntt> 自動誤り訂正記憶装置
JPS62226352A (ja) * 1986-03-28 1987-10-05 Mitsubishi Electric Corp Ras付記憶装置
JPS62161399U (de) * 1986-03-31 1987-10-14

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19835258B4 (de) * 1998-08-04 2006-07-27 Infineon Technologies Ag Integrierte dynamische Speicherschaltung mit einer Selbsttesteinrichtung

Also Published As

Publication number Publication date
DE68923828D1 (de) 1995-09-21
JPH06105443B2 (ja) 1994-12-21
JPH0224752A (ja) 1990-01-26
US4888773A (en) 1989-12-19
EP0346629A2 (de) 1989-12-20
EP0346629A3 (de) 1991-05-29
EP0346629B1 (de) 1995-08-16

Similar Documents

Publication Publication Date Title
DE68923828T2 (de) Architektur und Schnittstelle für Speicherkarten.
DE69221045T2 (de) Verfahren und Gerät zur programmierbaren Speicherssteuerung mit Fehlerregelung und Prüffunktionen
DE3855031T2 (de) Kopiesystem mit &#34;Hot-standby&#34;-Speicher
DE69120333T2 (de) Verriegeltes On-Chip-Fehlererkennungs- und -korrektursystem
DE3650651T2 (de) Fehlertolerantes Datenverarbeitungssystem
DE69031527T2 (de) Pipelinefehlerprüfung und Korrektur für Cache-Speicher
DE60117066T2 (de) Verfahren und Vorrichtung zum Überprüfen von fehlerkorrigierenden Codes
DE69112624T2 (de) Mehrfehlerkorrektur eines rechnerspeichers.
DE2619159C2 (de) Fehlererkennungs- und Korrektureinrichtung
DE69126416T2 (de) Speichergerätanordnungsarchitektur mit Copyback-Cachespeicher
DE3485766T2 (de) Nach dem pipelineverfahren arbeitende fehlerkorrektur.
DE3587145T2 (de) Puffersystem mit erkennung von lese- oder schreibschaltungsfehlern.
DE3750107T2 (de) Cachespeicherkohärenzsteuerung mit einem Speicher, der ein laufendes Lesen anzeigt.
DE3125048C2 (de)
DE68924119T2 (de) Verfahren und Vorrichtung zum Wiederanlauf nach einem Fehler in einem digitalen Rechnersystem.
DE69215538T2 (de) Verfahren zur verbesserung von partiellen streifenschreib-operationen einer speicherplattenanordnung
DE3854368T2 (de) Cachespeicher mit einer Elastizität in der Verarbeitung verschiedener Adressenfehler.
DE69027030T2 (de) Eine fehlertolerante datenspeicherungsanordnung
DE2916710C2 (de)
DE3853206T2 (de) Verfahren und gerät zur byteschreibfehlerkodierung.
DE112016005869T5 (de) Vorausschauende Arbeitsspeicherinstandhaltung
DE68923026T2 (de) Speicherdiagnosegerät und Verfahren.
DE1901036A1 (de) Anordnung fuer die wiederholte Ausfuehrung fehlerhaft ausgefuehrter Funktionen
DE1549468A1 (de) Speicheranordnung fuer ein programmgesteuertes Datenverarbeitungssystem
DE4134192A1 (de) Integrierter schaltkreis mit verarbeitung im speicher

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee