DE69425580T2 - Gerät und verfahren zur schnittstellenbildung zwischen einem datenprozessor einerseits und einer e-a-steuerung und einem haupspeicher andererseits - Google Patents
Gerät und verfahren zur schnittstellenbildung zwischen einem datenprozessor einerseits und einer e-a-steuerung und einem haupspeicher andererseitsInfo
- Publication number
- DE69425580T2 DE69425580T2 DE69425580T DE69425580T DE69425580T2 DE 69425580 T2 DE69425580 T2 DE 69425580T2 DE 69425580 T DE69425580 T DE 69425580T DE 69425580 T DE69425580 T DE 69425580T DE 69425580 T2 DE69425580 T2 DE 69425580T2
- Authority
- DE
- Germany
- Prior art keywords
- memory
- address
- register
- data
- write
- 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 - Lifetime
Links
- 230000015654 memory Effects 0.000 title claims description 306
- 238000000034 method Methods 0.000 title claims description 18
- 239000000872 buffer Substances 0.000 claims description 36
- 230000003139 buffering effect Effects 0.000 claims description 18
- 239000003550 marker Substances 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 11
- 102100023882 Endoribonuclease ZC3H12A Human genes 0.000 description 28
- 101710112715 Endoribonuclease ZC3H12A Proteins 0.000 description 28
- QGVYYLZOAMMKAH-UHFFFAOYSA-N pegnivacogin Chemical compound COCCOC(=O)NCCCCC(NC(=O)OCCOC)C(=O)NCCCCCCOP(=O)(O)O QGVYYLZOAMMKAH-UHFFFAOYSA-N 0.000 description 28
- 238000010586 diagram Methods 0.000 description 12
- 230000009467 reduction Effects 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 230000003213 activating effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003446 memory effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 208000011580 syndromic disease Diseases 0.000 description 2
- 101001135199 Homo sapiens Partitioning defective 3 homolog Proteins 0.000 description 1
- 101001098557 Homo sapiens Proteinase-activated receptor 3 Proteins 0.000 description 1
- 102100033496 Partitioning defective 3 homolog Human genes 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Bus Control (AREA)
Description
- Diese Erfindung betrifft im allgemeinen ein digitales Datenverarbeitungssystem mit u. a. einem Zentralprozessor oder einer Ein-Ausgabe-Steuerung, einem Adreßbus, einem Datenbus und einem Speicher, und bezieht sich auf ein Verfahren zum Verbinden des Zentralprozessors oder der Ein-Ausgabe-Steuerung mit dem Hauptspeicher zum Einschreiben von Daten in letzteren.
- Beim Betreiben eines digitalen Hochleistungs-Datenprozessors besteht eine Schwierigkeit darin, einen Hauptspeicher mit einer ausreichenden Bandbreite zu versehen, um es einem Zentralprozessor und einer Ein-Ausgabe-Steuerung zu ermöglichen, mit ihren optimalen Datenübertragungsraten zu arbeiten.
- Eine andere Schwierigkeit bezieht sich auf eine Tendenz eines Zentralprozessors, bei bestimmten Arten von Verarbeitungsaufgaben viele Schreiboperationen in einen relativ kleinen Bereich eines Hauptspeichers vorzunehmen. Sind die Schreiboperationen beispielsweise Byte-Operationen, und ist die Wortbreite beim Hauptspeicher mehrere Byte groß, wird üblicherweise ein Lese-Ändere-Schreib-Zyklus ausgeführt, um nur das beabsichtige Byte im Wort zu ändern. Jedoch erfordert ein Lese-Ändere-Schreib-Zyklus eine bedeutend längere Zeit zur Ausführung als eine herkömmliche Ganzwort-Schreiboperation, bei der alle Byte in einem Wort in derselben Schreiboperation geschrieben werden. Folglich kann es erforderlich sein, daß der Zentralprozessor die Beendigung einer vorhergehenden Lese-Ändere-Schreib-Operation abwartet, bevor er eine laufende Schreibanforderung zu Ende führt. Es leuchtet ein, daß es wünschenswert wäre, die Anzahl der ausgeführten Lese-Ändere-Schreib-Zyklen zu reduzieren, um den Wirkungsgrad des Datenprozessors zu verbessern.
- Eine weitere, damit zusammenhängende Schwierigkeit betrifft die Arbeitsweise der E-A-Steuerung beim Übertragen großer Datenblöcke zum oder vom Hauptspeicher. Das heißt, es wäre für den Hauptspeicher eine Arbeitsweise wünschenswert, in der die E-A-Steuerung während Speicher-Lese- oder Speicher- Schreiboperationen nicht in Wartezustände gerät.
- Aus der europäischen Patentschrift EP 244 540 A2 ist eine Vorrichtung zum Puffern von Schreiboperationen von einer Zentraleinheit zum Hauptspeicher bekannt, bei der aufeinanderfolgende Schreibanforderungen an dieselbe Adresse in einem Puffer gesammelt und zu einer einzelnen Schreibanforderung kombiniert werden. Die beschriebene Anordnung läßt das Sammeln mit der Schreibanforderung im Puffer, die als nächste zur Ausführung durch die Hauptspeicher-Bussteuerung vorgesehen ist, nicht zu, noch ermöglicht sie das Sammeln mit anderen als der unmittelbar vorhergehenden Schreibanforderung. Die Technik wird unter Benutzung einer Vielzahl Pufferbereiche implementiert, von denen jeder einen Datenbereich, einen Adreßbereich und einen Gültigkeitsbereich für die Angabe aufweist, welche Bit oder Byte des Datenbereichs in den Speicher zu schreibende Daten enthält.
- Der in den beigefügten Ansprüchen definierten Erfindung liegt daher die Aufgabe zugrunde, eine Vorrichtung und Verfahren zu schaffen, die eine leistungsfähige Schnittstelle zwischen einem Zentralprozessor und auch einer E-A-Steuerung (IOC; Abk. für engl. I/O = input/output controller) und dem Hauptspeicher schaffen, welche die Anzahl der Lese-Ändere- Schreib-Zyklen für einen Hauptspeicher wesentlich reduziert, und zum Verbinden einer E-A-Steuerung mit einem Hauptspeicher zum wirkungsvollen und raschen Ausführen von Operationen mit direktem Speicherzugriff (DMA; Abk. für engl. direct memory access).
- Gemäß einem Merkmal dieser Erfindung umfaßt ein CP-Schreibpuffer (CP = Abk. f. engl. central processor = Zentralprozessor) ein Paar Speichereingangsdatenregister (die in einem Paar integrierter Schaltungen einer Speicherdateneinheit (MDU; Abk. f. engl. memory data unit) angeordnet sind) und auch zwei Speicheradreßregister, ein Speichervorausadreß- Register und einen Adreßvergleicher (der in einer Speicheradreßeinheit (MAU; Abk. f. engl. memory address unit) angeordnet ist. In Verbindung mit zugeordneter Steuerlogik werden diese Register zum Puffern von CP-Schreibadressen und -Schreibdaten zum Hauptspeicher benutzt. Ein Zweck des CP- Schreibpuffers ist es, die Anzahl der Speicherschreiboperationen und der CP-Unterbrechungen wegen eines Speicherbelegtzustandes so gering wie möglich zu halten. Alle CP- Schreiboperationen werden an der Hinterflanke eines CP- Schreibzyklus in ein Paar Daten/Adreßregister geladen, und wenn keine weiteren CP-Schreibanforderungen anstehen, wird eine angefordert. Liegt eine Schreibanforderung vor, wird das andere Paar Daten/Adreßregister benutzt. Steht bei beiden Registerpaaren eine Schreiboperation an, wird das zuletzt geladene Adreßregister auf Übereinstimmung mit der laufenden Schreibadresse unter Benutzung des Vorausadreß- Registers und des Vergleichers überprüft. Eine Übereinstimmung führt zur Kombination der Daten der vorausgehenden und der laufenden Schreibdaten in eine anstehende Schreiboperation, unter Benutzung einer Schaltung zum Mischen von Schreiboperationen in den MDU-Einheiten. Das Vorausadreß- Register wird geladen, wenn jedes der übrigen Adreßregister geladen wird.
- Durch das Feststellen übereinstimmender Schreiboperationen können viele CP-Schreiboperationen während beispielsweise Schleifenbetriebs, in dem mehrere Schreiboperationen innerhalb eines kleinen Bereiches von Hauptspeicheradressen auftreten, aufgehoben werden. Das Ergebnis ist eine bedeutende Herabsetzung der vom CP generierten Speicheraktivität und eine entsprechende Minderung der Unterbrechungen der CP- Schreiboperationen.
- Gemäß einem weiteren Merkmal dieser Erfindung umfaßt ein E- A-Bus zur Speicherschnittstelle zwei Speicher-E-A-Adreßregister, ein E-A-Vorausadreß-Register, einen Adreßvergleicher (die alle in der MAU angeordnet sind), und zwei Speicherschreibpuffer je mit zugeordneten modifizierten oder Markierungsbit-Registern (die in den MDU angeordnet sind). Die MDU umfassen auch Speicherlesedaten-FIFO. Die E-A-Schnittstelle bildet eine wirkungsvolle Schnellpuffervorrichtung, die mehrere Typen E-A-DMA-Übertragungen mit wenig Steuerlogik verarbeitet, wobei sie für CP- und Auffrischzugriffe ausreichend Restbandbreite im Speicher beibehält.
- Die E-A-Schnittstelle arbeitet in einer von zwei Betriebsarten, nämlich E-A-Schreibübertragungen zum Hauptspeicher und E-A-Leseübertragungen vom Hauptspeicher. Während E-A-Übertragungen zum Speicher bewirkt jede E-A-Schreiboperation, daß das E-A-Vorausadreß-Register und eines der Speicheradreßregister mit der Speicherschreibadresse zusammen mit entsprechenden Daten und geänderter Kennzeichnung bzw. geänderten Kennzeichnungen, die in die MDU geladen sind, geladen wird. Nachfolgende Schreiboperationen laden dieselben Register, wenn der Vergleicher eine Adressenübereinstimmung zwischen der E-A-Adresse und dem Inhalt des E-A-Vorausadreß- Registers angibt. Wird keine Übereinstimmung angezeigt, wird eine Speicheranforderung generiert und das andere Register benutzt.
- E-A-Leseoperationen werden dadurch ausgeführt, daß zuerst die MDU-Lesedatenregister mit Lesedaten aus Speicherplätzen geladen werden, die durch eine auf 16-Byte-Wort-Grenze ausgerichtete Adresse im ersten E-A-Adreßregister angegeben sind, der eine inkrementierte, auf 16-Byte-Wort-Grenze ausgerichtete Adresse im zweiten E-A-Adreßregister folgt. Die Übertragung wird dann begonnen, und alle ankommenden E-A- Leseadressen werden für einen Vergleich mit einem laufenden 16-Byte-Wort überprüft. Wenn eine ankommende, nach einer 16- Byte-Wort-Grenze ausgerichtete E-A-Leseadresse mit dem Inhalt des E-A-Vorausadreß-Registers nicht gleich ist, wird unter Benutzung der inkrementierten Adresse eine Speicherleseanforderung generiert und die MDU-Lesedatenregister erhöht.
- Eine bedeutende Eigenschaft dieses Merkmals der Erfindung ist, daß keine spezifischen Adressen benutzt werden, und daß zum Bestimmen der Speicheroperationstypen die Kenntnis einer Übertragungsbreite (Byte, Wort usw.) nicht erforderlich ist. Das heißt, solange eine ankommende E-A-Leseadresse innerhalb eines 16-Byte-Wortes der Adresse liegt, die auf eine 16-Byte-Wort-Grenze ausgerichtet und im E-A-Vorausadreß-Register gespeichert ist, werden die angeforderten Daten dem E-A-Untersystem zum Übertragen an den anfordernden Agenten, z. B. an eine Diskette oder einen Übertragungsport, geliefert.
- Nachdem das Vorstehende bekanntgemacht wurde, werden weitere besondere Eigenschaften der Erfindung aus der nachstehenden detaillierten Beschreibung der Erfindung im Zusammenhang mit den beigefügten Zeichnungen deutlich werden, in denen zeigt:
- Fig. 1 eine Darstellung der Anordnung der Fig. 2A bis 2D,
- Fig. 2A bis 2D je eine Darstellung eines Teils eines Blockschaltbildes eines Datenprozessors, der erfindungsgemäß ausgebildet ist und betrieben wird,
- Fig. 3 eine Darstellung der Anordnung der Fig. 4A bis 4D,
- Fig. 4A bis 4D je eine Darstellung eines Teils eines Blockschaltbildes einer Speicheradreßeinheit (MAU), die Bestandteil des Blockschaltbildes der Fig. 2A bis 2D und insbesondere in Fig. 2A dargestellt ist,
- Fig. 5 eine Darstellung der Anordnung der Fig. 6A bis 6D,
- Fig. 6A bis 6D je eine Darstellung eines Teils eines Blockschaltbildes einer Speicherdateneinheit (MDU), die Bestandteil des Blockschaltbildes der Fig. 2A bis 2D ist, wobei zwei dieser Einheiten speziell in Fig. 2C dargestellt sind,
- Fig. 7 bis 10 Zeitdiagramme, die für den in Fig. 2A bis 2D dargestellten Datenprozessor zeigen: eine 16- Byte-Wort-Speicher-Leseoperation, eine Zentralprozessor(CP)-Speicher-Schreiboperation, eine Wort/- Doppelwort-Speicher-Schreiboperation bzw. eine Teilwort-Speicher-Schreiboperation, und
- Fig. 11 bis 15 Zustandsdiagramme, die für den in Fig. 2A bis 2D dargestellten Datenprozessor die Arbeitsweise von Ablaufsteuereinheiten zeigen für eine CP-Schreibsteuerung, eine CP-Lesesteuerung, eine E-A-Speichersteuerung, einen dynamischen Speicher- Direktzugriff (DRAM) bzw. die Ausführung einer Speicheranforderung.
- Unter Bezugnahme auf Fig. 2A bis 2D wird nachstehend ein Datenprozessor 10 beschrieben, der entsprechend dieser Erfindung ausgebildet ist und betrieben wird. Ein Zentralprozessor (CP) 12 ist an einen 8K·88-Bit-Steuerspeicher 14 durch einen 14-Bit-Steuerspeicher-Adreßbus 14a und einen 88-Bit- Steuerspeicher-Datenbus 14b angeschlossen. Der Steuerspeicher 14 speichert Mikrobefehle, die in den CP 12 eingelesen werden, um Makrobefehle auszuführen, die aus einem 8K·72- Bit-CACHE-Speicher 16 über eine CACHE-Dateneinheit (CDU; Abk. f. engl. cache data unit) 18, einen bidirektionalen 64- Bit-Datenbus BDS00 : 63 18a und einen bidirektionalen 32-Bit- Datenbus DB00 : 32 12a ausgelesen werden.
- Makrobefehle werden aus dem CACHE-Speicher 16 entsprechend physikalischen Adressen geholt, die der CP 12 über einen CA- CHE-Adreß-Multiplexer (MUX) 20 auf einen 32-Bit-Realadreßbus (PA0 : 31; PA = Abk. f. engl. physical address) 12b leitet. Der CACHE-Adreß-MUX 20 wird beim Vorfüllen des CACHE 16 mit Befehlen und Daten benutzt. Bei dieser Ausführungsform der Erfindung werden dem CACHE 20 nur die PA-Bit 16 : 28 zugeleitet. Das PA-Bit 28, das als LSB-Adreßbit (LSB = Abk. f. engl. least significant bit = geringstwertiges Bit) zugeführt wird, ermöglicht das Lesen eines Doppelwortes (acht Byte oder zwei 32-Bit-Wörter) durch den CP 12 über den 64- Bit-Bus 18a und den 32-Bit-Bus 12a. Der 8-Bit-Bus DSP0 : 7 18b überträgt Datenparitätsbit zwischen dem CACHE 16 und der CDU 18. Die CDU 18 arbeitet als Datenpuffer zum Verbinden des 32-Bit-Datenbusses 12a des CP 12 mit dem 64-Bit-Cache/Hauptspeicher-Datenbus 18a, als Datenfehlerprüfer, und sorgt für Datenausrichtung für den CP 12.
- Bei der derzeit bevorzugten Ausführungsform dieser Erfindung sind die aus dem CACHE 16 gelesenen Makrobefehle die, welche ein Programm in VS-Assemblersprache implementieren, das durch die Wang Laboratories Inc., Lowell MA geliefert wird.
- Der 32-Bit-Prozessor-Datenbus 12a ist durch einen Sendeempfänger 22 gepuffert und als gepufferter Datenbus (BDB0 : 31; Abk. f. engl. buffered data bus) 22a an mehrere Orte geführt, darunter ein 16K·8-Bit-Datenschlüsselspeicher 24, ein 16-Bit-Steuer- und Zustandsregister (XCTLREG) 26, eine Bezugs- und Änderungstabelle (REF/CNG TABLE) 28 und ein Busschnittstellenchip (BIC; Abk. f. engl. bus interface chip) 30 des Systems (Rückwand). Dieser Datenpfad verleiht dem CP 12 die Möglichkeit, Steuerinformationen an diese verschiedenen Vorrichtungen zu senden und aus diesen Zustandsinformationen zu lesen.
- Der Datenschlüsselspeicher 24 speichert verschlüsselte Informationen und schafft die Fähigkeit, die Ausführung nur spezieller Softwarepakete durch den CP 12 zu ermöglichen. Die REF/CNG-Tabelle 28 gibt einen Verweis auf eine bestimmte Speicherseite aus und gibt an, wenn der Verweis eine Schreiboperation war. Der BIC 30 verbindet mit anderen Komponenten, die mit dem Systembus 32 verbunden sind, der einen multiplex genutzten 32-Bit-Adreß/Datenbus (AD31 : 0) 32a, zugehörige Paritätsleitungen (PAR3 : 0) 32b und Steuersignalleitungen 32c umfaßt. Der BCI 30 teilt im allgemeinen den Zugang zum Systembus 32 zu und führt allen notwendigen Quittungsaustausch mit anderen Vorrichtungen aus, die mit dem Systembus 32 verbunden sind. Das XCTLREG 26 ermöglicht die Steuerung über den CACHE-Speicher 16, zeigt den CACHE- Zustand an und liefert auch Angaben über korrigierbare und unkorrigierbare Datenfehler.
- Ein Puffer 34 steuert des PA-Bus 12b als CP-Adreßbus (CPA) 34a an den Datenschlüsselspeicher 24 (14 Bit), die REF/CNG- Tabelle 28 (16 Bit) und eine Speicheradreßeinheit (MAU) 36 (27 Bit). Die MAU 36 ist detaillierter in Fig. 4A bis 4D dargestellt. Die MAU 36 ordnet Speicher-Lese- und -Schreibadressen in Warteschlangen an und schreibt und liest Daten in und aus einem Hauptspeicher 40 in Verbindung mit geraden bzw. ungeraden Speicherdateneinheiten (MDU) 38a bzw. 38b (Fig. 6A bis 6D). Der Hauptspeicher 40 ist von einer Vielzahl DRAM-Modulen 40a bis 40d gebildet und als Gerade-Wort- Array (Module 40a und 40b) und Ungerade-Wort-Array (Module 40c und 40d) organisiert. Die Gesamtbreite des Hauptspeichers ist 64 Bit (ein Doppelwort) plus 14 Bit Paritätsinfor mationen. Die Parität wird bei jedem ungeraden und geraden 32-Bit-Speicherwort getrennt bestimmt.
- Die MAU 36 empfängt auch einen 27-Bit-E-A-Adreßbus (IOA; IO = Abk. f. engl. input output)) 36a, der an den BIC 30 als Quelle über einen gepufferten Adreßbus (BA) 30a und einen Zwischenspeicher 42 angeschlossen ist. Der IOA-Bus 36a liefert eine erste Speicheradresse eines Datenblocks, der durch ein mit dem Systembus 32 verbundenes E-A-Gerät einzuschreiben oder auszulesen ist. Die erste Adresse wird von einem Sendeempfänger 44, einem gepufferten Adreß/Datenbus (BAD) 44a und einem Sendeempfänger 45 empfangen. Der Sendeempfänger 45 kann die erste Speicheradresse des Speicherblocks über den BA-Bus 30a an den BIC 30 und den Zwischenspeicher 42 weitergeben. In der MAU 36 wird die erste Adresse gepuffert, und nachfolgende Speicheradressen werden durch den BIC 30 während einer E-A-Operation inkrementiert und über den Zwischenspeicher 42 an die Busse 30a und 36a weitergegeben. Dies ermöglicht die Ausführung einer möglicherweise großen Zahl Lese- oder Schreiboperationen an aufeinanderfolgenden Speicherplätzen des Hauptspeichers 40. Die Arbeitsweise der MAU 36 wird weiter unten näher beschrieben.
- Ein Ausgang der MAU 36 ist ein 22-Bit-Speicheradreßbus (MA) 36b, der mit einem Zeilen/Spalten-Multiplexer (MUX) 46 verbunden ist, welcher über einen 12-Bit-Ausgang Zeilen- und Spaltenadressen sequentiell über Treiber 48a bis 48d an die zugehörigen DRAM-Module 40a bis 40d liefert. Der Zeilen/Spalten-Multiplexer 46 wird durch ein COL-Signal gesteuert, das von einer Speichersteuerungs-Ablaufsteuereinheit generiert wird, die Teil einer Speichersteuerung 31 ist.
- Ein anderer Ausgang der MAU 36 ist ein 24-Bit-Aktualisierungs-Adreßbus (UPDT; Abk. f. engl. update) 36c, der in einem Register XMAR 50 zwischengespeichert wird. Das XMAR 50 liefert über einen mit dem Register verbundenen Aktualisierungsadreßbus (RUPDT; Abk. f. engl. registered update) 50a an den MUX 20 (13 Bit), an einen MUX 52 (24 Bit), an einen Treiber 54 und an einen externen Kennzeichenspeicher 56. Mit dem MUX 52 ist ferner der PA-Bus 12b verbunden. Der Ausgang des MUX 52 ist ein 13-Bit-Adreßbus (ITSA; Abk. f. engl. internal tag store address) 52a mit Adresse in einem Intern- Kennzeichen-Speicher und ein 11-Bit-Datenbus (ITSD) 52b mit Daten für den Intern-Kennzeichen-Speicher, die mit einem Intern-Kennzeichen-Speicher 58 verbunden sind. Der Ausgang des Treibers 54 ist ein 13-Bit-Adreßbus (XTSA) 54a mit Adresse in einem Extern-Kennzeichen-Speicher, der mit dem Extern- Kennzeichen-Speicher 56 zusammen mit 11 Bit des RUPDT-Busses 50a verbunden ist. Der Extern-Kennzeichen-Speicher 56 und der Intern-Kennzeichen-Speicher 58 stellen CACHE-Treffer und CACHE-Fehler, XMIS bzw. IMIS, für E-A-Zugriffe bzw. Zugriffe des CP 12 fest.
- Die MDU 38a und 38b arbeiten in Verbindung mit Registerpuffern 60a bzw. 60b, um eine Datenwarteschlange für Lese- und Schreibzugriffe auf den Hauptspeicher 40 zu bilden. Die MDU 38a und 38b stellen je auch Erzeugungs- und Prüffunktionen für wortbreite Fehlerkorrekturcodes (ECC) für Daten zum und vom Hauptspeicher 40 bereit. Jede der MDU 38a und 38b ist bidirektional mit einem Wort (32 Bit) des gepufferten 64- Bit-Datenspeicherbusses (BDS) 18a und dadurch mit dem CACHE 16 und der CDU 18 verbunden. Jede der MDU 38a und 38b ist auch Quelle von 4 Bit des 8-Bit-CP-Datenparitätsbusses (CPDP), der über einen Puffer 64 mit dem 8-Bit-Bus DSP0 : 7 18b verbunden ist, der Datenparitätsbit zwischen dem CACHE 16 und der CDU 18 überträgt. Die MDU 38a und 38b weisen je auch einen 32-Bit-E-A-Datenpfad (IOD) auf und sind bidirektional parallel mit einem Sendempfänger 62 und von dort mit dem BAD-Bus 44a verbunden. Für E-A-Datenübertragungen zum oder vom Systembus 32 werden die MDU abwechselnd angewählt, um bis zu einem 32-Bit-Wort an den Sendeempfänger 62 zu übertragen oder bis zu einem 32-Bit-Wort vom Sendeempfänger 62 zu empfangen. Die MDU 38a und 38b werden weiter unten näher beschrieben.
- Die weiter oben genannte Speichersteuerung 31 (Fig. 2D) umfaßt eine Ablaufsteuereinheit für Speicheranforderungszuteilungen (Fig. 15), die auf CP-Speicheranforderungen, E-A- Speicheranforderungen und Auffrischspeicheranforderungen anspricht. Die Speichersteuerung 31 umfaßt auch eine Ablaufsteuereinheit zur DRAM-Steuerung (Fig. 14). Die Speichersteuerung 31 steuert den Zugriff auf den Hauptspeicher 40 und das sequentielle Ordnen desselben. Die von der Speichersteuerung 31 generierten Zeitsteuersignale sind in den Fig. 7 bis 10 für eine 16-Byte-Wort-Leseoperation, eine CP- Schreiboperation, eine Wort/Doppelwort-Schreiboperation bzw. eine Teil- oder Lese-Ändere-Schreib-Operation (RMW, Abk. f. engl. read, modifiy, write) dargestellt.
- Der Datenprozessor 10 gemäß Fig. 2A bis 2D ist bei einer derzeit bevorzugten Ausführungsform der Erfindung an einer einzelnen, mehrschichtigen gedruckten Schaltkarte untergebracht. Die CDU 18, die MAU 36, die MDU 38a und 38b und der BIC 30 sind je in einem anwendungsspezifischen Schaltkreis (ASIC; Abk. f. engl. application specific integrated circuit) enthalten. Ein Zyklus des CP 12 dauert mindestens 50 Nanosekunden (Taktfrequenz 20 MHz) und ist von zwei oder mehr Teilzyklen oder "Impulsen" von 25 Nanosekunden bei 50% Einschaltdauer gebildet. Der Takt des CP 12 ist mit einem 50- Nanosekunden-Taktsignal (nicht 50% Einschaltdauer) synchronisiert, das auf dem Systembus 32 übertragen wird. Eine derzeit bevorzugte Technik zum Ableiten der synchronisierten 25-Nanosekunden-Taktimpulse bei 50% Einschaltdauer (40 MHz) vom bei nicht 50% Einschaltdauer 20-MHz betragenden Systembus-Takt ist in der gemeinsam übertragenen Patentanmeldung EP 0 723 718 mit dem Titel "Clock Frequency Multiplying and Squaring Circuit and Method" (Schaltung und Verfahren zum Vervielfachen und Rechteckformen von Taktfrequenzen) von J. MacDonald beschrieben.
- Es wird nun auf Fig. 4A bis 4D verwiesen, in denen der Aufbau der in Fig. 2A gezeigten MAU 36 dargestellt ist. Eine CP/E-A-Schreibregistersteuerung 70 empfängt als Eingänge einen 3-Bit-CP-Befehl (CPCMD; Abk. f. engl. central processor command) 70a, einen 3-Bit-E-A-Befehl (IOCMD) 70b, die drei geringstwertigen Bit des CP-Adreßbusses (CPADR) 34a und die drei geringstwertigen Bit des E-A-Adreßbusses (IOADR) 36a. Von dieser Information ausgehend liefert die Schreibregistersteuerung 70 einen ersten 5-Bit-Code (CPLD) 70c, der den MDU 38a und 38b ein Änderungsfeld für Daten des CP 12 angibt, und einen zweiten 5-Bit-Code (IOLD) 70d, der den MDU 38a und 38b ein Änderungsfeld für E-A-Daten angibt. Unter diesen Umständen werden CPLD und IOLD während nachstehend beschriebenen Schreiboperationen verwendet, um das Laden in die MDU 38 eines bezeichneten Byte oder bezeichneter Byte zu bewirken und Markierungsbit entsprechend zu setzen.
- Die Mau 36 umfaßt auch einen Adreßregistertakt-Freigabeblock 72, der zwei Taktsignale des CP 12 (CKCP; Abk. f. engl. clock CP) 72d empfängt und Takte 72a, 72b und 72c an ein erstes CP-Adreßregister (CP ADDR REG0) 74, ein zweites CP- Adreßregister (CP ADDR REG1) bzw. ein CP-Vorausadreß- Register 78 ausgibt.
- Wie im Zustandsdiagramm gemäß Fig. 11 angegeben, werden für eine erste Speicherschreiboperation des CP 12 (Zustand 110 in Fig. 11) 24 Bit (05 : 28) der zugehörigen Speicheradresse vom CPADR-Bus 34a in das CP-Adreßregister 0 (CKCP0) 74 und auch in das CP-Vorausadreß-Register 78 zwischengespeichert, und es wird eine CP-Speicheranforderung (CPMREQ; Abk. f. engl. meCP mory request) aktiviert und zur Speichersteuerung 31 gemäß Fig. 2D geleitet. Die Ablaufsteuereinheit für CP- Schreiboperationen bleibt im Zustand 110, wenn keine weitere CP-Schreiboperation erscheint (CPWR*) und so lange, wie die angeforderte CP-Speicherschreiboperation nicht beendet ist (CMPL*). Ist die Schreiboperation zu Ende (CMPL), ohne daß eine weitere CP-Schreiboperation auftritt (CPWR*), wird wieder in den Zustand 000 eingetreten.
- Wenn die Speicheroperation vor einem nächsten Speicherzugriff des CP 12 (CPWR) nicht beendet ist (CMPL*), werden 24 Bit der nächsten Speicheradresse im CP-Adreßregisterl (CKCP1) 76 und auch im CP-Vorausadreßregister 78 zwischengespeichert, und es wird in den Zustand 111 eingetreten. Es sei darauf hingewiesen, daß das CP-Vorausadreßregister 78 getaktet wird, wann immer das CP-Adreßregister0 74 oder das CP-Adreßregisterl 76 getaktet wird, um die gerade empfangene CP-Schreibadresse zu speichern.
- Im Zustand 111 wird eine weitere CP-Speicheranforderung (CPMREQ) an die Speichersteuerung 31 ausgegeben, und die Ablaufsteuereinheit bleibt im Zustand 111, bis die Speicheranforderung für die erste CP-Schreiboperation beendet ist (CVMPL). Während des Zustands 111 wird das CP-Adreßregisterl 76 bei Auftreten einer weiteren CP-Schreiboperation, und wenn ein Vergleicher 80 Übereinstimmung (CPAMTCH 80a) zwischen der empfangenen CP-Schreibadresse und der CP- Schreibadresse, die im CP-Vorausadreßregister 78 gespeichert ist, feststellt, und wenn die zuvor angeforderte Speicheroperation nicht beendet ist, getaktet (CKCP1). Das heißt CKCP1 = CPWR und CPAMTCH und COMPL*. Die Aktivierung von CPAMTCH 80a zeigt an, daß die laufende CP-Schreiboperation auf dasselbe Speicherdoppelwort gerichtet ist wie die vorausgehende CP-Schreiboperation, deren Adresse im CP ADDR REG1 76 gespeichert ist. Das CPAMTCH-Signal 80a wird von der MAU 36 ausgegeben und wird von der Ablaufsteuereinheit gemäß Fig. 11 benutzt, um die laufenden Schreibdaten mit im Register gespeicherten Schreibdaten aus einer oder mehreren vorausgegangenen und noch unerledigten CP-Schreiboperationen selektiv zu kombinieren. Einzelheiten der Schreib-Misch- Operation der MDU 38 sind nachstehend beschrieben.
- Im Zustand 111 und wenn eine CP-Schreiboperation empfangen wird, die zu keiner Übereinstimmung mit dem Inhalt des CP PREV ADD REG 78 führt (CPAMTCH*), wird ein Schreibstoppsignal (WRSTCP) aktiviert, um die CP-Schreiboperation anzuhalten. Dies geschieht bei Erscheinen zweier gepufferter CP- Schreiboperationen und der Generierung einer dritten, die nicht auf dasselbe Doppelwort wie die letzte C-P-Schreiboperation gerichtet ist, deren Adresse in CP ADDR REG1 76 gepuffert ist.
- Wenn, entsprechend dem früheren Hinweis, die erste angeforderte CP-Schreiboperation (die der in CP ADDR REG0 74 gespeicherten Adresse zugeordnet ist) beendet ist (CMPL), wird in den Zustand 001 eingetreten. Das CP-Schreibstopsignal wird ebenfalls aufgehoben. Die Ablaufsteuereinheit bleibt so lange im Zustand 001, wie keine weitere CP-Schreiboperation (CPWR*) vorliegt und die zweite CP-Speicheranforderung, die für die im CP ADDR REG1 76 gespeicherte Adresse ausgegeben worden ist, nicht ausgeführt ist. Wenn diese letztgenannte CP-Speicheranforderung beendet ist (CMPL), ohne daß eine weitere CP-Schreiboperation ankommt (CPWR*), wird erneut in den Zustand 000 eingetreten. Erscheint eine weitere CP- Schreiboperation (CPWR), und wird die Speicherschreiboperation auch beendet (CMPL), wird in den Zustand 110 eingetreten und das CP ADDR REG0 74 wird getaktet (CKCP0), um die laufende Schreibadresse zu speichern. Die Aktivierung von CKCP0 bewirkt auch die Speicherung der CP-Schreibadresse im CP PREV ADDR REG 78. Wenn jedoch eine weitere CP-Schreib- Operation (CPWR) vor der Beendigung der Speicherschreiboperation (CMPL*) eintrifft, wird in den Zustand 011 eingetreten und das CP ADDR REG0 74 wird getaktet (CKCP0), um die zugehörige Schreibadresse zu speichern. Wie zuvor bewirkt die Aktivierung von CKCP0 auch die Speicherung der CP- Schreibadresse im CP PREV ADDR REG 78.
- Die Arbeitsweise im Zustand 011 ist der im Zustand 111 ähnlich. Das heißt, im Zustand 011 wird eine CP-Speicheranforderung (CPMREQ) an die Speichersteuerung 31 ausgegeben, und die Ablaufsteuereinheit bleibt im Zustand 011, bis die Speicheranforderung für die zweite CP-Schreiboperation beendet ist (CMPL). Während des Zustandes 011 wird das CP ADDR REG0 74 beim Erscheinen einer weiteren CP-Schreiboperation und wenn der Vergleicher 80 Übereinstimmung (CPAMTCH) zwischen der empfangenen CP-Schreibadresse und der CP-Schreibadresse feststellt, die im CP PREV ADDR REG 78 gespeichert ist, und wenn die zuvor angeforderte Speicheroperation nicht beendet worden ist, getaktet (CKCP0). Das heißt CKCP0 = CPWR und CPAMTCH und COMPL*. Wie zuvor zeigt die Aktivierung von CPAMTCH 80a an, daß die empfangene CP-Schreiboperation auf dasselbe Speicherdoppelwort gerichtet ist wie die vorausgehende CP-Schreiboperation, deren Adresse im CP ADDR REG0 74 gespeichert ist.
- Im Zustand 011, und wenn eine CP-Schreibadresse empfangen wird, die zu keiner Übereinstimmung mit dem Inhalt des CP PREV ADD REG 78 führt (CPAMTCH*), wird das Schreibstoppsignal (WRSTCP) aktiviert, um die CP-Schreiboperation anzuhalten. Die Ablaufsteuereinheit bleibt im Zustand 011, bis das Ausführungssignal CMPL empfangen wird (das anzeigt, daß die der Speicheradresse, die im CP ADDR REG1 76 gespeichert ist, zugeordnete Schreiboperation beendet ist), worauf in den Zustand 110 übergegangen wird.
- Das Zustandsdiagramm gemäß Fig. 12 zeigt die Arbeitsweise der MAU 36 bei einer CP-Speicher-Lese-Operation. Wenn im Zustand 00, erscheint eine CP-Leseoperation mit einem CACHE- Fehler (RMISS) und einer anstehenden (BWPNDG) oder nicht anstehenden (BWPNDG*) gepufferten Schreiboperation. Im erstgenannten Fall wird in den Zustand 01 eingetreten, bis keine gepufferte Schreiboperation ansteht (Zustand 000 gemäß Fig. 11), worauf in den Zustand 10 eingetreten wird. In den Zustand 10 wird direkt aus dem Zustand 00 eingetreten, wenn keine gepufferte Schreiboperation ansteht. Im Zustand 10 wird die Leseadresse sowohl in das CP ADDR REG0 74 als auch das CP ADDR REG1 76 eingetaktet, und es wird in den Zustand 11 eingetreten, in dem eine CP-Speicheranforderung aktiviert wird (CPMREQ). Es wird darauf hingewiesen, daß die CP-Leseadresse nicht in beide Adreßpufferregister eingetaktet werden braucht. Die Ablaufsteuereinheit bleibt im Zustand 11, bis die CP-Speicheranforderung beendet ist (CLRDMREQ), worauf wieder in den Zustand 00 eingetreten wird. Zu diesem Zeitpunkt sind die angeforderten Daten durch die MDU 38a und 38b zurückgeschrieben worden.
- Kurz zusammengefaßt: Der Schreibpuffer des CP 12 weist ein Paar 64-Bit-Speichereingangsdaten-Register und zugehörige Markierungsbitregister (die in den MDU 38a und 38b angeordnet sind) auf, die beiden 24-Bit-Speicheradreßregister (74, 76) und das 24-Bit-Vorausadreßregister (78). In Verbindung mit zugehöriger Steuerlogik werden diese Register benutzt, um Schreibadressen und -daten des CP 12 zum Hauptspeicher 40 zu puffern. Zweck des CP-Schreibpuffers ist es, die Zahl der Speicherschreiboperationen und der CP-Stopps wegen einer Speicher-Belegt-Bedingung so gering wie möglich zu halten. Alle Schreiboperationen des CP 12 werden in ein Daten/Adreßregister-Paar an der Rückflanke eines CP-Schreibzyklus geladen und, wenn keine weiteren CP-Schreibanforderungen anstehen, wird eine angefordert. Wenn eine Schreibanforderung an steht, wird das andere Daten/Adreßregister-Paar benutzt. Wenn an beiden Registerpaaren eine Schreiboperation ansteht, wird das zuletzt geladene Register auf eine Übereinstimmung mit der laufenden Schreibadresse unter Benutzung des Vorausadreß-Registers überprüft, und eine Übereinstimmung dieser Register führt zur Kombination der jüngsten anstehenden Schreiboperation und der laufenden Schreiboperation zu einer anstehenden Schreiboperation, wobei die Schreib-Misch- Schaltung der MDU 38a und 38b benutzt wird. Das Vorausadreß- Register 78 wird geladen, wenn jedes der anderen Registerpaare geladen wird.
- Durch Feststellen von übereinstimmenden Schreiboperationen können viele Schreiboperationen des CP 12 beispielsweise während Schleifenoperationen, bei denen mehrere Schreiboperationen innerhalb eines kleinen Adressenbereiches des Hauptspeichers 40 auftreten, aufgehoben werden. Die Folge ist eine bedeutende Minderung der vom CP 12 generierten Speicheraktivität und eine entsprechende Reduzierung der Unterbrechungen des CP 12 bei Schreiboperationen.
- Die MAU 36 umfaßt auch einen Adreßregister-Takt-Freigabeblock 82, der zwei E-A-Taktsignale (CKIO) 82d empfängt und Takte 82a, 82b und 82c an ein erstes E-A-Adreßregister (IO ADDR REG0) 84, ein zweites E-A-Adreßregister (IO ADDR REG1) 86 bzw. an ein E-A-Vorausadreß-Register 88 ausgibt. Die E-A- Adressenschaltung umfaßt ferner ein E-A-Adreßregister 1 (IIO ADDR REG1) 90, das die eingegebene E-A-Adresse zwischenspeichert, die durch ein vom BIC 30 generiertes R/A-Signal befohlen wird. Wenn eine E-A-Leseoperation läuft (IORD niedrig), wird das Bit 28 der E-A-Adresse durch einen Multiplexer 92 zwangsweise auf Null gesetzt, wodurch eine Ausrichtung der E-A-Lese-Speicher-Adresse auf 16-Byte-Wortgrenze erzwungen wird.
- Wenn, unter Bezugnahme auf das Zustandsdiagramm der E-A- Speichersteuerung gemäß Fig. 13 (linke Hälfte), eine E-A- Leseoperation ausgelöst wird, wird ein E-A-Register-Null- Kennzeichen auf Null gesetzt (IOR0 = 0), das IO ADDR EG0 84 und das IO REG1 86 werden beide, wie das IO PREV ADDR REG 88, getaktet (CKIO0, CKIO1), und es wird eine E-A-Speicheranforderung (IOMREQ) für die Adresse ausgegeben, die im IO ADDR REG0 84 enthalten ist. Der Zustand des IOR0 bestimmt die Quelle der dem Speicher zugeführten Adresse (IOR0 = 0 dann IO ADDR REG0 84, IOR0 = 1 dann IO ADDR REG1 86). Es sei darauf hingewiesen, daß das IO ADDR REG1 86 mit der nächsten, auf 16-Byte-Wortgrenze ausgerichteten E-A-Leseadresse geladen wird, die durch den Addierer 94 inkrementiert wird, wogegen das IO ADDR REG0 84 die auf 16-Byte-Wortgrenze ausgerichtete E-A-Leseadresse lädt. Es wird dann in den Zustand 010 eingetreten, und die Ablaufsteuereinheit bleibt im Zustand 010, bis die erste E-A-Leseoperation beendet ist (IORDEND). Wenn die Bedingungen IORDEND und IOR0 wahr sind, bewirken sie einen Übergang in den Zustand 100, wobei das IOR0-Kennzeichen wieder auf Null gesetzt wird (IOR0 = 0) und ein Taktsignal E- A-Rückkehren (CKIORTN) aktiviert wird. Die Aktivierung von CKIORTN bewirkt die Übertragung des aus dem Hauptspeicher 40 ausgelesenen 16-Byte-Datenwortes von E-A-Lese-Speicherdaten- Register 190 und 192 (sh. Fig. 6D) und seine Zwischenspeicherung in einem 128-Bit(16-Byte-Wort)-Register in den MDU 38a und 38b (Register 194, 196 entsprechend Fig. 6D). Im Zustand 100 wird das IOR0-Kennzeichen deaktiviert (auf Eins gesetzt), und es wird eine zweite IOMREQ generiert, dieses Mal für den zuvor inkrementierten Inhalt des IO ADDR REG1 86. Die Ablaufsteuereinheit bleibt im Zustand 100, bis die E-A-Leseoperation beendet ist, worauf in den Zustand 110 übergegangen wird. Während des Übergangs ist IOR1 auf Eins gesetzt, und es wird ein Signal (STARTBIC) an den BIC 30 (sh. Fig. 2D) gesendet, das ihn anweist, aus dem Hauptspeicher 40 ausgelesene Daten auf den Bus 32 zu übertragen. Die Ablaufsteuereinheit bleibt im Zustand 110 so lange, wie der BIC 30 E-A-Leseadressen ausgibt und Daten auf den Bus 32 überträgt.
- Während sie im Zustand 110 ist, führt die Ablaufsteuereinheit für die E-A-Speichersteuerung die nachstehend angegebenen Operationen aus:
- a) CKIORTN wird aktiviert, wann immer das IOAMTCH-Signal 96a angibt, daß eine gerade empfangene E-A-Adresse der im IO PREV ADDR REG 88 gespeicherten E-A-Adresse nicht gleich ist, wodurch ein 16-Byte-Datenwort für die Ausgabe durch die MDU 38a und 38b bereitgestellt wird;
- b) sowohl CKIO0 als auch CKIO1 werden aktiviert, wann immer das IOAMTCH-Signal 96a angibt, daß eine gerade empfangene E-A-Adresse der im IO PREV ADDR REG 88 gespeicherten E-A- Adresse nicht gleich ist, wodurch die auf 16-Byte-Wortgrenze ausgerichtete Leseadresse in das IO ADDR REG0 84 und die inkrementierte, auf 16-Byte-Wortgrenze ausgerichtete Leseadresse in das IO ADDR REG1 86 geladen wird, während auch das IO PREV ADDR REG 88 neugeladen wird, und
- c) eine E-A-Speicheranforderung (IOMREQ) wird generiert, wann immer CKIO0 und CKIO1 generiert werden, wodurch in die Register 190 und 192 der MDU 38 das nächste 16-Byte-Datenwort vorabgerufen wird, auf das der gerade aktualisierte Inhalt des IO ADDR REG1 86 verweist.
- Wie weiter oben festgestellt wurde, benutzt jede generierte E-A-Speicheranforderung, ausgenommen die erste, beim Übergang in den Zustand 010 generierte Anforderung, die im IO ADDR REG1 86 gespeicherte inkrementierte Adresse. Folglich und insofern als E-A-Leseanforderungen üblicherweise einen Datenblock aus zusammenhängenden Speicherplätzen lesen, ruft die MAU 36 vorab einen nächsten, auf 16-Byte-Wortgrenze ausgerichteten Block von 16 Datenbyte in die MDU 38a und 38b ab, wann immer der BIC 30 eine E-A-Adresse liefert, die mit der im IO PREV ADDR REG 88 gespeicherten E-A-Adresse nicht übereinstimmt.
- Zum Beispiel kann der BIC 30 Datenbyte, Datenhalbwörter oder Datenwörter aus dem Hauptspeicher 40 lesen und an ein mit dem Bus 32 verbundenen E-A-Gerät übertragen. Unter diesen Umständen kann der BIC 30 bis zu 16 Leseanforderungen (bytebreite Übertragungen annehmend) für ein bestimmtes 16-Byte- Wort ausgeben, bevor eine Leseanforderung ausgegeben wird, die das IOAMTCH-Signal 96a auf falsch schaltet. Bei jeder dieser Leseanforderungen werden, weil das IOAMTCH-Signal 96a wahr bleibt, die angeforderten Daten von den E-A-Lese- Rückschreib-Datenregistern 194 und 196 (sh. Fig. 6D) der MDU 38 geliefert, wogegen ein zuvor vorabgerufenes 16-Byte-Wort bereits in den E-A-Lese-Speicherdaten-Registern 190 und 192 (sh. Fig. 6D) gespeichert ist. Wenn das IOAMTCH-Signal auf falsch schaltet, was angibt, daß der BIC 30 eine Leseoperation an einem nächsten 16-Byte-Wort anfordert, werden die Inhalte der E-A-Lese-Speicherdaten-Register 190 und 192 in den MDU 38 an die E-A-Lese-Rückschreibdaten-Register 194 und 196 durch Aktivieren von CKIORTN im Zustand 110 übertragen, und die BIC-Leseanforderung wird dann ausgeführt. Zur gleichen Zeit wird eine E-A-Speicheranforderung (IOMREQ) unter Benutzung der inkrementierten, auf 16-Byte-Wortgrenze ausgerichteten Adresse im IO ADDR REG1 86 ausgegeben, um ein nächstes 16-Byte-Wort in die E-A-Lese-Speicherdaten-Register 190 und 192 der MDU 38 vorabzurufen. Eine Folge dieser Operation ist, daß die E-A-Lesedaten-Pufferschaltung gegenüber einer laufenden E-A-Leseoperation, die vom BIC 30 gesteuert wird, um ein 16-Byte-Wort vorausgeht, und daß die Anzahl der Zugriffe auf den Hauptspeicher herabgesetzt ist.
- Bei E-A_Schreiboperationen werden der Multiplexer 92 und der Addierer 94 nicht benutzt. Statt dessen arbeitet die Schaltungsanordnung ähnlich wie die weiter oben beschriebene CP- Schaltungsanordnung (Register 74, 76, 78 und Vergleicher 80).
- Die rechte Seite des Zuatandsdiagramms gemäß Fig. 13 wird, wie zu erkennen, die E-A-Schreibadresse in Abhängigkeit von einer E-A-Schreiboperation im IO ADDR REG0 84 (CKIO0) zwischengespeichert, und der BIC 30 wird gestartet. Weil IORD nicht aktiviert ist, richtet der Multiplexer 92 die Schreibadresse nicht auf 16-Byte-Wortgrenze aus. Folglich ist die in IO ADDR REG0 84 und auch in IO PREV ADDR REG 88 gespeicherte Adresse nicht auf 16-Byte-Wortgrenze ausgerichtet, sondern stellt statt dessen ein Doppelwort dar (die geringstwertigen Bit 29, 30 und 31 stehen nicht im Register). Für jede nachfolgende E-A-Schreiboperation, die im selben Doppelwort liegt (IOAMTCH wahr), wird das IO ADDR REG0 84 wie das IO PREV ADDR REG 88 getaktet. Die Folge ist, daß die E-A-Schreibdaten in den MDU 38a und 38b akkumuliert werden, wie durch die fünf IOLD-Bit vorgeschriebenm ist, die vom CP/E-A-Schreibregister-Steuerblock 70 für jede E-A-Schreiboperation generiert werden.
- Wenn IOAMTCH auf falsch schaltet, angebend, daß der BIC 30 die E-A-Schreibadresse über die im IO PREV ADDR REG 88 gespeicherte Doppelwortadresse hinaus inkrementiert hat, wird CKIO1 generiert, um (wie das IO PREV ADDR REG 88) die laufende E-A-Schreibadresse zwischenzuspeichern, und es wird eine Speicheranforderung (IOMEMREQ) ausgegeben, um die akkumulierten Daten aus den MDU 38 in den Hauptspeicher 40 zu schreiben. Es wird dann in den Zustand 011 eingetreten.
- Für jede nachfolgende Schreiboperation, die im selben Doppelwort liegt (IOAMTCH wahr), wird das IO ADDR REG1 86 ge taktet, ebenso wie das IO PREV ADDR REG 88. Auch hier ist die Folge, daß die E-A-Schreibdaten in den MDU 38a und 38b akkumuliert werden. Beim Umschalten von IOAMTCH auf falsch, was angibt, daß der BIC 30 die E-A-Schreibadresse über die im IO PREV ADDR REG 88 gespeicherte Doppelwort-Adresse hinaus inkrementiert hat, wird CKIO0 generiert, um die laufende E-A-Schreibadresse im IO ADDR REG0 84 (und auch im IO PREV ADDR REG 88) zwischenzuspeichern, und es wird eine Speicheranforderung ausgegeben (IOMEMRQ). Es wird dann in den Zustand 101 eingetreten.
- Die Ablaufsteuereinheit wechselt zwischen den Zuständen 101 und 011, bis das STARTBIC-Signal auf falsch schaltet, was ein Ende der E-A-Schreibsequenz angibt, worauf die Steuerung in den Zustand OOX zurückkehrt.
- Wie weiter oben angegeben, sind die besonderen Merkmale der Operationen der MDU 38 beim Akkumulieren von Schreibdaten, bevor die Daten in den Hauptspeicher 40 geschrieben werden, nachstehend beschrieben.
- Kurz zusammengefaßt, umfaßt die E-A-Bus-Speicher-Schnittstelle die beiden einen 24-Bit-Speicher aufweisenden E-A- Adreßregister 84 und 86, das 24-Bit große E-A-Vorausadreß- Register 88, den Adressenvergleicher 96, zwei einen 64-Bit- Speicher aufweisende Schreibpuffer mit zugeordneten Markierungsbitregistern (die in den MDU angeordnet sind), und das (ebenfalls in den MDU angeordnete) Speicher-Lesedaten-FIFO. Die E-A-Schnittstelle bildet einen wirkungsvollen, schnellen Puffermechanismus, der für mehrere Arten E-A-DMA-Übertragungen (DMA = Abk. f. engl. direct memory access = direkter Speicherzugriff) bei kleinem Umfang der Steuerlogik ausgelegt ist, wobei eine ausreichende Restspeicherbandbreite für Zugriffe des CP 12 und Auffrischzugriffe beibehalten sind. Die E-A-Schnittstelle arbeitet in einer von zwei Weisen, nämlich E-A-Schreibübertragungen zum Hauptspeicher 40 und E- A-Leseübertragungen vom Hauptspeicher 40. Während E-A-Übertragungen zum Speicher bewirkt jede E-A-Schreiboperation, daß das IO PREV ADDR REG 88 und eines der Speicheradressenregister (84 oder 86) mit der Speicherschreibadresse geladen werden, zusammen mit zugehörigen Daten und modifiziertem/- modifizierten Kennzeichen, die in die MDU 38a und 38b geladen werden. Nachfolgende Schreiboperationen laden dieselben Register, wenn der Vergleicher 96 Adressenübereinstimmung anzeigt. Wenn keine Übereinstimmung angegeben wird, wird eine Speicheranforderung generiert, und es wird das andere Register benutzt. Leseoperationen werden dadurch ausgeführt, daß zuerst die Lesedatenregister der MDU mit 256-Bit Lesedaten aus Speicherplätzen geladen werden, die durch die auf 16-Byte-Wortgrenze ausgerichtete Adresse im IO ADDR REG0 84, gefolgt von der inkrementierten, auf 16-Byte-Wortgrenze ausgerichteten Adresse im IO ADDR REG1 86 angegeben sind. Es beginnt dann die Übertragung (STARTBIC), und alle ankommenden E-A-Leseadressen werden zum Vergleich mit einem laufenden 16-Byte-Wort überprüft. Wenn eine ankommende E-A-Leseadresse mit dem Inhalt des IO PREV ADDR REG 88 nicht gleich ist, wird eine Speicherleseanforderung generiert und die Lesedatenregister der MDU erhöht. Eine besondere Eigenschaft dieses Merkmals der Erfindung ist, daß keine spezifischen. Adressen benutzt werden, und daß zum Bestimmen der Arten der Speicheroperationen eine Kenntnis einer Übertragungsbreite (Byte, Wort usw.) nicht erforderlich ist. Das heißt, solange eine ankommende E-A-Leseadresse innerhalb eines 16-Byte-Wortes der im IO PREV ADDR REG 88 gespeicherten, auf 16-Byte- Wortgrenze ausgerichteten Adresse liegt, werden die angeforderten Daten dem E-A-Untersystem zum Übertragen an einen anfordernden Agenten, z. B. eine Diskette oder einen Übertragungsport geliefert.
- Nachdem die Adressenverarbeitung bei Operationen des CP 12 und der Ein-Ausgabe beschrieben wurde, wird nunmehr der übrige Teil der MAU 36 beschrieben. Addierer, die als Vergleicher 98 und 100 benutzt werden, arbeiten zusammen mit einem Decodier-Speicherkonfiguration-Logikblock 102 zusammen, um das Vorhandensein einer unzulässigen, vom CP generierten Speicheradresse (CPIMA = Abk. f. engl. CP (generated) illegal memory address) bzw. einer unzulässigen E-A-generierten Speicheradresse (IOIMA) festzustellen. Bei der derzeit bevorzugten Ausführungsform der Erfindung ist der Hauptspeicher 40 mit einreihigen Speicher-Schaltkreis-Gehäusen (SIM) implementiert, die 6-Bit-Zustandsinformationen auf PDX0 : 5 ausgeben. Der Decodier-Logikblock 102 gibt in Abhängigkeit von fünf Bit des PDX-Busses fünf, eine höchste Speicheradresse angebende Bit an die Vergleicher 98 und 100 aus, die auch fünf höchstwertige Bit des CP-Adreßbusses 34a bzw. fünf höchstwertige Bit des E-A-Adreßbusses 36a empfangen. Das Vorliegen der Bedingung einer unzulässigen Adresse wird zum Generieren einer Programmunterbrechung (program exception) benutzt.
- Auffrischoperationen für den Hauptspeicher 40 werden mit einem Auffrischadressenzähler 104 durchgeführt, der eine 24- Bit-Auffrischadresse ausgibt, und mit einer Auffrischzeitsteuerung 106, die alle 15,6 Mikrosekunden eine Auffrischanforderung ausgibt. Ein Auffrischbewilligungssignal (RFRSH; Abk. f. engl. refresh) wird als ein Auswahleingang in Verbindung mit Signalen CPOP und ADDRO einem Adreßmultiplexer 108 zugeleitet. Der Adreßmultiplexer 108 wählt eine Ausgabeadresse aus einer von fünf Adreßquellen aus: dem Auffrischadreßzähler 104, dem CP ADDR REG0 74, dem CP ADDR REG1 76, dem E-A-ADDR REG0 84 und dem E-A-ADDR REG1 86. Die ausgewählte Speicheradresse wird, wie das RFSH-Signal, wenn vorhanden, in einem Speicheradreß-Zwischenspeicher 110 zwischengespeichert. Die Bit05 : 08 der zwischengespeicherten Adresse 110a werden zusammen mit fünf SIM-Zustandsbit und dem zwischengespeicherten RFRSH-Signal einem RAS/CAS- Freigabe-Logikblock 112 (RAS Abk. f. engl. row address selection; CAS = Abk. f, engl. column address selection) zugeleitet. Von vier Aktiviere-RAS-Signalen (ENARAS) und vier Aktiviere-CAS-Signalen (ENACAS) werden vom Block 112 entsprechende Signale generiert und ausgegeben. Die Bit7 : 27 der zwischengespeicherten Speicheradresse 110a werden einem Eingang eines Ausgabe-Speicheradressen-Multiplexers 114 zugeführt. Ein zweiter Eingang (Bit 28) des Ausgabeadressen- Multiplexers 114 kommt von einem Addierer 116, der für jede (CP- oder E-A-)Speicher-16-Byte-Wort-Leseoperation ein inkrementiertes Signal liefert. Der Ausgang des Multiplexers 114 ist der Bus MA07 : 28, der an den RAS/CAS-Multiplexer 46 gemäß Fig. 2C angeschlossen ist. Die Bit 05 : 27 und das selektiv inkrementierte Bit 28 der zwischengespeicherten Speicheradresse 110 werden ebenfalls als ein Eingang eines Aktualisierungsmultiplexers 118 übertragen, der den 24-Bit- Aktualisierungsadreßbus (UPDT05 : 28) an das XMAR-Register 50 (sh. Fig. 2A) und somit an die Kennzeichenspeicher 56, 58 und über den Multiplexer 20 an den Adreßeingang des CACHE 16 liefert. Der zweite Eingang des Aktualisierungsmultiplexers 118 kommt über ein externes Speicheradreßregister (XMAREG) 120 von den Bit 05 : 28 des IOADR-Busses 36a. Ein Einfacheingang-Multiplexer 122 wirkt als Puffer für die Aktualisierungsadresse. Die Bit 5 : 31 des IOADR 36a werden auch in Verbindung mit einem Ausgang eines Logikblockes 126 einem Addierer 124 zugeleitet. In Abhängigkeit von einem 3-Bit-E-A- Befehl (IOCMD) 126a generiert der Logikblock 126 ein Signal, das zu den IOADR-Bit 36a hinzugefügt wird. Kommt es zu einem Übertrag, wird ein Signal Setze-Fortsetzungsfehler (STCNU) generiert. Das STCNU wird in ähnlicher Weise wie die Signale CPIMA und IOIMA benutzt und zum Generieren einer Unterbrechung (exception) des BIC 30 verwendet. Die Unterbrechung (exception) gibt in diesem Fall an, daß eine unzulässige E- A-Adresse generiert worden ist.
- Für eine Beschreibung der MDU 38a und 38b wird nunmehr auf Fig. 6A bis 6D Bezug genommen. Die MDU 38a und 38b sind von im wesentlichen identischem Aufbau und identischer Arbeitsweise, und folglich bezieht sich die nachstehende Beschreibung mit MDU 38 im allgemeinen auf beide Vorrichtung.
- In kurzen Worten: Die MDU 38 bildet einen 64-Bit-Datenpfad für den CP 12 und zwei parallele 32-Bit-Datenpfade für das E-A-Untersystem, wobei der CP-Datenpfad mit 64-Bit Daten zwischen der MDU 38a und der MDU 38b gleichmäßig aufgeteilt ist. Ferner bildet die MDU 38 für jedes Byte (8 Bit) der 64- Bit- und 32-Bit-Datenpfade einen Speicher für ein modifiziertes oder Markierungsbit, das im gesetzten Zustand der Logik angibt, daß das zugehörige (modifizierte oder markierte) Byte in den Speicher zu schreiben ist. Jeder Datenpfad (CP und E-A) ist sowohl für Daten wie für die zugehörigen Markierungsbit doppelt gepuffert, wobei ein Puffer dem CP oder dem IO ADDR REG0 der MAU 36, der andere dem CP oder IO ADDR REG1 der MAU 36 zugeordnet ist. Es ist eine Logik vorhanden, die in aus dem Hauptspeicher ausgelesene Daten die gepufferten Byteselektiv zu mischen vermag, die ein aktiviertes Markierungsbit haben. Die Mischoperation geschieht als atomare Lese-Ändere-Schreib-Speicheroperation (RMW; Abk. f. engl. read-modify-write). Die MDU 38a und 38b bilden in Verbindung miteinander auch das 16-Byte-Wort-FIFO (Register 190 bis 196), das vorstehend in der Beschreibung der MAU 36 bei E-A-Leseoperationen angesprochen wurde. Vorhanden ist eine Logik zum Prüfen von den aus dem Hauptspeicher 40 ausgelesenen Daten zugeordneten Paritätsbit, um Einzelbitfehler zu korrigieren, Angaben sowohl zu korrigierbaren als auch unkorrigierbaren Fehlern zu machen, Fehlerkorrekturcode-Bit (ECC; Abk. f. engl. error correction code) in den Haupt speicher geschriebene Daten zu setzen und Paritätsbit für zum CACHE 16 zurückgeschriebene Daten zu setzen.
- Im einzelnen: Die MDU 38 umfaßt für den Datenpfad des CP 12 ein erstes 32-Bit-Eingabedaten-Register (CPWR REG0) 130 und ein zweites 32-Bit-Eingabedaten-Register (CPWR REG1) 132. Für den E-A-Datenpfad weist die MDU 38 ein erstes 32-Bit- Eingabedaten-Register (IOWR REG0) 134 und ein zweites 32- Bit-Eingabedaten-Register (IOWR REG1) 136 auf. Der 32-Bit- Schreibdatenbus des CP (CPWD) hat als Quelle eine Hälfte eines Sendeempfängers 138 (sh. Fig. 6C), der mit 32 Bit des gepufferten 64-Bit-Datenspeicherbusses (BDSB) 18a verbunden ist. Wie weiter oben beschrieben, ist der BDSB 18a mit dem CACHE 16 und der CDU 18 verbunden (sh. Fig. 2B). Der 32-Bit- Schreibdatenbus der Ein-Ausgabe (IOWD) hat als Quelle eine Hälfte eines E-A-Sendeempfängers 140 (sh. Fig. 6D), der mit dem 32-Bit-E-A-Datenbus 62a verbunden ist. Insgesamt 16 Markierungsbit, die von den Registern 130 bis 136 ausgegeben werden, bilden einen Markierungsbus 142, der an einen Vierwege-Multiplexer 144 angeschlossen ist. Ein Markierungsbit wird automatisch gesetzt, wenn ein in den Hauptspeicher 40 zu schreibendes Byte vom CP 12 oder von der Ein-Ausgabe in den zugehörigen 8-Bit-Teil der Register 130 bis 136 geliefert wird. Insgesamt 128 Datenbit, ausgegeben von den Registern 130 bis 136, bilden einen Datenbus 146, der mit einem Vierwege-Multiplexer 148 verbunden ist. In Abhängigkeit vom CPLD0 : 4-Bus 70c, der von der MAU 36 ausgegeben wird, von zwei CP-Taktsignalen (CKCP) und von einem Betriebsartauswahl-Eingang (MDSEL), generiert ein Logikblock 149a acht Taktsignalfreigaben zum Steuern der Arbeitsweise aller CP- Register 130 und 132 von der Breite acht Byte (plus eines Markierungsbits). In ähnlicher Abhängigkeit vom IOLD0 : 4-Bus 70d, der von der MAU 36 ausgegeben wird, von zwei E-A-Taktsignalen (IOCP) und vom Betriebsartauswahl-Eingang, generiert ein Logikblock 149b acht Taktsignalfreigaben zum Steuern der Arbeitsweise aller E-A-Register 134 und 136 von der Breite acht Byte (plus eines Markierungsbits). Der MDSEL-Eingang hat einen ersten logischen Zustand für die MDU 38a und einen zweiten logischen Zustand für die MDU 38b und ist abhängig von der Einbauposition des MDU-Gerätes auf der gedruckten Schaltkarte.
- Im allgemeinen wirken mit Logikblöcke 149a und 149b mit der MAU 36 zusammen, um in den Registern 130 bis 136 die Daten aus einer Vielzahl CP- oder E-A-Schreiboperationen selektiv zu akkumulieren. Solange (CP- oder E-A-)Schreibadressen innerhalb eines vorgegebenen Doppelwortes liegen, werden die zugehörigen Schreibdaten in den Registern 130, 132 (CP- Schreiboperationen) oder 134, 136 (E-A-Schreiboperationen) gesammelt. Nur wenn eine Schreibadresse außerhalb eines vorgegebenen Doppelwortes liegt, wird der Inhalt der Register 130, 132 oder 134, 136 in den Hauptspeicher 40 ausgeschrieben, unter Benutzung der Adresse, die in der MAU 36 gepuffert ist, und so wie durch den Zustand der zugehörigen Markierungsbits vorgeschrieben ist.
- Die Multiplexer 144 und 148 werden durch zwei Signale (CPOP und WREGO) gesteuert, die definieren, ob eine CP- oder eine E-A-Speicheroperation im Gange ist und ob das entsprechende REG0 (130, 134) oder REG1 (132, 136) benutzt wird. Der ausgewählte 4-Bit-Ausgang des Markierungsmultiplexers 144 wird einem transsparenten Zwischenspeicher 150 zugeleitet, dagegen der ausgewählte 32-Bit-Ausgang des Datenmultiplexers 148 einem transparenten Zwischenspeicher 152. Die zwischengespeicherten Markierungsbit werden einem Logikblock 154 zugeleitet, der die Bit decodiert, um den Typ eines auszuführenden Hauptspeicherzyklus (Lese. Schreibe, Lese/Ändere/Schreibe) zu bestimmen. Die decodierte Angabe wird der Speichersteuerung 31 zur Verfügung gestellt (sh. Fig. 2D).
- Die beiden nachstehenden Tabellen zeigen die Bedeutung der Markierungsbit beim Generieren der WRITE- und WRTWD-Signale und die Auslegung durch die Speichersteuerung 31 der WRITE- und WRTWD-Signale von den MDU 38a und 38b. In der zweiten Tabelle beziehen sich WRITE0 und WRITE1 auf das von der MDU 38a bzw. der MDU 38b erzeugte WRITE-Signal. Die gleiche Vereinbarung gilt für die Signale WRTWD0 und WRTWD1.
- In beiden Fällen (WRITE oder WRTWD) werden die zwischengespeicherten Markierungsbit auch als Steuereingänge an einen Mischmultiplexer (MERGEMUX) 156 geleitet, der bei einer Teilwort-Schreiboperation ein bis drei Byte eines aus dem Speicher ausgelesenen Wortes (Eingang A) durch ein entsprechendes oder entsprechende zwischengespeicherte Byte aus dem Zwischenspeicher 152 ersetzt. Für eine Wort-Schreiboperation ist eine RMW-Speicheroperation nicht erforderlich, und als Folge werden alle vier zwischengespeicherten Byte durch den MERGEMUX 156 geleitet, wobei der Eingang A "irrelevant" ist. Der Ausgang des MERGEMUX 156 wird danach durch eine Hälfte eines Sendeempfängers 158 zum Speicherdatenbus 60c oder 60e geleitet, je nachdem, ob die MDU als MDU 38a bzw. MDU 38b installiert ist. Parallel dazu generiert eine Paritätserzeugungsschaltung 160 7 Bit Paritätsinformationen über das vom MERGEMUX 156 ausgegebene 32-Bit-Wort. Die Paritätsinformation wird durch einen Multiplexer 162 und eine Hälfte eines Sendeempfängers 164 zum Speicherparitätsbus 60d oder 60f geleitet, je nachdem, ob die MDU als MDU 38a bzw. MDU 38b installiert ist. Der zweite Eingang in den Multiplexer 162 kommt von einem Register 166, das zu Diagnosezwecken benutzt wird und die Fähigkeit schafft, jeden gewünschten Zustand der Paritätsbit zu erzwingen.
- Nachdem der Ausgangs(Schreib)-Datenpfad zum Hauptspeicher 40 beschrieben worden ist, wird nunmehr der Eingans(Lese)- Datenpfad vom Hauptspeicher 40 beschrieben. Sendeempfänger 158 und 164 sind Quelle eines internen 32-Bit-Speicher- Lesebusses (MEMRD) 158a bzw. eines 7-Bit-Paritätsbusses (MCBRD) 164a, die an ein Speicherleseregister (MEMRD REG) 168 bzw. MCBRD REG 170 angeschlossen sind. Ein Paritätsprüfer 172 ist mit dem Ausgang des MCBRD REG 170 und mit dem Ausgang des MEMRD REG 168 verbunden, um Signale bereitzustellen, die das Auftreten eines korrigierbaren oder eines unkorrigierbaren Fehlers in den aus dem Hauptspeicher 40 ausgelesenen Daten anzeigen. Der Paritätsprüfer 172 gibt auch sieben Syndrombit zu einem Bitdecodierer 174 aus, dessen 32-Bit-Ausgang als Steuersignale einem Korrekturmultiplexer 176 zugeleitet werden. Der Korrekturmultiplexer 176 hat zwei Eingänge, von denen jeder ein Bit des mit Register versehenen Speicherlesebusses und die Inversion dieses Bits empfängt. Abhängig vom Zustand des entsprechenden Bits vom Bitdecodierer 174, wird die wahre oder die invertierte Form jedes Bits ausgewählt, wodurch ein Mechanismus geschaffen wird, der einen fehlerhaften Bitfehler in dem aus dem Hauptspeicher 40 ausgelesenen 32-Bit-Datenwort selektiv korrigiert. Der Ausgang des Korrekturmultiplexers 176 bildet einen Bus korrigierter Lesedaten, der in den vorstehend be schriebenen MERGEMUX 156 bei CP- und E-A-Schreiboperationen und auch in ein CP-Lese-Rückschreibdaten-Register 178 eingegeben wird zum Verbinden während einer CP-Leseoperation (CPRD*) mit dem CACHE 16 und der CDU 18 über einen Multiplexer 180, den Sendeempfänger 138 und eine Hälfte des BDS- Busses 18a. Eine Paritätserzeugungsschaltung 182 generiert 4 Paritätsbit für die 32 Bit korrigierter Lesedaten und liefert die Paritätsinformation über einen Ausgangstreiber 184 an eine Hälfte des CP-Datenparitäts-Busses (CPDP) 39a.
- Im Zusammenwirken mit dem Multiplexer 180 schaffen Register 186 und 188 die Fähigkeit, den 7-Bit-MCBRD-Bus 164a und die 7 Bit Syndrominformation, die vom Paritätsprüfer 172 generiert werden, auf den BDS-Bus 18a zu bringen. Diese Schaltungen werden zu Diagnosezwecken benutzt.
- Der Ausgang des Korrekturmultiplexers 176, der den Bus korrigierter Lesedaten bildet, wird auch an das erste E-A-Lese- Speicherdaten-Register (IO MEM DATA REG1) 190 und von dort an das zweite E-A-Lese-Speicherdaten-Register (IO MEMDATA REG0) 192 geleitet. In Verbindung mit den entsprechenden zwei Registern in der zweiten MDU bilden diese beiden Register Teil des vorstehend beschriebenen 16-Byte-Wort-FIFO, das während E-A-Leseoperationen benutzt wird. Der 32-Bit- Ausgang des IO MEMDATA REG0 192 wird in das erste E-A-Lese- Rückschreibdaten-Register (IORD RTN DATA REG 0) 194 eingegeben, wogegen der 32-Bit-Ausgang des IO MEM DATA REG1 190 in das zweite E-A-Lese-Rückschreibdaten-Register (IORD RTN DATA REG1) 196 eingegeben wird. Die Register 194 und 196 werden durch Aktivieren des vorstehend beschriebenen Signals CKI- ORTN geladen. In Verbindung mit den entsprechenden zwei Registern in der zweiten MDU bilden die Register 194 und 196 das weiter oben beschriebene 16-Byte-Wort-E-A-Datenrückschreib-Register zur Benutzung während E-A-Leseoperationen. Ein Multiplexer 198 gibt selektiv entweder den Ausgang des IORD RTN DATA REG0 194 oder den Ausgang des IORD RTN DATA REG1 196 an die Ausgangshälfte des E-A-Sendeempfängers 140 und an einen Multiplexer 200 aus. Der Multiplexer 200 nimmt in Abhängigkeit von einem Auslagerungs-Halbwort-Eingangssignal (SWPHWD) eine selektive Neuordnung der beiden 16-Bit- Halbwörter vor, die vom Multiplexer 198 vor ihrer Übertragung an die Ausgangshälfte des E-A-Sendeempfängers 140 ausgegeben werden. En weiterer Eingang in den Multiplexer 200 ist ein 16-Bit-Busausgang durch eine Unterstützungspaket- Bus-Vorrichtung (SPB, Abk. f. engl. support packet bus) 202. Dieser 16-Bit-Bus wird für Diagnosezwecke benutzt und wird dadurch angesteuert, daß dem Multiplexer 200 ein LESE-SPB- Signal (RDSPB) in wahrem Zustand zugeleitet wird. Wie mit den übrigen vorstehend beschriebenen Diagnosefunktionen und -Schaltungsanordnungen ist die Arbeitsweise der SPB-Vorrichtung 202 für das Verständnis dieser Erfindung nicht wesentlich und wird nicht weiter beschrieben.
- Ein als Leseregister-Taktfreigaben bezeichneter Logikblock 204 generiert in Abhängigkeit von einer Vielzahl Eingänge die erforderlichen Registertaktsignal für die bei der Bereitstellung von Lesedaten an den CP 12 über den CACHE 16 und die CDU 18 beteiligten Register.
- Während Speicherauffrischoperationen wird der Paritätsprüfer 172 benutzt, um die Parität eines aus dem Hauptspeicher 40 ausgelesenen Wortes zu prüfen. Wenn ein Einzelbitfehler festgestellt wird, wird der Fehler im Korrekturmultiplexer 176 korrigiert und das korrigierte Wort wird zum Hauptspeicher 40 ausgeschrieben. Diese Operation wird dadurch vereinfacht, daß der Ausgang des Markierungsbit-Zwischenspeichers 150 mit dem RFRSH*-Signal, das dem Löscheingang zugeleitet wird, zwangsläufig auf Null gesetzt wird, wodurch der A-Eingang des MERGEMUX 156 für alle vier Byte der korrigierten Lesedaten angewählt wird. Wenn ein unkorrigierbarer Fehler festgestellt wird, wird das schadhafte. nicht korrigierbare Wort nicht in den Hauptspeicher 40 zurückgeschrieben. Durch Benutzen dieser Technik und unter der Annahme, daß der Hauptspeicher 40 eine Speicherkapazität von 128 MByte hat, und daß ein Auffrischzyklus etwa alle 16 Mikrosekunden abläuft, kann der gesamte Hauptspeicher 40 in etwa 4,5 Minuten "gereinigt" werden.
- Entsprechend der vorstehenden Beschreibung wird deutlich, daß ein Merkmal dieser Erfindung die Schaffung einer Speicheroperations-Warteschlange ist, die von den 64-Bit-Speicherdatenregistern 130 bis 136 mit den ihnen zugeordneten modifizierten oder Markierungsbit und den 24-Bit-Speicheradreßregistern (74, 76, 84, 86 der Mau 36) gebildet ist. In Verbindung mit zugeordneter Steuerlogik werden diese Registergruppen benutzt, um Speicheroperationen in eine Warteschlange zu bringen und auszuführen. Eine Grundoperation der Speicherwarteschlange ist es, Speicheroperationen vom CP 12, dem E-A-Untersystem und der Auffrischzeitsteuerung 106 zu halten und sie entsprechend ihres relativen Prioritätsgrades auszuführen. Bei Empfang einer Speicheranforderung bestimmt die Zuteilungsschaltung der Speichersteuerung 31, deren Arbeitsweise dem Zustandsdiagramm gemäß Fig. 15 entspricht, welche der anstehenden Operationen die höchste Anforderungspriorität hat, und es wird die entsprechende Speicherung der Logik durchgeführt. Wenn vorhanden, öffnet und schließt dann die Speichersteuerung 31 den laufenden Speicherzwischenspeicher und löst die Speicheroperation durch Aktivieren des RAS-Signals aus. Fig. 7 bis 10 stellen den zeitlichen Ablauf der verschiedenen Operationen des Hauptspeichers dar, wogegen Fig. 14 die Ablaufsteuereinheit für die DRAM-Steuerung darstellt, die ebenfalls einen Teil der Speichersteuerung 31 bildet. Parallel, und wie in den vom Decodierer 154 ausgegebenen Signalen WRITE und WRTWS wiedergegeben, fragt die Speichersteuerung 31 die Markierungsbit ab und bestimmt den Typ der Speicheroperation (RMW, READ, WRITE).
- Gemäß diesem Merkmal der Erfindung werden in der Warteschlange keine zweckbestimmten Speicherbefehle gespeichert. Statt dessen sind alle Befehlsinformationen durch die Markierungsbit bestimmt. Das heißt, wenn keine Markierungsbit gesetzt sind, ist die Speicheroperation eine Leseoperation. Wenn irgendeines, aber nicht alle Markierungsbit in irgendeinem Wort gesetzt sind (MDU 38a oder MDU 38b), ist die Speicheroperation eine Lese-Ändere-Schreib-Operation, wobei die zu modifizierenden Byte durch die gesetzten Markierungsbit angegeben sind. Wenn alle Markierungsbit in einem oder beiden Wörtern gesetzt sind, ist die Speicheroperation eine Schreiboperation (nicht Lese-Ändere-Schreib-Operation). Wird eine Auffrischoperation angewählt, wird eine unmarkierte Bedingung für die Markierungsbit erzwungen, und die Speicheroperation wird als Leseoperation mit einer bedingten Rückschreibung zur Fehlerbereinigung gewählt.
- Es leuchtet ein, daß die vorstehend beschriebene Arbeitsweise der MAU 36 und der MDU 38a und 38b eine Funktionalität schafft, die in einiger Hinsicht der eines Write-back-Cache ähnlich ist, ohne daß die Schaltungskomplexität entsteht, die einem Write-back-Cache üblicherweise zugeordnet ist.
Claims (14)
1. Datenverarbeitungssystem (10) mit einem
Zentralprozessor (CP; engl. für central processor) (12), einem Speicher
(40), einem mit dem CP (12) verbundenen Adreßbus (34a) mit
Signalleitungen zum Übertragen von vom CP (12) generierten
Speicheradressen, und einem mit dem CP (12) verbundenen
Datenbus zum Übertragen von Daten an und von Speicher-Lese-
bzw. Speicher-Einschreib-Operationen des CP,
gekennzeichnet durch
- eine Adreßpuffereinrichtung (36), die im Adreßbus (34a)
mit dem CP (12) und dem Speicher (40) zum Empfangen und
Puffern von durch den CP (12) generierten Speicheradressen
verbunden ist,
wobei die Adreßpuffereinrichtung (36) umfaßt:
- eine Vielzahl Register (74, 76, 78),
je von einer Breite, die ausreicht, um einen ersten
Teil einer Speicheradresse zu speichern, die vom CP
(12) während einer CP-Speicher-Einschreib-Operation
empfangen wird, und
mit einem ersten Adreßregister (74) zum Speichern eines
ersten Teils einer vom CP (12) empfangenen ersten
Speicheradresse und einem zweiten Adreßregister (78) zum
Speichern des ersten Teils der vom CP (12) empfangenen
ersten Speicheradresse, wobei der gespeicherte erste
Teil der ersten Speicheradresse ein Inhalt des zweiten
Adreßregisters (78) ist, und
- eine Vergleichereinrichtung (80) mit
einem ersten Eingang, der an einen Ausgang des zweiten
Adreßregisters (78) angeschlossen ist,
einem mit dem Adreßbus (34a) verbundenen zweiten
Eingang zum Vergleichen des ersten Teils einer vom CP (12)
empfangenen zweiten Speicheradresse mit dem Inhalt des
zweiten Adreßregisters (78), und
einem Ausgang, der in einem ersten Zustand angibt,
daß a) der erste Teil der vom CP (12) empfangenen
zweiten Speicheradresse gleich dem Inhalt des zweiten
Adreßregisters (78) ist, und
daß b) ein Datenteil einer
Speicher-Einschreib-Operation, für welche die zweite Speicheradresse
generiert ist, mit einer Speicher-Einschreib-Operation
kombiniert werden kann, für welche die erste
Speicheradresse generiert wurde,
wobei die Adreßpuffereinrichtung (36) ferner umfaßt:
ein drittes Adreßregister (76) zum Speichern des ersten
Teils der vom CP (12) empfangenen zweiten
Speicheradresse, wobei das dritte Adreßregister (76) den ersten
Teil der zweiten Speicheradresse nur dann speichert,
wenn der Ausgang der Vergleichereinrichtung (80) einen
zweiten Zustand einnimmt, der angibt, daß der erste
Teil der vom CP (12) empfangenen zweiten
Speicheradresse mit dem Inhalt des zweiten Adreßregisters (78) nicht
gleich ist,
das Datenverarbeitungssystem (10) ferner gekennzeichnet ist
durch
eine Datenpuffereinrichtung (38a, 38b), die im Datenbus
(32) mit dem CP (12) und dem Speicher (40) zum Empfangen und
Puffern von CP-Schreibdaten, die den vom CP (12) generierten
Speicheradressen entsprechen, verbunden ist,
wobei die Datenpuffereinrichtung (38a, 38b) umfaßt:
ein erstes Datenregister (130) zum Speichern von CP-
Schreibdaten, die dem im ersten Adreßregister (74)
gespeicherten ersten Teil der Adresse entsprechen, und
ein zweites Datenregister (132) zum Speichern von CP-
Schreibdaten, die dem im dritten Adreßregister (76)
gespeicherten ersten Teil der Adresse entsprechen,
wobei das erste Datenregister (130) und das zweite
Datenregister (132) je von einer Breite von mehreren Byte sind und
die Datenpuffereinrichtung (38a, 38b) ferner umfaßt:
ein erstes Markierbitregister (144) zum Speichern von
Angaben, welche Byte des ersten Datenregisters (13)
eingeschrieben werden, und
ein zweites Markierbitregister (144) zum Speichern von
Angaben, welche Byte des zweiten Datenregisters (132)
eingeschrieben werden, und
- eine Einrichtung (156), die in Abhängigkeit von im
ersten und zweiten Markierbitregister (144) gespeicherten
Markierbitangaben Daten aus einem der ersten und zweiten
Datenregister (130, 132) mit Daten selektiv zu mischen vermag,
die aus einem Speicherplatz ausgelesen werden, der durch ein
entsprechendes der ersten und dritten Adreßregister (74, 76)
angegeben ist.
2. Datenverarbeitungssystem (10) nach Anspruch 1,
gekennzeichnet durch
- eine Einrichtung (98), die in Abhängigkeit von einem
zweiten Zustand des Ausgangs der Vergleichereinrichtung (80)
eine Speicheranforderung zu generieren vermag, und
- eine Einrichtung, die in Abhängigkeit von der
generierten Speicheranforderung die in einem der ersten und zweiten
Markierbitregister (144) gespeicherten Markierbitangaben zu
decodieren und in Abhängigkeit von den decodierten
Markierbitangaben den Speicher (40) so zu steuern vermag, daß von
einer Speicher-Lese-Operation, einer Speicher-Lese-Ändere-
Einschreib-Operation und einer Speicher-Einschreib-Operation
selektiv eine Operation ausgeführt wird.
3. Datenverarbeitungssystem (10) mit einer Ein-Ausgabe-
Steuerung (IOC, engl. für input-output controller) (30),
einem Speicher (40), einem mit der IOC (30) verbundenen
Adreß
bus (36a) mit Signalleitungen zum Übertragen von durch die
IOC (30) generierten Speicheradressen, und einem mit der IOC
(30) verbundenen Datenbus (32) zum Übertragen von Daten
während Speicher-Lese- bzw. Speicher-Einschreib-Operationen,
gekennzeichnet durch
- eine Adreßpuffereinrichtung (36), die im Adreßbus (36a)
mit der IOC (30) und dem Speicher (40) zum Puffern einer
Vielzahl von durch die IOC (30) generierten Speicheradressen
verbunden ist,
wobei die Adreßpuffereinrichtung (36) umfaßt:
eine Vielzahl Register (84, 86, 88),
je von einer Breite, die ausreicht, um einen ersten
Teil einer von der IOC (30) während einer IOC-Speicher-
Einschreib-Operation empfangenen Speicheradresse zu
speichern, mit
einem ersten Register (84) zum Speichern eines ersten
Teils einer von der IOC (30) empfangenen ersten
Speicheradresse und
einem zweiten Register (88) zum Speichern des ersten
Teils der von der IOC (30) empfangenen ersten
Speicheradresse, wobei der gespeicherte erste Teil der ersten
Speicheradresse ein Inhalt des zweiten Registers (88)
ist, und
eine Vergleichereinrichtung (96) mit
einem ersten Eingang, der an einen Ausgang des zweiten
Registers (88) angeschlossen ist,
einem mit dem Adreßbus (36) verbundenen zweiten
Eingang zum Vergleichen des ersten Teils einer von der
IOC (30) empfangenen zweiten Speicheradresse mit dem
Inhalt des zweiten Registers (88), und
einem Ausgang, der in einem ersten Zustand angibt,
daß a) der erste Teil der von der IOC (30)
empfangenen zweiten Speicheradresse gleich dem Inhalt des
zweiten Registers (88) ist, und
daß b) ein Datenteil einer Speicher-Einschreib-
Operation, für welche die zweite Speicheradresse
generiert ist, mit einer Speicher-Einschreib-Operation
kombiniert werden kann, für welche die erste
Speicheradresse generiert wurde,
wobei die Adreßpuffereinrichtung (36) ferner umfaßt:
ein drittes Register (86) zum Speichern des ersten
Teils der von der IOC (30) empfangenen zweiten
Speicheradresse, wobei das dritte Register (86) den ersten
Teil der zweiten Speicheradresse nur dann speichert,
wenn der Ausgang der Vergleichereinrichtung (96) einen
zweiten Zustand einnimmt, der angibt, daß der erste
Teil der von der IOC (30) empfangenen zweiten
Speicheradresse mit dem Inhalt des zweiten Registers (88) nicht
gleich ist,
das Datenverarbeitungssystem (10) ferner gekennzeichnet ist
durch
- eine Datenpuffereinrichtung (38a, 38b), die im Datenbus
(32) mit der IOC (30) und dem Speicher (40) zum Empfangen
und Puffern von IOC-Schreibdaten verbunden ist, die von der
IOC (30) generierten Speicheradressen entsprechen,
wobei die Datenpuffereinrichtung (38a, 38b) umfaßt:
ein erstes Datenregister (134) zum Speichern von IOC-
Schreibdaten, die dem im ersten Adreßregister (84)
gespeicherten ersten Teil der Adresse entsprechen, und
ein zweites Datenregister (136) zum Speichern von IOC-
Schreibdaten, die dem im dritten Adreßregister (86)
gespeicherten ersten Teil der Adresse entsprechen,
wobei das erste Datenregister (134) und das zweite
Datenregister (136) je von einer Breite von mehreren Byte sind,
und die Datenpuffereinrichtung (38a, 38b) ferner umfaßt:
ein erstes Markierbitregister (144) zum Speichern von
Angaben, welche Byte des ersten Datenregisters (134)
eingeschrieben werden, und
ein zweites Markierbitregister (144) zum Speichern von
Angaben, welche Byte des zweiten Datenregisters (136)
eingeschrieben werden, und
eine Einrichtung (156), die in Abhängigkeit von im
ersten und zweiten Markierbitregister (144) gespeicherten
Markierbitangaben Daten aus einem der ersten und zweiten
Datenregister (134, 136) mit Daten selektiv zu mischen vermag,
die aus einem Speicherplatz ausgelesen werden, der durch ein
entsprechendes der ersten und dritten Adreßregister (84, 86)
angegeben ist.
4. Datenverarbeitungssystem (10) nach Anspruch 3,
gekennzeichnet durch
- eine Einrichtung (100), die in Abhängigkeit von einem
zweiten Zustand des Ausgangs der Vergleichereinrichtung (96)
eine Speicheranforderung zu generieren vermag, und
- eine Einrichtung, die in Abhängigkeit von der
generierten Speicheranforderung die in einem der ersten und zweiten
Markierbitregister (144) gespeicherten Markierbitangaben zu
decodieren und in Abhängigkeit von den decodierten
Markierbitangaben den Speicher (40) so zu steuern vermag, daß von
einer Speicher-Lese-Operation, einer Speicher-Lese-Ändere-
Einschreib-Operation und einer Speicher-Einschreib-Operation
selektiv eine Operation ausgeführt wird.
5. Verfahren zum Einschreiben von Daten in einen
Hauptspeicher (40) von einem Zentralprocessor (CP) (12) aus,
gekennzeichnet durch die Arbeitsschritte:
- Generieren einer ersten Schreibanforderung (CPWR) mit
dem CP (12), wobei die erste Schreibanforderung (CPWR) eine
Adresse, die auf einem Adreßbus (34a) geliefert wird, und
Daten, die auf einem Datenbus (32) geliefert werden,
enthält,
- Speichern eines vorbestimmten Teils der Adresse vom
Adreßbus (34a) in einem ersten Register (74) und einem
zweiten Register (78), bei gleichzeitigem Decodieren der ersten
Schreibanforderung (CPWR), um zu bestimmen, welche Byte
eines Mehrbyte-Datenworts zu schreiben sind,
- in Übereinstimmung mit der decodierten
Schreibanforderung Puffern der zu schreibenden Byte in einem ersten
Datenregister (130) und einer Angabe, welche Byte zu schreiben
sind, in einem ersten Markierbitregister (144),
- Generieren einer ersten Speicheranforderung (CPMREQ)
zur Ausführung einer Speicher-Einschreib-Operation an einem
Speicherplatz, der zum Teil durch den im ersten Register
(74) gespeicherten Teil der Adresse angegeben ist, und
während des Wartens auf eine Beendigung (CMPL) der der
ersten Speicheranforderung (CPMREQ) zugeordneten
Schreiboperation und in Abhängigkeit von der Generierung einer zweiten
Schreibanforderung (CPWR) durch den CP (12)
- Speichern des vorbestimmten Teils der Adresse vom
Adreßbus (34a) in einem dritten Register (76) und im zweiten
Register (78) bei gleichzeitigem Decodieren der zweiten
Schreibanforderung (CPWR), um zu bestimmen, welche Byte des
Mehrbyte-Datenworts zu schreiben sind,
- in Übereinstimmung mit der decodierten zweiten
Schreibanforderung Puffern der zu schreibenden Byte in einem
zweiten Datenregister (132) und einer Angabe, welche Byte zu
schreiben sind, in einem zweiten Markierbitregister (144),
- Generieren einer zweiten Speicheranforderung (CPMREQ)
zur Ausführung einer Speicher-Einschreib-Operation an einem
Speicherplatz, der zum Teil durch den im dritten Register
(76) gespeicherten Teil der Adresse angegeben ist, und,
während des Wartens auf eine Beendigung (CMPL) der ersten
Speicheranforderung (CPMREQ) und in Abhängigkeit von der
Ge
nerierung einer dritten Schreibanforderung durch den CP
(12),
- Vergleichen des vorbestimmten Teils der der dritten
Schreibanforderung (CPWR) zugeordneten Adresse mit dem
vorbestimmten, im zweiten Register (78) gespeicherten Teil der
Adresse, und, bei Übereinstimmung (CPAMTCH),
- Speichern des vorbestimmten Teils der Adresse vom
Adreßbus (34a) im dritten Register (76) und zweiten Register
(78) bei gleichzeitigem Decodieren der dritten
Schreibanforderung (CPWR), um zu bestimmen, welche Byte des Mehrbyte-
Datenworts zu schreiben sind, und
- in Übereinstimmung mit der decodierten dritten
Schreibanforderung Puffern der zu schreibenden Byte im zweiten
Datenregister (132) und einer Angabe, welche Byte zu schreiben
sind, im zweiten Markierbitregister (144).
6. Verfahren nach Anspruch 5,
gekennzeichnet für die Bedingung, daß der Schritt des
Vergleichens des vorbestimmten Teils der der dritten
Schreibanforderung (CPWR) zugeordneten Adresse mit dem vorbestimmten,
im zweiten Register (78) gespeicherten Teil der Adresse
angibt, daß sie nicht gleich (CPAMTCH*) sind, durch den
Schritt des Anhaltens der dritten Schreibanforderung (CPWR)
des CP (12) bis zur Beendigung (CMPL) der ersten
Speicheranforderung (CPMREQ).
7. Verfahren nach Anspruch 5,
gekennzeichnet durch die Arbeitsschritte:
- Ausführen der der ersten Schreibanforderung (CPWR)
zugeordneten Speicher-Einschreib-Operation als
Schreiboperation oder als Lese-Ändere-Schreib-Operation an den im ersten
Datenregister (130) gespeicherten Daten in Übereinstimmung
mit den im ersten Markierbitregister (144) gespeicherten
Markierbit, und
- Ausführen der der zweiten Schreibanforderung
zugeordneten Speicher-Einschreib-Operation als Schreiboperation oder
als Lese-Ändere-Schreib-Operation an den im zweiten
Datenregister (132) gespeicherten Daten in Übereinstimmung mit den
im zweiten Markierbitregister (144) gespeicherten Markierbit
(142).
8. Verfahren zum Einschreiben von Daten in einen
Hauptspeicher (40) von einer Ein-Ausgabe-Steuerung (IOC) (30)
aus,
gekennzeichnet durch die Arbeitsschritte:
- Generieren einer ersten Schreibanforderung (IOWRITE)
mit der TOC (30), wobei die erste Schreibanforderung
(IOWRITE) eine Adresse, die auf einem Adreßbus (36a) geliefert
wird, und Daten, die auf einem Datenbus (32) geliefert
werden, enthält,
- Speichern eines vorbestimmten Teils der Adresse vom
Adreßbus (36a) in einem ersten Register (84) und einem
zweiten Register (88) bei gleichzeitigem Decodieren der ersten
Schreibanforderung (IOWRITE), um zu bestimmen, welche Byte
eines Mehrbyte-Datenworts zu schreiben sind,
- entsprechend der decodierten Schreibanforderung Puffern
der zu schreibenden Byte in einem ersten Datenregister (134)
und einer Angabe, welche Byte zu schreiben sind, in einem
ersten Markierbitregister (144),
in Abhängigkeit von der Generierung einer zweiten
Schreibanforderung (IOWRITE) durch die IOC (30)
- Vergleichen des vorbestimmten Teils der der zweiten
Schreibanforderung (IOWRITE) zugeordneten Adresse mit dem
vorbestimmten, im zweiten Register (88) gespeicherten Teil
der Adresse und, bei Übereinstimmung,
- Speichern des vorbestimmten Teils der Adresse vom
Adreßbus (36a) im ersten Register (84) und zweiten Register
(88) bei gleichzeitigem Decodieren der zweiten
Schreibanfor
derung (IOWRITE), um zu bestimmen, welche Byte des Mehrbyte-
Datenworts zu schreiben sind, und
- in Übereinstimmung mit der decodierten zweiten
Schreibanforderung Puffern der zu schreibenden Byte im ersten
Datenregister (134) und einer Angabe, welche Byte zu schreiben
sind, im ersten Markierbitregister (144),
wenn der Schritt des Vergleichens des vorbestimmten
Teils der der zweiten Schreibanforderung (IOWRITE)
zugeordneten Adresse mit dem vorbestimmten, im zweiten Register
(88) gespeicherten Teil der Adresse angibt, daß sie nicht
gleich sind (IOAMTCH*),
ist das Verfahren gekennzeichnet durch die weiteren
Arbeitsschritte:
- Generieren einer ersten Speicheranforderung (IOMREQ)
zur Ausführung einer Speicher-Einschreib-Operation an einem
Speicherplatz, der durch den im ersten Register (84)
gespeicherten Teil der Adresse angegeben ist,
- Speichern des vorbestimmten Teils der Adresse vom
Adreßbus (36a) in einem dritten Register (86) und zweiten
Register (88) bei gleichzeitigem Decodieren der zweiten
Schreibanforderung, um zu bestimmen, welche Byte des
Mehrbyte-Datenworts zu schreiben sind, und
- in Übereinstimmung mit der decodierten zweiten
Schreibanforderung Puffern der zu schreibenden Byte in einem
zweiten Datenregister (136) und einer Angabe, welche Byte zu
schreiben sind, in einem zweiten Markierbitregister (144),
- in Abhängigkeit von der Generierung einer dritten
Schreibanforderung (IOWRITE) durch die IOC (30) Vergleichen
des vorbestimmten Teils der der dritten Schreibanforderung
(IOWRITE) zugeordneten Adresse mit dem vorbestimmten, im
zweiten Register (88) gespeicherten Teil der Adresse, und,
bei Übereinstimmung (IOAMTCH),
- Speichern des vorbestimmten Teils der Adresse vom
Adreßbus (36a) im dritten Register (86) und zweiten Register
(88) bei gleichzeitigem Decodieren der dritten
Schreibanfor
derung (IOWRITE), um zu bestimmen, welche Byte des Mehrbyte-
Datenworts zu schreiben sind, und
- in Übereinstimmung mit der decodierten dritten
Schreibanforderung Puffern der zu schreibenden Byte im zweiten
Datenregister (136) und einer Angabe, welche Byte zu schreiben
sind, im zweiten Markierbitregister (144).
9. Verfahren nach Anspruch 8, gekennzeichnet für die
Bedingung, daß der Schritt des Vergleichens des vorbestimmten
Teils der der dritten Schreibanforderung (IOWRITE)
zugeordneten Adresse mit dem vorbestimmten, im zweiten Register
(88) gespeicherten Teil der Adresse angibt, daß sie nicht
gleich sind (IOAMTCH*), durch die Arbeitsschritte:
- Speichern des vorbestimmten Teils der Adresse vom
Adreßbus (36a) im ersten Register (84) und zweiten Register
(88) bei gleichzeitigem Decodieren der dritten
Schreibanforderung, um zu bestimmen, welche Byte des Mehrbyte-Datenworts
zu schreiben sind,
- in Übereinstimmung mit der decodierten
Schreibanforderung Puffern der zu schreibenden Byte im ersten
Datenregister (134) und einer Angabe, welche Byte zu schreiben sind,
im ersten Markierbitregister (144), und
- Generieren einer zweiten Speicheranforderung (IOMREQ)
zur Ausführung einer Speicher-Einschreib-Operation an einem
Speicherplatz, der durch den im dritten Register (86)
gespeicherten Teil der Adresse angegeben ist.
10. Verfahren nach Anspruch 9,
gekennzeichnet durch die Arbeitsschritte:
- Ausführen der der ersten Schreibanforderung (IOWRITE)
zugeordneten Speicher-Einschreib-Operation als
Schreiboperation oder als Lese-Ändere-Schreib-Operation an den im ersten
Datenregister (134) gespeicherten Daten in Übereinstimmung
mit den im ersten Markierbitregister (144) gespeicherten
Markierbit (142), und
- Ausführen der der zweiten Schreibanforderung (IOWRITE)
zugeordneten Speicher-Einschreib-Operation als
Schreiboperation oder als Lese-Ändere-Schreib-Operation an den im
zweiten Datenregister (136) gespeicherten Daten in
Übereinstimmung mit den im zweiten Markierbitregister (I44)
gespeicherten Markierbit.
11. Verfahren nach den Ansprüchen 5 oder 8,
bei dem der vorbestimmte Teil einer Speicheradresse als
Mindestauflösung ein Doppelwort von Speicheradressen aufweist,
wobei ein Doppelwort aus acht aufeinanderfolgend
gespeicherten Byte besteht.
12. Verfahren zum Lesen von Daten aus einem Hauptspeicher
(40) mit einer Ein-Ausgabe-Steuerung (IOC) (30),
gekennzeichnet durch die Arbeitsschritte:
a) Generieren einer ersten Leseanforderung (IOREAD) mit
der IOC (30), wobei die erste Leseanforderung (IOREAD) eine
auf einem Adreßbus (36a) gelieferte Adresse enthält,
b) Empfangen der Adresse vom Adreßbus (36a) und Ausrichten
der Adresse auf eine vorbestimmte Speichergrenze,
c) Speichern der ausgerichteten Adresse in einem ersten
Register (84) und einem zweiten Register (88),
d) Inkrementieren der ausgerichteten Adresse auf eine
nächste vorbestimmte Speichergrenze und Speichern der
inkrementierten, ausgerichteten Adresse in einem dritten Register
(86),
e) Generieren einer ersten Speicheranforderung (IOMREQ)
zur Ausführung einer Speicher-Lese-Operation an einem
Speicherplatz, der durch die im ersten Register (84)
gespeicherte ausgerichtete Adresse angegeben ist,
f) bei einer Beendigung der der ersten Speicheranforderung
(IOMREQ) zugeordneten Speicher-Lese-Operation Puffern der
ausgelesenen Daten in einem ersten Datenregister (136),
g) Generieren einer Speicheranforderung (IOMREQ) zur
Ausführung einer Speicher-Lese-Operation an einem
Speicherplatz, der durch die im dritten Register (86) gespeicherte
inkrementierte, ausgerichtete Adresse angegeben ist,
h) bei einer Beendigung der der zweiten
Speicheranforderung (IOMREQ) zugeordneten Speicher-Lese-Operation Puffern
der ausgelesenen Daten in einem zweiten Datenregister (136),
i) Generieren einer nächsten Leseanforderung (IOREAD) mit
der IOC (30), wobei die nächste Leseanforderung eine auf dem
Adreßbus (36a) gelieferte Adresse enthält,
j) Empfangen der Adresse vom Adreßbus (36a) und Ausrichten
der Adresse auf eine nächste vorbestimmte Speichergrenze,
k) Vergleichen der der zweiten Leseanforderung (IOREAD)
zugeordneten ausgerichteten Adresse mit der im zweiten
Register (88) gespeicherten ausgerichteten Adresse, und, bei
Übereinstimmung (IOAMTCH),
l) Rückschreiben von Daten vom ersten Datenregister (134)
an die IOC (30), sonst, wenn keine Übereinstimmung
(IOAMTCH*),
m) Übertragen der im zweiten Datenregister (136)
gespeicherten Daten an das erste Datenregister (134),
n) Rückschreiben von Daten vom ersten Datenregister (134)
an die IOC (30),
o) Inkrementieren der der nächsten Leseanforderung (10-
READ) zugeordneten ausgerichteten Adresse auf eine nächste
vorbestimmte Speichergrenze und Speichern der
inkrementierten, ausgerichteten Adresse im dritten Register (86) bei
gleichzeitigem Speichern der der nächsten Leseanforderung
(IOREAD) zugeordneten ausgerichteten Adresse im zweiten
Register (88),
p) Generieren einer nächsten Speicheranforderung (IOMREQ)
zur Ausführung einer Speicher-Lese-Operation an einem
Speicherplatz, der durch die im dritten Register (86)
gespeicherte inkrementierte, ausgerichtete Adresse angegeben ist,
q) bei einer Beendigung der der nächsten
Speicheranforderung (IOMREQ) zugeordneten Speicher-Lese-Operation Puffern
der ausgelesenen Daten im zweiten Datenregister (136) und
r) Wiederholen der Schritte i) bis q), bis die IOC (30)
das Lesen von Daten aus dem Hauptspeicher (40) beendet.
13. Verfahren nach Anspruch 12,
bei dem die vorbestimmte Speichergrenze eine 16-Byte-Wort-
Grenze ist, wobei ein 16-Byte-Wort aus 16 aufeinanderfolgend
gespeicherten Byte besteht.
14. Verfahren nach Anspruch 12,
für jeden Schritt der Generierung einer Speicheranforderung
(IOMREQ) gekennzeichnet durch die Arbeitsschritte:
- Decodieren einer Vielzahl Markierbit (142), von denen
einzelne einem Byte eines Datenpuffers (148) zugeordnet
sind, der zum Puffern von Daten während einer IOC-Speicher-
Einschreib-Operation benutzt wird, wobei einzelne der
Markierbit (142) aktiviert werden, um anzugeben, daß das
zugehörige Byte in den Hauptspeicher (40) einzuschreiben ist,
und
- in Abhängigkeit von einer Bedingung, daß von der
Vielzahl der Markierbit (142) keines aktiviert ist, Ausführen
einer Speicher-Lese-Operation.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/134,806 US5377338A (en) | 1993-10-12 | 1993-10-12 | Apparatus and methods for reducing numbers of read-modify-write cycles to a memory, and for improving DMA efficiency |
PCT/US1994/003099 WO1995010809A1 (en) | 1993-10-12 | 1994-03-24 | Apparatus and method for interfacing a data processor and an io controller to a main memory |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69425580D1 DE69425580D1 (de) | 2000-09-21 |
DE69425580T2 true DE69425580T2 (de) | 2001-04-19 |
Family
ID=22465103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69425580T Expired - Lifetime DE69425580T2 (de) | 1993-10-12 | 1994-03-24 | Gerät und verfahren zur schnittstellenbildung zwischen einem datenprozessor einerseits und einer e-a-steuerung und einem haupspeicher andererseits |
Country Status (6)
Country | Link |
---|---|
US (2) | US5377338A (de) |
EP (1) | EP0723684B1 (de) |
AU (1) | AU676760B2 (de) |
CA (1) | CA2172976C (de) |
DE (1) | DE69425580T2 (de) |
WO (1) | WO1995010809A1 (de) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5377338A (en) * | 1993-10-12 | 1994-12-27 | Wang Laboratories, Inc. | Apparatus and methods for reducing numbers of read-modify-write cycles to a memory, and for improving DMA efficiency |
US6161208A (en) * | 1994-05-06 | 2000-12-12 | International Business Machines Corporation | Storage subsystem including an error correcting cache and means for performing memory to memory transfers |
US5802587A (en) * | 1995-04-25 | 1998-09-01 | Oki Data Corporation | Memory controller adapted for rapid block access operations |
US5838631A (en) | 1996-04-19 | 1998-11-17 | Integrated Device Technology, Inc. | Fully synchronous pipelined ram |
US5781733A (en) * | 1996-06-20 | 1998-07-14 | Novell, Inc. | Apparatus and method for redundant write removal |
US5987578A (en) * | 1996-07-01 | 1999-11-16 | Sun Microsystems, Inc. | Pipelining to improve the interface of memory devices |
US5892978A (en) * | 1996-07-24 | 1999-04-06 | Vlsi Technology, Inc. | Combined consective byte update buffer |
US5889983A (en) * | 1997-01-21 | 1999-03-30 | Intel Corporation | Compare and exchange operation in a processing system |
US5917772A (en) * | 1997-09-16 | 1999-06-29 | Micron Technology, Inc. | Data input circuit for eliminating idle cycles in a memory device |
US6115320A (en) | 1998-02-23 | 2000-09-05 | Integrated Device Technology, Inc. | Separate byte control on fully synchronous pipelined SRAM |
US6279065B1 (en) * | 1998-06-03 | 2001-08-21 | Compaq Computer Corporation | Computer system with improved memory access |
US6360307B1 (en) | 1998-06-18 | 2002-03-19 | Cypress Semiconductor Corporation | Circuit architecture and method of writing data to a memory |
US7069406B2 (en) | 1999-07-02 | 2006-06-27 | Integrated Device Technology, Inc. | Double data rate synchronous SRAM with 100% bus utilization |
JP4439685B2 (ja) * | 2000-06-12 | 2010-03-24 | パナソニック株式会社 | 記憶データ修正回路 |
EP1575229A3 (de) * | 2002-07-30 | 2007-12-12 | Yamaha Corporation | Datenübertragungsvorrichtung mit dynamischer Zuweisung von Übertragungssequenzen |
US6973551B1 (en) * | 2002-12-30 | 2005-12-06 | Emc Corporation | Data storage system having atomic memory operation |
US7099997B2 (en) * | 2003-02-27 | 2006-08-29 | International Business Machines Corporation | Read-modify-write avoidance using a boundary word storage mechanism |
US7962698B1 (en) | 2005-10-03 | 2011-06-14 | Cypress Semiconductor Corporation | Deterministic collision detection |
US8245109B2 (en) * | 2006-03-31 | 2012-08-14 | Hewlett-Packard Development Company, L.P. | Error checking and correction (ECC) system and method |
US20090105993A1 (en) * | 2007-10-22 | 2009-04-23 | Advantest Corporation | Histogram generation with multiple increment read-modify-write cycles |
US10572260B2 (en) * | 2017-12-29 | 2020-02-25 | Intel Corporation | Spatial and temporal merging of remote atomic operations |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4412286A (en) * | 1980-09-25 | 1983-10-25 | Dowd Brendan O | Tightly coupled multiple instruction multiple data computer system |
US4750154A (en) * | 1984-07-10 | 1988-06-07 | Prime Computer, Inc. | Memory alignment system and method |
US4805098A (en) * | 1986-05-05 | 1989-02-14 | Mips Computer Systems, Inc. | Write buffer |
JP2504512B2 (ja) * | 1988-03-09 | 1996-06-05 | 富士通株式会社 | Dmaコントロ―ラ |
EP0425550B1 (de) * | 1988-06-30 | 1995-01-04 | Wang Laboratories, Inc. | Steuereinheit für den speicher |
US5046000A (en) * | 1989-01-27 | 1991-09-03 | International Business Machines Corporation | Single-FIFO high speed combining switch |
US5043874A (en) * | 1989-02-03 | 1991-08-27 | Digital Equipment Corporation | Memory configuration for use with means for interfacing a system control unit for a multi-processor system with the system main memory |
US5161162A (en) * | 1990-04-12 | 1992-11-03 | Sun Microsystems, Inc. | Method and apparatus for system bus testability through loopback |
US5237567A (en) * | 1990-10-31 | 1993-08-17 | Control Data Systems, Inc. | Processor communication bus |
US5377338A (en) * | 1993-10-12 | 1994-12-27 | Wang Laboratories, Inc. | Apparatus and methods for reducing numbers of read-modify-write cycles to a memory, and for improving DMA efficiency |
-
1993
- 1993-10-12 US US08/134,806 patent/US5377338A/en not_active Expired - Lifetime
-
1994
- 1994-03-24 WO PCT/US1994/003099 patent/WO1995010809A1/en active IP Right Grant
- 1994-03-24 DE DE69425580T patent/DE69425580T2/de not_active Expired - Lifetime
- 1994-03-24 AU AU73928/94A patent/AU676760B2/en not_active Expired
- 1994-03-24 EP EP94923860A patent/EP0723684B1/de not_active Expired - Lifetime
- 1994-03-24 CA CA002172976A patent/CA2172976C/en not_active Expired - Lifetime
- 1994-09-09 US US08/303,853 patent/US5668967A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0723684B1 (de) | 2000-08-16 |
AU676760B2 (en) | 1997-03-20 |
AU7392894A (en) | 1995-05-04 |
EP0723684A1 (de) | 1996-07-31 |
US5668967A (en) | 1997-09-16 |
CA2172976C (en) | 2002-02-19 |
DE69425580D1 (de) | 2000-09-21 |
CA2172976A1 (en) | 1995-04-20 |
US5377338A (en) | 1994-12-27 |
WO1995010809A1 (en) | 1995-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69425580T2 (de) | Gerät und verfahren zur schnittstellenbildung zwischen einem datenprozessor einerseits und einer e-a-steuerung und einem haupspeicher andererseits | |
DE69324926T2 (de) | Doppelte pufferungspeicherung zwischen dem speicherbus und dem expansionsbus eines rechnersystems | |
DE69323790T2 (de) | Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem | |
DE68920435T2 (de) | Steuereinheit für den speicher. | |
DE3854368T2 (de) | Cachespeicher mit einer Elastizität in der Verarbeitung verschiedener Adressenfehler. | |
DE3750107T2 (de) | Cachespeicherkohärenzsteuerung mit einem Speicher, der ein laufendes Lesen anzeigt. | |
DE69128565T2 (de) | Mikrorechner ausgestattet mit einer DMA-Steuerung | |
DE68926036T2 (de) | Speicherkonfiguration zur Verwendung für Schnittstellenbildung zwischen einer Systemsteuereinheit für ein Multiprozessorsystem und dem Hauptspeicher | |
DE3689042T2 (de) | Gerät zur Pufferung von Schreibanforderungen. | |
DE3685876T2 (de) | Meister-sklave-mikroprozessorsystem mit einem virtuellen speicher. | |
DE69203842T2 (de) | Speichersteuerungsvorrichtung mit Snoop-Mechanismus. | |
DE3587439T2 (de) | Gemeinsam benutzter Mehrprozessor-Pipeline-Cachespeicher. | |
DE3687947T2 (de) | Schnittstelle und Verfahren für Buszugriff in einem Rechner. | |
DE69331448T2 (de) | Dataprozessor mit einem Cachespeicher | |
DE69522457T2 (de) | Verfahren und vorrichtung zur automatischen entfernung von ecc-speicherfehlern mittels hardware | |
DE4218003C2 (de) | Cache-Steuereinrichtung für ein sekundäres Cache-Speichersystem | |
DE69902392T2 (de) | Verwenden von ecc/paritätsbits zum speichern von vor- dekodierungs-informationen | |
DE69929936T2 (de) | Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem | |
DE3889366T2 (de) | Interface für ein Rechnersystem mit reduziertem Befehlssatz. | |
DE69906156T2 (de) | Mikroprozessorvorrichtung mit programmierbaren wartezuständen | |
DE69228582T2 (de) | Vorrichtung zur Vermeidung von Prozessorblockierungen in einem Multiprozessorsystem | |
DE69325774T2 (de) | Programmierbare Externspeichersteuerungseinrichtung | |
DE69126756T2 (de) | Prüfbare RAM-Architektur in einem Mikroprozessor mit eingebettetem Cache-Speicher | |
DE69633474T2 (de) | Adressierungsverfahren zur nicht-sequentiellen Ausführung von Ladebefehlen hinsichtlich Speicherungsbefehlen | |
DE68928040T2 (de) | Pufferspeichersubsystem für Peripheriesteuerungen und Verfahren |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8332 | No legal effect for de | ||
8370 | Indication related to discontinuation of the patent is to be deleted | ||
8364 | No opposition during term of opposition |