DE3650584T2 - Anordnung von Cachespeicherverwaltungseinheiten - Google Patents
Anordnung von CachespeicherverwaltungseinheitenInfo
- Publication number
- DE3650584T2 DE3650584T2 DE3650584T DE3650584T DE3650584T2 DE 3650584 T2 DE3650584 T2 DE 3650584T2 DE 3650584 T DE3650584 T DE 3650584T DE 3650584 T DE3650584 T DE 3650584T DE 3650584 T2 DE3650584 T2 DE 3650584T2
- Authority
- DE
- Germany
- Prior art keywords
- cache
- data
- memory
- bus
- address
- 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 claims description 439
- 238000007726 management method Methods 0.000 claims description 73
- 238000013519 translation Methods 0.000 claims description 61
- 230000014616 translation Effects 0.000 claims description 61
- 230000004044 response Effects 0.000 claims description 29
- 238000000034 method Methods 0.000 claims description 19
- 238000013500 data storage Methods 0.000 claims 5
- 239000003550 marker Substances 0.000 claims 1
- 238000012546 transfer Methods 0.000 description 60
- 238000003860 storage Methods 0.000 description 28
- 230000008878 coupling Effects 0.000 description 24
- 238000010168 coupling process Methods 0.000 description 24
- 238000005859 coupling reaction Methods 0.000 description 24
- 239000013598 vector Substances 0.000 description 23
- 230000004224 protection Effects 0.000 description 21
- 230000006870 function Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 15
- 239000000872 buffer Substances 0.000 description 14
- 230000008569 process Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 230000006854 communication Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 8
- 230000009977 dual effect Effects 0.000 description 8
- 238000012937 correction Methods 0.000 description 7
- 238000013507 mapping Methods 0.000 description 7
- 238000012544 monitoring process Methods 0.000 description 7
- 230000002457 bidirectional effect Effects 0.000 description 6
- 238000005070 sampling Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000011109 contamination Methods 0.000 description 5
- 230000001934 delay Effects 0.000 description 5
- JMSVCTWVEWCHDZ-UHFFFAOYSA-N syringic acid Chemical compound COC1=CC(C(O)=O)=CC(OC)=C1O JMSVCTWVEWCHDZ-UHFFFAOYSA-N 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000000630 rising effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 241000275031 Nica Species 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000007175 bidirectional communication Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- NFRBUOMQJKUACC-UHFFFAOYSA-N triethyl(pentyl)azanium Chemical compound CCCCC[N+](CC)(CC)CC NFRBUOMQJKUACC-UHFFFAOYSA-N 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 229910052799 carbon Inorganic materials 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000003750 conditioning effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000013100 final test Methods 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 238000005468 ion implantation Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
- Diese Erfindung bezieht sich auf Computersystemarchitekturen und genauer gesagt auf eine Cache-Speicherverwaltungspeichersystemarchitektur mit einem Hochgeschwindigkeitssystembus für das Koppeln von Systemelementen, die an ihn angeschlossen sind für hochgeschwinde Kommunikation zwischen ihnen und mit einer extrem schnellen Mikroprozessorschnittstelle, einer Direktadreßumsetzeinheit und einer Adreßumsetzeinheit.
- Frühere Cache-Speichersteuereinheiten und Speicherverwaltungssysteme wurden längs einer Anzahl von Aufteilungsleitungen entwickelt. Systeme nach dem Stand der Technik haben eine Cache-Steuereinheit, einen Cache-Speicher, eine Speichermanagementeinheit und Umsetzlogik verwendet, jeweils als separat aufgeteilte Einheiten der Systemarchitektur. In diesen Systemen gab eine CPU eine Adresse aus mit Anforderung entsprechender Daten für die betreffende Adresse oder Erzeugen gleicher Daten für die Adresse entsprechend der ausgegebenen Adresse. Eine Cache-Steuereinheit in Verbindung mit einem separaten Cache-Speicher und möglicherweise in Verbindung mit separaten Speichertabellen löste auf, gleichgültig, ob die Ausgangsadresse Stellen entsprach, die innerhalb des Cache-Speichers gespeichert waren. Wenn das zutraf, wurde ein Treffer erklärt, und die Cache-Steuereinheit koordinierte das Lesen und das Schreiben von Daten in den Cache-Speicher über die Cache-Steuereinheit. Wenn die Daten nicht vorhanden waren, übertrug die Cache-Steuereinheit ein Verfehlt-Signal zu der CPU zurück. In diesem Falle konnten die Systeme nach dem Stand der Technik entweder die CPU anweisen, einen Hauptspeicherzugriff zu koordinieren, um die angeforderten Adreßstellendaten zu erhalten, oder die CPU konnte eine Anforderung an eine Speicherverwaltungseinheit ausgeben, um die angeforderten Lokalisationsdaten bereitzustellen. In dem Fall der Verwendung einer Speicherverwaltungseinheit boten Systeme nach dem Stand der Technik begrenzte Registerspeicher, entweder in der CPU, in der Speicherverwaltungseinheit oder in dem Hauptspeicher, um den Umsetzprozeß von virtuellen auf physikalische Adreßumsetzung zu unterstützen.
- Diese Systeme nach dem Stand der Technik litten an vielen Nachteilen. Erstens war wegen der physischen Trennung, herrührend von der Aufteilung, die Gesamtdatendurchsatzrate herabgesetzt wegen Busbelastung, Busverzögerungen und den vielen Startpunkten für den Zugriff über die Cache-Steuereinheit auf den Cache-Speicher oder wegen eines Verfehlens über die Cache-Steuereinheit, Cache-Speicher zurück zur CPU zu der Speicherverwaltungseinheit und zu dem Hauptspeicher. Zweitens belasteten diese Systeme die CPU im Falle einer Cache-Verfehlung. Zusätzlich werden zwecks Kompensation für die Cache-Steuereinheitschaltungen in den Bus Verzögerungen zwischen der Cache-Steuereinheit und dem Cache-Speicher mehr teure hochgeschwinde Cache-Speicher eine Cache-Zugriffszykluszeit zu erhalten erforderlich machen, die nicht wegen der Cache-Steuereinheit- und Busverzögerungszeiten verzögert ist.
- Eine Cache- und Speicherverwaltungssystemarchitektur und zugeordnetes Protokoll werden offenbart. Das Cache- und Speicherverwaltungssystem besteht aus einem Zweiwegesatz assoziativer Speicher-Gache-Untersysteme, einem Zweiwegesatz assoziativer Umsetzlogikspeicher-Untersysteme, fest verdrahteter Seitenumsetzung, wählbarer Zugriffsmoduslogik und einer selektiv entsperrbaren Befehlsvorholmodusbetriebslogik. Das Cache-und Speicherverwaltungssystem umfaßt eine Systemschnittstelle und eine Prozessor/Cachebus-Schnittstelle. Die Systemschnittstelle schafft Mittel für das Koppeln mit einem Systembus, an welchen ein Hauptspeicher angekoppelt ist. Die Prozessor/Cachebus-Schnittstelle bietet Mittel für das Ankoppeln an eine externe CPU. Das Cache-Speicherverwaltungssystem kann entweder als ein Befehls-Cache oder ein Daten-Cache dienen. Das Befehls-Cache-System ermöglicht Befehlsvorholung und bietet Programmzählerfähigkeit auf dem Chip. Das Daten-Cache bietet ein Adreßregister für den Empfang von Adressen von der CPU und ermöglicht den Transfer einer definierten Anzahl von Datenworten, beginnend an der Adresse, wie sie in dem Adreßregister gespeichert ist.
- Ein anderes beschriebenes Merkmal ist das Quad-Wortbegrenzungsregister, Quad-Wortzeilenregister und Quad-Wortbegrenzungsdetektoruntersystem. Dies beschleunigt den Zugriff auf Daten innerhalb der Quad-Wortbegrenzungen und sorgt für effizientes Vorholen von sequentiell aufsteigenden Stellen gespeicherter Befehle oder Daten von dem Cache- Speicheruntersystem.
- Das Cache-Speicherverwaltungssystem bietet eine integrale Architektur, die die Cache-Speicherfunktion bereitstellt, wie auch das Bereitstellen von Zweiwegesatzassoziativumsetzung von Adressen aus einer virtuellen in eine physikalische Adresse und Seitenzugriffschutzmöglichkeiten in Verbindung mit dem gespeicherten Zweiwegesatzassoziativumsetzspeicherlogiksystem.
- Ein zusätzlich offenbartes Merkmal ist ein fest verdrahtetes Seitenumsetzsystem. Dies sorgt für garantierten Zugriff für ein kritisches System und vom Benutzer definierte Adressen. Beispiele umfassen eine Interruptvektorseite, reservierte Seiten für das Betriebssystem und-/oder Benutzeranwendungen, mehrfache Eingangs/Ausgangsseiten und Ablageseiten.
- Das Cache-Speicherverwaltungssystem reagiert jeweils auf Eingangs/Ausgangbefehle von der CPU, empfangen über den Prozessor-Cache- Bus. Diese Befehle umfassen: Invalidieren von Oberwachungsseiten in dem TLB-Umsetzlogikspeicheruntersystem; Invalidieren von Benutzerseiten in dem Umsetzlogikspeicheruntersystem; Rücksetzen von verschmutzten und bezogenen Bits in dem Umsetzlogikspeicheruntersystem; Zugriff auf das gesamte Umsetzlogikspeicheruntersystem; Invalidieren des gesamten Cache- Speicheruntersystems usw. In einer Multi-Cache- oder Multiprozessorsystemarchitektur kann auf das Cache von dem Systembus zugegriffen werden, um eine Leitung in dem Cache-Speicheruntersystem auf einem Eingangs/Ausgangsschreib- oder auf einem verteilten Schreibsystem zu invalidieren. Das Cache schickt verschmutzte Daten zu dem Systembus bei einem Eingangs/Ausgangslesevorgang zurück.
- Das Cache-Speicherverwaltungssystem kann entweder als ein Befehls- oder als ein Daten-Cache-Speicherverwaltungssystem konfiguriert sein. Wie offenbart umfaßt die Systemarchitektur einen Prozessor mit getrennten Befehls- und Daten-Cache-Schnittstellen. Ein extrem schneller Befehlsbus koppelt zu dem Befehls-Cache-Speicherverwaltungssystem von der Prozessorbefehlsschnittstelle. Ein extrem schneller Datenbus koppelt das Daten-Cache-Speicherverwaltungssystem mit der Prozessordatenschnittstelle. Jedes Cache-Speicherverwaltungssystem koppelt mit dem Systembus über die Systemschnittstelle und mit dem Hauptspeicher von dieser.
- Wo mehrere Elemente mit dem Systembus gekoppelt sind, sorgt ein Busschiedssystemelement für die Systembusverteilung und Verwaltung der Kollisionsvermeidung. Eine Busanforderungs/Buszuteilprozedur und stützende Architektur wird für die Verwendung in Verbindung mit dem Cache-Speicherverwaltungssystem offenbart.
- Ein Cache-Speicherverwaltungsystem und ein Verfahren für wählbare Zugriffsmoden wird beansprucht. Demgemäß können bestimmte Adressen durch den Statuswortausgang des CPU-Systems definiert werden, das mit dem Cache-Speicherverwaltungssystem gekoppelt ist, um verschiedene Moden anzugeben. Diese Moden umfassen Tabellieren/Enttabellieren, Überwachungszugriff, Benutzerraumzugriff usw. Zusätzliche Merkmale bezüglich der wählbaren Zugriffsmoden werden durch die Seitentabelleneinträge definiert, die in das Umsetzlogikspeicheruntersystem des Cache-Speicherverwaltungssystems aus der Hauptspeicherseitentabelle geladen werden zu dem Zeitpunkt, zu dem das Cache-Speicheruntersystem mit Daten von der Seitentabelle in dem Hauptspeicher geladen wird. Diese aus der definierten Seitentabelle wählbaren Zugriffsmoden umfassen cachebar/nicht cachebar, Durchschreib/Rückkopieren usw.
- Diese und andere Merkmale und Vorteile der vorliegenden Erfindung werden aus der folgenden detailierten Beschreibung der Zeichnungen deutlich, in denen:
- Fig. 1 ein Blockdiagramm einer mikroprozessorbasierten Doppelcache-Doppelbus-Systemarchitektur gemäß der vorliegenden Erfindung illustriert;
- Fig. 2 ein Blockdiagramm der Befehlsschnittstelle der Fig. 1 ist;
- Fig. 3 ein mehr ins einzelne gehendes Blockdiagramm des Befehlsdekoders 120 der Befehlsschnittstelle 100 der Fig. 2 ist;
- Fig. 4 ein elektrisches Diagramm zur Illustration des Befehls-Cache/Prozessorbusses, des Daten-Cache-Prozessorbusses und des Systembus-Doppelbus-Doppelcachesystems der Fig. 1;
- Fig. 5 den Systembus zur Cache-Schnittstelle der Fig. 4 in größeren Einzelheiten illustriert;
- Fig. 6 ein elektrisches Diagramm zur Illustration der Treiber/Empfänger zwischen dem Befehls-Cache-MMU und dem Systembus ist;
- Fig. 7A-C den virtuellen Speicher, den realen Speicher und virtuelle Adreßkonzepte illustrieren, wie bei der vorliegenden Erfindung eingesetzt;
- Fig. 8 ein elektrisches Blockdiagramm einer Cache-Speicherverwaltungseinheit illustriert;
- Fig. 9 ein detailliertes Blockdiagramm der Cache-Speicherverwaltungseinheit der Fig. 8 ist;
- Fig. 10A-B die Speicherstruktur innerhalb des Cache-Speicheruntersystems 320 illustriert;
- Fig. 11A-B das TLB-Speicheruntersystem 350 der Speicherstruktur in größeren Einzelheiten illustrieren;
- Fig. 12 die Cache-Speicher-Quad-Wortbegrenzungsorganisation illustriert;
- Fig. 13 die fest verdrahtete Virtuell-Real-Umsetzung illustriert, bereitgestellt durch das TLB-Untersystem;
- Fig. 14 das Cache-Speicheruntersystem und die zugehörige Cache-MMU-Architektur mit Support der Quad-Wort-Begrenzung unter Verwendung von Zeilenregistern und Zeilenbegrenzungsregistern illustriert;
- Fig. 15 die Ladezeitlage für die Cache-MMU-Systeme 120 und 130 der Fig. 1 illustriert;
- Fig. 16 die Speicheroperation für die Cache-MMU-Systeme 120 und 130 der Fig. 1 für das Speichern von der CPU zu dem Cache-MMU in einem Rückkopiermodus illustriert, wie auch für die Speicherung von der CPU zu dem Cache-MMU und dem Hauptspeicher für den Durchschreibbetriebsmodus;
- Fig. 17A-B den Datenfluß der Operationen zwischen der CPU und dem Cache-MMU und dem Hauptspeicher illustrieren;
- Fig. 18 den Datenfluß und die Statusflußwechselwirkung von CPU, Cache-Speicheruntersystem und TLB-Speicheruntersystem illustriert;
- Fig. 19 den Datenfluß und den Betrieb des DAT- und TLB-Untersystems bei der Ausführung von Adreßumsetzung und Datenspeicherung und Ladeoperationen illustriert;
- Fig. 20 ein Blockdiagramm des Cache-MMU-Systems zeigt einschließlich Busschnittstellenstrukturen, die intern bezüglich der Cache-MMU sind;
- Fig. 21 ein detailliertes elektrisches Blockdiagramm der Fig. 20 ist; und
- Fig. 22 ein detailliertes elektrisches Blockdiagramm der Steuerlogik-Mikromaschine 650 der Fig. 21 ist.
- In Fig. 1 ist eine Systemausführungsform der vorliegenden Erfindung wiedergegeben. Eine zentrale Verarbeitungseinheit (CPU) 110 ist über getrennte und unabhängige extrem schnelle Cache/Prozessorbusse, einen Befehlsbus 121 und einen Datenbus 131 angekoppelt, welche mit einer Befehls-Cache-Speicherverwaltungseinheit 120 (MMU) und einer Daten-Cache-Speicherverwaltungseinheit 130 (MMU) gekoppelt sind. Zusätzlich ist ein Systemstatusbus 115 von der CPU 110 mit jedem von Befehls-Cache-Speicherverwaltungseinheit 120 und Daten-Cache-Verwaltungseinheit 130 gekoppelt. Jede von Befehls-Cache-Verwaltungspeichereinheit 120 und Daten-Cache-Speicherverwaltungseinheit 130 hat eine separate Schnittstelle für die Kopplung mit einem Systembus 141. Ein Hauptspeicher 140 enthält den primären Kernspeicher für das System und kann aus einem dynamischen RAM, einem statischen RAM oder einem anderen Medium für hochgeschwinde Lese/Schreibspeichervorgänge ausgebildet sein. Die Caches 120 und 130 sind jeweils mit dem Hauptspeicher 140 über den Systembus 141 gekoppelt.
- Zusätzlich können andere Systemelemte mit dem Systembus 141 gekoppelt sein, wie eine Eingangs/Ausgangsverarbeitungseinheit, IOP, 150, welche den Systembus 141 mit dem Eingangs/Ausgangsbus 151 für den entsprechenden IOP 150 koppelt. Der Eingangs/Ausgangsbus 151 kann entweder eine Standardbusschnittstelle sein, wie Ethernet, Unibus, VMEbus, Multibus oder der Eingangs/Ausgangsbus 151 kann mit dem Sekundärspeicher oder anderen Peripheriegeräten gekoppelt sein, wie Festplatten, Floppy disks, Drucker usw. Mehrere Eingangs/Ausgangsprozessoren können mit dem Systembus 141 gekoppelt sein. Der Eingangs/Ausgangsprozessor 150 kann mit dem Hauptspeicher 140 über den Systembus 141 kommunizieren.
- Die CPU 110 ist auch über Interruptleitungen 110 mit einer Interruptsteuereinheit 170 gekoppelt. Jede der Einheiten, die Interruptpriorität für die CPU beansprucht, hat getrennte Interruptleitungen, die mit der Interruptsteuereinheit 170 gekoppelt sind. Wie in Fig. 1 dargestellt, hat der Hauptspeicher 140 einen Interruptausgang I1, 145, und der Eingangs/Ausgangsprozessor 150 hat einen Interruptausgang 155, der mit 12 markiert ist. Diese Interrupts I1, 145 und I2, 155 sind mit der Interruptsteuereinheit 170 gekoppelt, welche die Priorität der Interruptanforderungen an die CPU 110 priorisiert und unterscheidet. Die CPU 110 kann aus mehreren parallelen CPUs bestehen oder kann eine einzige CPU sein. Im Falle von Mehrfach-CPUs wird die Priorisierung und Auflösung von Interruptanforderungen von der Interruptsteuereinheit 170 in Verbindung mit den Signalsteuerleitungen 111 von der CPU 110 zu der Interruptsteureinheit 170 gehandhabt.
- Ein Systemtaktgeber 160 liefert einen Haupttakt-MCLK an die CPU 110, an die Befehls-Cache-Speicherverwaltung 120 und die Daten-Cache-Verwaltungsspeichereinheit 130 für das Synchronisieren interner Operationen darin und Operationen zwischen ihnen. Zusätzlich liefert ein Bustakt-BLCK-Ausgang von dem Systemtaktgeber 160 Bussynchronisationssignale für Transfers über den Systembus 141 und ist mit allen Systemelementen gekoppelt, die mit dem Systembus 141 gekoppelt sind. Dies umfaßt die Befehls-Cache-Speicherverwaltungseinheit 120, die Daten-Cache-Speicherverwaltungseinheit 130, den Hauptspeicher 140, den Eingangs/Ausgangsprozessor 150 und irgendwelche anderen Systemelemente, die mit dem Systembus 141 gekoppelt sind. Wo mehrere Komponenten Zugriff auf den Systembus 141 gleichzeitig verlangen, ist eine Busschiedseinheit 180 mit den Komponenten gekoppelt, die mit dem Systembus 141 gekoppelt sind. Die Busschiedseinheit hat separate Kopplungen mit jedem der potentiellen Busbeherrscher, welche mit dem Systembus 141 koppeln. Die Busschiedseinheit 180 verwendet ein Handschlagschema und priorisiert den Zugriff auf den Systembus 141. Die Busschiedseinheit 180 steuert und vermeidet Kollisionen auf dem Systembus 141 und entscheidet generell über die Benutzung des Systembus 141.
- Der Prozessor 110 enthält Cache-Schnittstellen, welche gegenseitige exklusive und unabhängig betreibbare Doppel-Cache-Schnittstellensysteme einschließlich einer Befehlsschnittstelle, gekoppelt mit Bus 121, und Datenschnittstelle, gekoppelt mit Bus 131, bereitstellen. Die Befehlsschnittstelle steuert Kommunikationen mit dem externen Befehls- Cache-MMU 120 und sorgt für die Kopplung von Befehlen von dem Befehls- Cache-MMU 120 zum Prozessor 110. Die Datenschnittstelle bewirkt die Steuerung der Kommunikationen mit dem externen Daten-Cache-MMU 130 und steuert die bidirektionale Kommunikation von Daten zwischen Prozessor 110 und Daten-Cache-MMU 130. Die Exekutionseinheit des Prozessors ist mit der Befehlsschnittstelle und der Datenschnittstelle des Prozessors gekoppelt. Die Exekutionseinheit sorgt für die selektive Verarbeitung von Daten, empfangen vom Daten-Cache-MMU in Reaktion auf die Dekodierung und Exekution eines entsprechenden oder mehrerer Befehle, empfangen vom Befehls-Cache-MMU 120. Die Befehlsschnittstelle koppelt mit dem Befehls- Cache-MMU 120 über einen hochgeschwinden Befehls-Cache-MMU-Bus 121. Die Datenschnittstelle koppelt mit dem Daten-Cache-MMU 130 über einen sehr schnellen Datenbus 131. Die Befehlsschnittstelle und die Datenschnittstelle sorgen für die Möglichkeit sehr hoher Transfergeschwindigkeiten von Befehlen von Befehls-Cache-MMU 120 zum Prozessor 110 und für gleichzeitigen unabhängigen Transfer von Daten zwischen dem Daten-Cache-MMU 130 und dem Prozessor 110.
- Die Daten-Cache-MMU 130 und Befehls-Cache-MMU 120 haben jeweils eine entsprechende zweite Busschnittstelle für die Kopplung mit einem Hauptsystembus 141 für die Kopplung von diesem und einem Hauptspeicher 145, bei dem es sich um einen sehr großen, relativ langsamen Speicher handelt. Der Systembus 141 ist von moderater Geschwindigkeit, jedoch langsam relativ zum Datenbus 131 oder Befehlsbus 121. Der Systembus 141 liefert auch Mittel für das Koppeln anderer Schaltkreise und Peripheriegeräte in die Mikroprozessorsystemarchitektur.
- Die Befehls- und Datenschnittstelle des Prozessors 110 bewirkt die notwendige Steuerung, Zeitlage und Pufferungslogik für die vollständige Steuerung der Schnittstelle und des Datentransferprozesses zwischen dem Prozessor 110 und den entsprechenden Caches 120 und 130. In ähnlicher Weise haben die Befehls-Cache-MMU 120 und Daten-Cache-MMU 130 notwendige Steuerung- und Pufferschaltkreise, um der Schnittstelle des Prozessors 110 über die entsprechende Befehlsschnittstelle bzw. Datenschnittstelle eine Verbindung zu ermöglichen. Die Befehls-Cache-MMU 120 und Daten-Cache-MMU 130 haben außerdem jede notwendige Steuer- und Pufferschaltungen für die Verbindungsherstellung mit und die Steuerverwaltung des Hauptspeichers 140 über den Systembus 141. Funktionell bilden die Befehls-Cache-MMU 120 und Befehlsschnittstelle ein separates und unabhängiges Untersystem von der Daten-Cache-MMU 130 und Datenschnittstelle. Die Befehls-Cache-MMU 120 greift auf den Hauptspeicher 140 direkt und unabhängig von der Daten-Cache-MMU-130-Operation und umgekehrt zu.
- In Fig. 2 ist der Prozessor 110 aus Fig. 1 in weiteren Einzelheiten gezeigt. Wie in Fig. 2 dargestellt besteht der Prozessor 110 weiter aus einem Befehlsregister 102, einem Befehlsdekoder 103 und einer Exekutionseinheit 105. Das Befehlsregister 102 bildet Mittel für das Speichern und Ausgeben von Befehlen, empfangen von der Befehls-Cache-MMU 120 über den Befehlsbus 121 und zu der Befehlsschnittstelle des Prozessors 110. Der Ausgang von dem Befehlsregister 102 ist mit dem Befehlsdekoder 103 gekoppelt. Der Befehlsdekoder 103 bildet Mittel für das Ausgeben von Operationswählsignalen in Reaktion auf das Dekodieren des Befehlsausgangs, empfangen von dem Befehlsregister 102. Die Ausgangsoperationsauswählsignale von dem Befehlsdekoder 103 werden mit der Exekutionseinheit 105 gekoppelt. Die Exekutionseinheit 105 bildet Mittel für die Verarbeitung ausgewählter Daten, empfangen von der Daten-Cache-MMU 130 über die Datenschnittstelle des Prozessors 110 und den Datenbus 131 in Reaktion auf die Operationswählssignale, empfangen von dem Befehlsdekoder 103.
- In einer bevorzugten Ausführungsform sorgt der Prozessor 110 für Pipeline-Betrieb. Wie in Fig. 2 dargestellt, gibt es fünf Stufen der Pipeline-Betriebe, das Befehlsregister 102, Stufe C (104) im Befehlsdekoder 103 und Stufen D (106), E (10), F (108) in der Exekutionseinheit 105. Demgemäß können in Reaktion auf mehrere Befehle gleichzeitig mehrerer Operationen ausgeführt werden.
- In der in Fig. 2 dargestellten Ausführungsform umfaßt die Exekutionseinheit 105 ferner eine Schnittstelle 109, die Mittel für das Koppeln des Ausgangs, resultierend aus der Verarbeitung der ausgewählten Daten, auf die Datenschnittstelle des Prozessors 110 für die Ausgabe der resultierenden Daten von dieser zu der Daten-Cache-MMU 130. Die Schnittstelle 109 bietet bidirektionale Kopplung von Daten zwischen der Exekutionseinheit 105 und der Datenschnittstelle des Prozessors 101 und von dieser über den Datenbus 131 zur Daten-Cache-MMU 130.
- In Fig. 3 ist der Befehlsdekoder 103 der Fig. 2 in größeren Einzelheiten gezeigt, wobei eine Ausführungsform einer Realisierung des Befehlsdekoders 103 wiedergegeben ist. Wie in Fig. 3 gezeigt, besteht der Befehlsdekoder 103 aus einer sequentiellen State-Machine 113, welche Befehle dekodiert, die von dem Befehlsregister 102 empfangen werden, und liefert Operationscodesignale in Reaktion auf den Befehlsausgang des Befehlsregisters 102. Die Operationscodesignale von der sequentiellen State-Machine 113 sind mit einer Zeitlage- und Steuerschaltung 114 gekoppelt, die Mittel für das Ausgeben von Operationswählsignalen für Steuerung der Sequenz der Befehlsexekution liefert für das Koppeln an die Exekutionseinheit 105 in Reaktion auf den Operationscodesignalausgang von der sequentiellen State-Machine 113.
- In einer bevorzugten Ausführungsform ist jeder Mikroprozessor eine integrierte Ein-Chip-Schaltung. Mehrfach-Chip-Ausführungsformen können jedoch ebenfalls je nach den konstruktiven Beschränkungen verwendet werden.
- Die Befehlsschnittstelle des Prozessors 110 besteht weiterhin aus einem mehrstufigen Befehlspuffer, der Mittel für das Seriatim-Speichern einer Mehrzahl von Befehlen bereitstellt, ein Befehl pro Stufe, der ferner Mittel für selektives Ausgeben der gespeicherten Befehle an das Exekutionsmittel 105 bietet. Das Cache-Fortschaltsignal wird durch die Befehlsschnittstelle angesteuert, wenn sie freien Raum hat. Die Cache-Fortschaltung steuert die Befehls-Cache-MMU-Zugriffe. Demgemäß bietet die Befehlsschnittstelle einen mehrstufigen Befehlspuffer für das Koppeln und Speichern einer Mehrzahl von Befehlsworten als Ausgang in einem seriellen Strom von der Befehls-Cache-MMU 120 über den Befehlsbus 121. Dieser mehrstufige Befehlspuffer bewirkt eine zunehmende Befehlsdurchsatzrate und kann verwendet werden für Pipeline-Betrieb des Prozessors 110. Ein externer Systemtakt 160 liefert Taktsignale für die Synchronisierung von Operationen innerhalb des und mit dem Prozessor 110.
- Die Befehlsschnittstelle des Prozessors 110 besteht ferner aus einem Programmzähler der Befehls-Cache-MMU 120, der auf das Auftreten eines Kontextschalters oder Verzweigung im Betrieb des Mikroprozessorsystems reagiert. Ein Kontextschalter kann eine Falle, einen Interrupt oder irgendeine Initialisierung von Programmen umfassen, welche die Initialisierung des Programmzählers des Befehls-Cache 120 benötigt zur Angabe eines neuen Startpunktes für einen Strom von Befehlen. Die Befehlsschnittstelle liefert einen Cache-Fortschaltausgang, der für selektives Inkrementieren des Programmzählers des Befehls-Cache-MMU sorgt, ausgenommen während eines Kontextschalters oder einer Verzweigung. Beim Auftreten eines Kontextschalters oder einer Verzweigung wird der Programmzähler der Befehls-Cache-MMU 120 mit einem neuen Wert von dem Adreßgenerator der Befehlsschnittstelle des Prozessors 110 geladen.
- Ein Systemtakt 160 liefert Taktsignale an die Befehlsschnittstelle des Mikroprozessors 110. Bei Initialisierung des Systems oder während eines Kontextschalters oder einer Verzweigung bewirkt der Befehlsschnittstellenadreßgenerator des Prozessors 110 das Laden des Programmzählers des Befehls-Cache 120. Danach, wenn entsperrt durch das Cache-Fortschaltsignal, bewirkt die Befehls-Cache-MMU 120, daß eine Mehrzahl von Befehlen (beispielsweise ein Quad-Wort) ausgegeben wird für die Kopplung der Befehlsschnittstelle des Prozessors 110. Befehle werden sequentiell ausgegeben nach Reaktion auf den Ausgang des Programmzählers der Befehls-Cache-MMU 120, unabhängig und exklusiv bezüglich irgendwelcher weiteren Adreßausgänge von der Befehlsschnittstelle des Prozessors 110 zu der Befehls-Cache-MMU 120.
- Wie dargestellt, besteht die Datenschnittstelle des Prozessors 110 weiter aus einem Adreßgenerator und Schnittstelle, welcher eine Datenadresse für die Kopplung zu dem Adreßregister 505 der externen Daten- Cache-MMU 503 ausgibt. Der MCLK des Systemtaktgebers 160 ist mit der Daten-Cache-MMU 130 für die Synchronisierung des Transfers von Daten zwischen der Daten-Cache-MMU 130 und der Datenschnittstelle des Prozessors 110 gekoppelt. In einer bevorzugten Ausführungsform sind Mittel für das Koppeln der definierten Anzahl von Datenworten zwischen der Daten-Cache- MMU 503 und der Datentschnittstelle 302 des Mikroprozessors 12 für jeden Adreßausgang von der Datenschnittstelle 302 vorgesehen, unabhängig und exklusiv bezüglich irgendwelcher Zwischenadreßausgänge von der Adreßschnittstelle 324.
- Die Befehlsschnittstelle des Prozessors 110 und die Befehls- Cache-MMU 120 bewirken einen kontinuierlichen Ausgang eines Befehlsstroms von nicht vordefinierter Länge von der Befehls-Cache-MMU 120 zu der Befehlsschnittstelle des Prozessors 110, im Ansprechen auf nur einen einzigen Anfangsadreßausgang von dem Adreßgenerator der Befehlsschnittstelle und einem aktiven Cache-Fortschaltsignalausgang, wobei fortgefahren wird, bis eine Verzweigung oder ein Kontextschalter auftaucht.
- Der Betrieb der Datenschnittstelle des Prozessors 110 und der Daten-Cache-MMU 130 bewirkt den Transfer von einem oder mehr definierten Zahlen von Worten von Daten zwischen ihnen für jeden Adreßausgang vom Prozessor 110 an die Daten-Cache-MMU. Das erste einer solchen definierten Mehrzahl von Worten wird ausgegeben in Reaktion auf die Adresse vom Prozessor 110. Die verbleibenden Worte werden transferiert, sobald das System fertig ist. Bei Beendigung des Transfers dieser definierten Anzahl von Worten muß eine neue Adresse in das Adreßregister der Daten-Cache-MMU 130 von dem Prozessor 110 geladen werden. Jeder Datentransfer zwischen der Daten-Cache-MMU 130 und der Datenschnittstelle des Prozessors 110 erfordert das Laden einer neuen Adresse von der Datenschnittstelle des Prozessors 110 in das Adreßregister der Daten-Cache-MMU 130. Obwohl dieser Transfer aus einem oder mehreren Worten bestehen kann, ist die Anzahl von Worten festgelegt und definiert bei Start des Transfers, und jeder Transfer erfordert das Laden einer separaten neuen Adresse.
- Der Haupt- oder Primärspeicher 140 ist mit dem Systembus 141 gekoppelt, mit dem auch die Daten-Cache-MMU 130 und Befehls-Cache MMU 120 gekoppelt sind. Der Hauptspeicher 140 speichert selektiv und gibt digital Information von einem adressierbaren Lese/Schreibspeicher aus.
- Die Befehls-Cache-MMU 120, gekoppelt mit dem Hauptspeicher 140 über den Systembus 141, verwaltet den selektiven Zugriff auf den Hauptspeicher 140 und sorgt für den Transfer von Daten von dem Lese/Schreibspeicher des Hauptspeichers 140 zu der Befehls-Cache-MMU 120 für die Speicherung in dem hochgeschwinden Speicher der Befehls-Cache-MMU 120. Zusätzlich bietet die Befehls-Cache-MMU 120 Mittel für das selektive Bereitstellen der gespeicherten Daten von dem adressierbaren hochgeschwinden Lese/Schreibspeicher der Befehls-Cache-MMU für Ausgabe an den Prozessor 110.
- Die Daten-Cache-MMU 130 ist mit dem Hauptspeicher 140 über den Systembus 141 gekoppelt und verwaltet den selektiven Zugriff auf den Hauptspeicher 140 für Speicherung und Entnahme von Daten zwischen dem Hauptspeicher 140 und der Daten-Cache-MMU 130. Die Daten-Cache-MMU 130 besteht ferner aus Mitteln für selektives Speichern und Ausgeben von Daten von dem Prozessor 110 bzw. an den Prozessor 110 über den hochgeschwinden Datenbus 131 oder von und zu dem Hauptspeicher 14 über den Systembus 141. Die Daten-Cache-MMU 130 sorgt für selektive Speicherung und Ausgabe der Daten von ihrem hochgeschwinden adressierbaren Lese/Schreibspeicher.
- Der Prozessor 110 ist unabhängig mit der Befehls-Cache-MMU 120 über Befehlsbus 121 und mit der Daten-Cache-MMU 130 über Datenbus 131 gekoppelt. Der Prozessor 110 verarbeitet Daten, empfangen von der Daten- Cache-MMU 130 in Reaktion auf das Dekodieren und Exekutieren entsprechender Befehle, empfangen von der Befehls-Cache-MMU 120. Die Verarbeitung kann arithmetisch, logisch, relational-basierend usw. sein.
- Wie oben diskutiert, wird der Programmzähler der Befehls-Cache-MMU 120 mit einer Adresse nur bei Verzweigungen und Kontextschaltern geladen. Sonst arbeitet die Befehls-Cache-MMU in einem kontinuierlichen Ausgangsstrommodus. Sobald der Programmzähler der Befehls-Cache-MMU 120 mit einer Startadresse geladen ist und das Cache-Fortschaltsignal aktiviert wird, werden demgemäß die entsprechend adressierten Datenstellen von der Befehls-Cache-MMU 120 zu dem Prozessor 110 ausgegeben, und nachfolgende Befehle werden zu dem Prozessor 110 in einem seriellen Strom, jeweils ein Befehl zu einem Zeitpunkt, transferiert. Jedes nachfolgende Befehlswort oder Gruppe von Befehlsworten transferiert ohne Notwendigkeit irgendwelcher zusätzlichen Adreßtransfers zwischen dem Prozessor 110 und dem Programmzähler der Befehls-Cache-MMU 120, ausgenommen, wenn ein Kontextschalter oder eine Verzweigung erforderlich werden.
- Der MCLK ist der Takt für die gesamte Haupttaktlogik (z.B. 33 MHz). BCLK ist der Systembustakt, vorzugsweise bei entweder 1/2 oder ein 1/4 von MCLK.
- Für die Synchronisation des Systembusses 141 wird BCLZ an alle Einheiten auf dem Systembus übertragen, d.h. CPU, IOPs, Busschiedseinheit, Caches, Interruptsteuereinheiten Mp usw. Alle Signale müssen auf dem Bus erzeugt werden und mit der Anstiegsflanke von BCLK abgetastet werden. Die Ausbreitungsverzögerung der Signale muß innerhalb eines Zyklus von BCLK liegen, um den synchronen Modus des Busbetriebes zu garantieren. Die Phasenbeziehungen zwischen BCLK und MCLK sind strikt vorgegeben. In einer Ausführungsform ist BCLK ein Takt mit 50% Tastverhältnis des Zweifachen oder Vierfachen der Zykluszeit von MCLK, was abhängt von der physischen Größe und Belastung des Systembus 141.
- Wie dargestellt, erfolgt der Transfer von Befehlen von der Befehls-Cache-MMU 120 zum Prozessor 110. Der Transfer von Daten ist bidirektional zwischen der Daten-Cache-MMU 130 und Prozessor 110. Die Schnittstelle zwischen der Befehls-Cache-MMU 120 und Hauptspeicher 140 ist von Befehlen von dem Hauptspeicher 140 zu der Befehls-Cache-MMU 120 in Reaktion auf die Speicherverwaltungeinheit der Befehls-Cache MMU 120. Dies erfolgt immer dann, wenn ein Befehl benötigt wird, der in dem Cache-Speicher der Befehls-Cache-MMU 120 nicht gespeichert ist. Der Transfer von Daten zwischen der Daten-Cache-MMU 130 und dem Hauptspeicher 140 ist bidirektional Die Speicherverwaltungseinheiten der Befehls-Cache- MMU 120 und Daten-Cache-MMU 130 führen alle Speicherverwaltungs-, Schutz- und virtuell-physische Adreßumsetzung aus.
- Wie dargestellt, liefert der Prozessor 110 virtuelle Adreßausgänge, die eine zugeordnete tabellierte Beziehung zu einer entsprechenden physischen Adresse im Hauptspeicher haben. Die Speicherverwaltungseinheiten des Befehls- bzw. Daten-Cache-MMU 120 bzw. 130 reagieren auf die entsprechenden virtuellen Adreßausgänge von der Befehis- bzw. Datenschnittstelle des Prozessors 110 derart, daß die Speicherverwaltungseinheiten selektiv entsprechende Ausgänge der zugeordneten tabellierten Digitalinformation für die entsprechende virtuell adressierte Stelle liefern. Wenn die angeforderte Information für die Adreßspeicherstelle nicht gespeichert ist (d.h. ein Cache verfehlen) in den entsprechenden Cache-MMU-Speichern 120 bzw. 130, liefert die entsprechende Speicherverwaltungseinheit der Cache-MMUS eine umgesetzte physische Adresse für Ausgabe an den Hauptspeicher 140. Die entsprechende Information wird danach von dem Hauptspeicher 140 auf die entsprechende Befehlsspeicher-MMU 120 oder zu oder von der Daten-Cache-MMU 130 gekoppelt und je nach Bedarf zum Prozessor 110.
- Wie hier diskutiert, umfaßt das System der Fig. 1 eine zentrale Verarbeitungseinheit 110 (CPU), einen Einzelchip-Mikroprozessor in der bevorzugten Ausführungsform, welcher separate Befehls-Cache-MMU- und Daten-Cache-MMU-Busschnittstellen darin enthalten aufweist. Die CPU 110 koppelt über einen getrennten Befehlsbus 121 zum Befehls-Cache-MMU 120. Der Befehlsbus 120 ist ein hochgeschwinder Bus, der, wie oben diskutiert, Befehlsströme ohne Prozessoreingriff liefert, ausgenommen während Verzweigungen und Kontextschaltern. Der Befehlsbus 121 sorgt für sehr hohe Befehlskommunikationen und bildet Mittel für die Kommunikation von Befehlen mit sehr hoher Geschwindigkeit von der Befehls-Cache-MMU 120 zum Prozessor 110. Der Prozessor 110 ist auch über einen separaten und unabhängigen Hochgeschwindigkeitsdatenbus 131 mit einer Daten-Cache- MMU gekoppelt. Der Datenbus 131 sorgt für hochgeschwinde bidirektionale Kommunikation von Daten zwischen dem Prozessor 110 und der Daten-Cache- MMU 130.
- Die beiden separaten Cache-Schnittstellenbus, der Befehlsbus 121 und der Datenbus 131, führen jeder mehrere Signale. Wie in Fig. 4 und 5 für eine Ausführungsform dargestellt, sind die Signale auf dem Daten-Cache-Bus 131, dem Befehls-Cache-Bus 121 wie folgt:
- Diese Leitungen sind bidirektional und bilden einen adreß-/datenmultiplexierten Bus. Die CPU legt eine Adresse auf diese Leitungen für Speicherreferenzen fir einen Taktzyklus. Bei Speicheroperationen folgen die Daten der Adresse. Beim Laden oder TAS-Operationen werden diese Busleitungen leerlaufend (schwimmend) nach dem Adreßzyklus, so daß diese Leitungen bereit sind, Daten von der Daten-Cache-MMU zu empfangen. Das Daten-Cache legt dann die adressierten Daten auf die Leitungen für eine Lade- oder TAS-Operaton.
- MPUO : SSW30, Überwachungsmodus
- MPK : SSW29, Schutzschlüssel
- MPUOU : SSW28, Auswählen eines Benutzerdatenraums im Überwachungsmodus
- MPKU : SSW27, Schutzschlüssel eines Benutzerdatenraums im Überwachungsmodus
- MPM : SSW26, Virtuell tabelliert.
- Diese Signale repräsentieren das Systemstatuswort (SSW< 30:26> ) in der CPU und werden sowohl dem D-Cache als auch dem B-Cache zugeführt. FC< 3:0> ) Funktionscode / Fallencode
- Die CPU legt "den Typ des Datentransfers" auf FC< 3:0> -Leitungen während eines Taktzyklus im Adressierzyklus. Das D-Cache bzw. B-Cache sendet "den Typ der Falle" bei unnormalen Operationen zusammen mit TSTB zurück.
- Das D-Cache legt den TRAP-Code auf FC, um auf die CPU zu reagieren.
- ASF wird von der CPU aktiviert, womit angezeigt wird, daß die "Adresse" und "Typ des Datentransfers" auf ADF< 31:10> - bzw. FC< 3:0> -Leitungen gültig sind. ASF ist um einen halben Taktzyklus früher, als die Adresse auf dem ADF-Bus ist.
- Bei Ladeoperationen wird das RSP-Signal von dem D-Cache aktiviert, was anzeigt, daß Daten auf dem ADF-Bus bereit sind. RSP hat dieselbe Zeitlage wie die Daten auf dem ADM-Bus. Das D-Cache sendet Daten zur CPU bei einer Ladeoperation und akzeptiert Daten von der CPU bei einer Speicheroperation
- Bei Speicheroperationen wird SRP aktiviert, wenn die Daten-Cache-MMU bereit wird, die nächste Operation zu akzeptieren. Bei Doppelladen wird RSP mit jedem Datenpakettransfer zurückgesendet. Bei Doppelspeichern wird nur ein RSP nach Akzeptanz des zweiten Datenpaketes rückgesandt.
- TSTB zusammen mit dem Fallen-Code FC< 2:0> wird von dem D-Cache ausgesandt, was indiziert, daß eine Operation unnormal beendet worden ist und daß der TRAP-Code auf FC< 2:0> -Leitungen verfügbar ist. Bei einem bereits korrigierten Fehler (MSBE) folgt RSP dem TSTB nach zwei Taktintervallen, während bei irgendwelchen Fehlern oder einem nicht korrigierbaren Fehler (MDBE) nur TSTB ausgesandt wird.
- Niedrigpegel auf dieser Leitung zeigt an, daß der Daten-Cache- MMU-Chip mit dem Data-Cache-Bus verbunden ist.
- Diese Leitungen sind bidirektional und bilden einen adreß-/befehlsmultiplexierten Bus. Die CPU sendet eine virtuelle oder reelle Adresse auf diesen Leitungen aus, wenn sie den Programmfluß ändert, wie beim Verzweigen, RÜCKKEHR, Überwachungsaufruf usw. oder wenn sie den SSW< 30:26> -Wert ändert. Die Befehls-Cache-MMU-MMU führt Befehle auf die Leitungen zurück.
- Das B-Cache legt den TRAP-Code auf die FC-Leitungen, um auf die CPU zu reagieren.
- IASF wird von der CPU aktiviert, was indiziert, daß die Adresse auf IADF < 31:0> -Leitungen gültig ist. IASF ist einen halben Taktzyklus früher aktiv, als die Adresse auf dem IADF-Bus ist.
- ISEND wird von der CPU aktiviert, was indiziert, daß die CPU bereit ist, den nächsten Befehl zu akzeptieren (beispielsweise daß der Befehlspuffer in der CPU nicht voll ist).
- Bei der Abfallflanke von RSP muß ISEND aus sein, wenn der Befehlspuffer voll ist; andernfalls wird der nächste Befehl von der Befehls-Cache-MMU ausgesandt. Wenn die neue Adresse erzeugt wird, beispielsweise bei Verzweigung, muß ISEND mindestens einen Taktzyklus früher aus sein, als IASF aktiv wird.
- IRSP wird von dem B-Cache aktiviert, was indiziert, daß ein Befehl auf den IADF< 31:0> -Leitungen bereit ist. IRSP hat dieselbe Zeitlage wie die Daten auf dem Bus.
- Dies wird durch das B-Cache aktiviert, was indiziert, daß das Cache seine Operation unnormal abgeschlossen hat und daß ein TRAP-Code auf IFC< 3:0> -Leitungen verfügbar ist. Bei einem bereits korrigierten Fehler (MSBE) folgt RSP dem TSTB nach zwei Taktintervallen, während bei Versagen oder einem nicht korriergbaren Fehler (MDBE) nur TSTB ausgesandt wird und aktiv wird.
- Ein Hoch auf dieser Leitung zeigt an, daß das Cache mit dem Befehls-Cache-Bus INST verbunden ist.
- Jede von den Befehls-Cache MMU 120 und Daten-Cache MMU 130 hat eine zweite Busschnittstelle für die Ankopplung an den Systembus 141. Der Systembus 141 kommuniziert Information zwischen allen an ihn angekoppelten Elementen. Das Bustaktsignal BCLK des Systemtakts 160 bewirkt die Synchronisation von Transfers zwischen den an den Systembus 141 angekoppelten Elementen.
- Wie in Fig. 6 gezeigt, ist der Systembusausgang von der Befehlscache-MMU 120 und der Daten-Cache-MMU 130 mit einem gemeinsamen Zwischenbus 133 gekoppelt, der an die TTL-Treiber/Pufferschaltkreise 135 für Pufferung und Ansteuerung der Schnittstelle zu und von dem Systembus 141 koppelt. Dies ist besonders nützlich, wo jede der Befehls-Cache-MMU 120 und Daten-Cache-MMU 130 monolithische integrierte Einzelchip-Schaltkreise sind und wo es wünschenswert ist, die Bustreiber/Empfänger von den integrierten monolithischen Schaltkreisen zu isolieren, um die integrierten monolithischen Schaltkreise vor Busschnittstellengefährdungen zu schützen. Die folgenden Bussignale koordinieren die Bustreiber/Empfängeraktivität:
- Dieses Signal wird verwendet zum Steuern von außerhalb des Chips liegenden Treiber/Empfängern auf den AD-Leitungen. Das Haupt-Cache aktiviert dieses Signal beim Erzeugen der Adresse und beim Aussenden von Daten im Schreibmodus. Das Unter-Cache aktiviert dieses Signal beim Aussenden der Daten im Lese-Modus.
- NICA wird nur von den Daten- und Befehls-Caches und der CPU verwendet. Dieses Signal wird von dem D-Cache zu dem gepaarten B-Cache gesandt, um Zugriff auf den Eingangs/Ausgangsraum in dem Befehlscache zu nehmen. Beim Eintreffen eines speichertabellierten Eingangs/Ausgangszugriffs von dem Systembus akzeptiert das Befehls-Cache, ihn als eine Eingangs/Ausgangsanweisung nur dann, wenn der NICA aktiv ist. Demgemäß akzeptieren die Caches Eingangs/Ausgangsanweisungen nur von der zugeordneten CPU.
- Synchroner Betrieb des Systembus 141 wird in der oben beschriebenen Systemanordnung ermöglicht, solange keine Signaländerung in dem Zeitpunkt, wo abgetastet wird, auftritt. Zwei Zeitlagen sind fundamental, um diese Operation zu realisieren, eine für das Erzeugen von Signalen auf dem Bus und die andere für die Abtastung zwecks Erkennung von Signalen. Diese beiden Zeitlagen müssen von dem Bustakt-BCLK erzeugt werden, der eine bestimmte Phasenbeziehung mit dem Haupttakt MCLK hat, um die sichere Beziehung mit internen Logikoperationen aufrechtzuerhalten. Diese Zeitlagen müssen eine kleine Verschiebung von einer Einheit zur anderen auf dem Bus haben, um die folgende Gleichung zu erfüllen:
- Tg-s > - Tpro + Tsk
- worin Tg-s die Zeitperiode von der Signalerzeugungszeitlage zu der Signalabtastzeitlage ist, Tpro die maximale Ausbreitungsverzögerungszeit der Signale ist und Tsk die Verschiebung des Bustakts ist.
- Wenn die physikalischen Erfordernisse des Systembusses die obige Gleichung nicht erfüllen, werden die Signale asynchron bezüglich der Abtastzeitlage eintreffen. In diesem Falle ist ein Synchronisator in der Busschnittstelle erforderlich, um die externen asynchronen Signale zu synchronieren. Obwohl der asynchrone Betrieb nicht die physische Größe des Bus oder irgendwelche Arten von Zeitverzögerungen beschränkt, gibt es einen ernsthaften Nachteil insofern, daß es extrem schwierig ist, die Möglichkeit eines "Sychronisationsversagens" zu eliminieren. Ein anderer Nachteil des asynchronen Schemas besteht in einer Geschwindigkeitsbeschränkung infolge des Handschlagprotokolls, das bei asynchronen Schemata zwingend ist. Dies ist besonders ineffizient bei einem Multidatentransfermodus. Obwohl ein Handschlagschema ein brauchbares Verfahren für die Interkommunikation zwischen einer Quelle und einem oder mehr Zielen ist, und obwohl dies ein sicherer Weg für die Datentransferoperation ist, beschränkt das Zeitlageprotokoll die Geschwindigkeit und ist manchmal bei sehr schnellen Busoperationen unbefriedigend. Zusätzlich ist ein asynchroner Bus auch empfindlich gegenüber Rauschen.
- In der bevorzugten Ausführungsform hat der Systembus 141 einen Takt BCLK. Der MCLK wird für interne Logikoperation der CPU 110 und Caches 120 und 130 verwendet, und BCLZ wird verwendet, um die synchronen Zeitlagen des Busbetriebs wie oben beschrieben zu erzeugen.
- Der Systembus kann die Kombinationen von Handschlag- und Nichthandschlagschemakompatibilität schaffen.
- In einer bevorzugten Ausführungsform ist der Systembus 141 ein hochgeschwinder synchroner Bus mit mehreren Mutterfähigkeiten. Jede potentielle Mutter kann separate Interruptleitungen, angekoppelt an eine Interruptsteuereinheit 170, aufweisen, gekoppelt über Steuerleitungen 111 und den Prozessor 110. Der Systembus 141 hat eine multiplexierte Daten-/Adressenstrecke und ermöglicht Einzel- oder Mehrfachwortblocktransfers. Der Block ist optimiert, um effiziente CPU-Cache-Operation zu ermöglichen. Er hat keinen expliziten Lese/Modifizier/Schreibzyklus, sondem implementiert dies durch Ablaufenlassen eines Lesevorganges mit nachfolgendem Schreibzyklus, ohne daß der Bus freigegeben wird.
- Als eine Illustration eines Ausführungsbeispiels der Fig. 1 umfaßt das System eine einzige CPU 110, einen Schiedsschaltkreis 180 mit acht Eingängen fester Buspriorität und eine Interruptsteuereinheit 170. Alle Signale werden erzeugt und abgetastet bei einer Taktflanke und sollten für mindestens die Einstellzeit stabil sein, bevor die nächste Taktflanke erscheint, und konstant gehalten werden für mindestens eine Haltezeit nach der Taktflanke, um unbestimmte Schaltungsoperation zu vermeiden. Dies bedeutet, daß Beschränkungen hinsichtlich der Busverzögerungen vorhanden sein sollten, was seinerseits die Buslänge und -belastung beschränkt.
- Der Systembus 141 besteht aus einer Mehrzahl von Signalen. Beispielsweise, wie in Fig. 5 für eine Ausführungsform illustriert, kann der Systembus 141 aus den folgenden Signalen bestehen, wobei "/" ein niedrigliegendes wahres Signal indiziert.
- Dies ist der multiplexierte Adreßdatenbus. Während eines gültigen Buszyklus legt die Busmutter mit dem Recht auf den Bus eine Adresse auf den Bus. Dann legt jene Busmutter entweder Daten auf den Bus für einen Schreibvorgang oder bringt ihren AD-Bus in den dritten Zustand (schwimmend) mit einem hochimpedanten Zustandsausgang zur Vorbereitung auf den Empfang von Daten während eines Lesevorgangs. CT< 3:0> : Zyklustyp
- CT(3:2) indiziert den Typ der Mutter auf dem Bus, und ob ein Lese- oder Schreibzyklus geschieht.
- CT(1:0) indiziert die Zahl von in dem Zyklus zu transferienden Worten.
- Die System-MS-Bits spezifizieren den Speicherplatz, zu dem der gerade ablaufende Zugriff erfolgen wird, und den Code, der angibt, das das Cache einen internen Zyklus ausführt. Dieser Zyklus ist erforderlich, um entweder eine Cache-Eingabe aufzufrischen oder um Daten dem Systembus zuzuführen, wenn ein Cache eine jüngere Kopie der Daten hat.
- Ein Transfer zwischen einer Cache-MMU und einer Komponente in dem speichertabellierten Raum ist nur für Einzel- oder Teilwort möglich. Wenn der Transfer zu einem speichertabellierten Eingangs/Ausgangsraum erfolgt, wird er vom Einzelzyklus sein, d.h. CT(1:0) ist (00), dann indizieren die unteren zwei MS-Bits die Größe der bezogenen Daten:
- Das transferierte Byte oder Halbwort muß auf den Busbits erscheinen, auf die durch die Datenadresse hingewiesen wurde. Beispielsweise müssen bei einem Bytezugriff auf Adresse FF03 (HEX) die gewünschten Daten auf Bussignalen AD< 23:16> erscheinen, das dritte Byte des Worts. Wenn auf ein Cache 120 oder 130 von einem geteilten Schreibvorgang zugegriffen wird (d.h. einem Schreibvorgang in den geteilten Raum im Hauptspeicher 140) oder mit einem Eingangs/Ausgangsschreibvorgang von dem Systembus, muß die Zielleitung in den entsprechenden Caches invalidiert werden. Wenn auf einen Cache von einem Eingangs/Ausgangslesevorgang von dem Systembus zugegriffen wird, müssen die passenden verschmutzten Daten in dem Cache ausgesandt werden.
- Mütter müssen nur zu der Tochter den Typ (die Typen) von Zyklus (Zyklen) aussenden, welche die Tochter beantworten kann, sonst wird der Bus eine Auszeit bekommen.
- Dieser wird durch die laufende Busmutter angegeben, um anzuzeigen, daß ein Buszyklus aktiv ist.
- RDY/ wird von einer adressierten Tochter ausgegeben, wenn sie bereit ist, die geforderte Busoperation zu vollenden und entweder die verfügbaren Daten genommen hat oder Lesedaten auf den Bus plaziert hat. RDY/ kann erst aufgegriffen werden, wenn CBSY/ inaktiv wird. RDY/ kann negiert werden zwischen Transfers von Mehrwortzugriffszyklen, um eine lange Zugriffszeit zu ermöglichen. Während mehrerer Wortlese- und Schreibzyklen muß ReaDY/ aufgegriffen werden, zwei Takte bevor das erste Transferwort entnommen wird. Wenn die nächsten Daten zu verzögern sind, muß ReaDY/ negiert werden bei dem Takt, nachdem es aufgegriffen worden ist. Dieses Signal ist "festverdrahtet-ODER-verknüpft" zwischen Komponenten, die sich als Töchter verhalten können.
- CBSY/ wird von einem Cache ausgegeben, wenn infolge eines Buszugriffs es einen internen Zyklus ausführt. Die laufende Steuereinheit des Bus und die adressierte Tochter dürfen den Zyklus nicht beenden, bis CBSY/ falsch geworden ist. Dieses Signal ist "festverdrahtet-ODER-verknüpft" zwischen den Caches. Die CBSY/-Leitung wird erst freigegeben, wenn eine Operation vorbei ist. Beim Privatschreibmodus hält jedes Tochter-Cache sein CBSY/-Signal in einem hochimpedanten Zustand.
- Dies wird vom Hauptspeicher 140 ausgegeben, nachdem er einen Einzelbitspeicherfehler erkannt und korrigiert hat. Dies wird nur dann richtig, wenn die fehlerhaften Daten auf dem Bus wahr sind (d.h. wenn das dritte Wort eines Vierworttransfers einen korrigierten Lesefehler in diesem Zyklus gehabt hatte, dann ist während der Zeit, in der das dritte Wort aktiv ist, auf dem Bus (MMBE) wahr.
- MMBE/ : Speichermehrfachbitfehler
- Dies wird vom Hauptspeicher ausgegeben, wenn er einen nicht korrigierbaren Speicherfehler entdeckt. Dies wird nur richtig, wenn die fehlerhaften Daten auf dem Bus wahr sind (d.h. wenn das dritte Wort eines Vierworttransfers einen unkorrigierbaren Lesefehler in diesem Zyklus hat, dann wird während der Zeit, in der das dritte Wort aktiv ist, auf dem Bus MMBE wahr).
- Dies wird von der Busschiedslogik ausgegeben, nachdem sie eine Busauszeitbedingung erkannt hat oder ein Busparitätsfehler entdeckt worden ist. Die Signalauszeitzeitlage ist die Periode von Busgrant.
- Dies sind die vier Paritätsbits für die vier Bytes auf dem AD< 31:0> -Bus. Sowohl Adresse als auch Daten werden paritätsgeprüft in allen Zyklus.
- Dies ist ein offenes Sammelsignal, angesteuert von jeder Paritätsfiberprüfungsschaltung der Komponente. Es wird angegeben, wenn ein Paritätsfehler entweder in Adresse oder Daten erkannt wird. Es wird von der Busschiedslogik 180 zwischengespeichert, die dann eine Busfehlersequenz erzeugt.
- Dies ist das Busanforderungssignal von Komponente x an die Busschiedseinheit 180.
- Dies ist das Buszugangsberechtigungssignal von der Busschiedseinheit 180 an die Komponente x.
- Dies wird während eines Lese/Modifizier/Schreibzyklus erzeugt. Es hat dieselbe Zeitlage wie die CT- und MS-Signale.
- Der Haupttakt MCLK wird der CPU oder den CPUs 110 und den Caches 120 und 130 zugeführt.
- Dies ist der Systembustakt. Alle Signale werden auf seiner Anstiegsflanke erzeugt und erfaßt.
- RESET/ : Dies ist das Hauptrücksetzsignal des Systems. Es wird für eine große Anzahl von Bustaktzyklen ausgegeben.
- RATE : BCLK/MCLK-Rate
- Niedrig : BCLK hat die Frequenz von 1/2 von MCLK (beispielsweise 60ns)
- Hoch : BCLK hat die Frequenz von 1/4 von MCLK (beispielsweise 120ns).
- In einer Ausführungsform umfaßt die Systemarchitektur mehrere Cache-Speicher, mehrere Prozessoren und Eingangs/Ausgangsprozessoren. In dieser Ausführungsform besteht ein Problem, dieselben Datenteile auf demselben Wert an jeder Stelle zu halten, wo sie gespeichert und/oder bearbeitet werden. Um dieses Problem zu umgehen, überwachen die Cache-Speicher den Systembus, inspizieren jeden Zyklus, um festzustellen, ob er von dem Typ ist, der die Konsistenz von Daten in dem System beeinträchtigen könnte. Trifft dies zu, führt das Cache einen internen Zyklus durch, um zu bestimmen, ob es seine Daten zu reinigen hat oder die Daten auf den Systembus von dem Cache anstelle von der adressierten Komponente auf dem Bus zu geben. Während das Cache dies entscheidet, gibt es CacheBuSy/ aus. Wenn es seinen Zyklus beendet hat, negiert es CacheBusy/. Wenn es die Daten hat, plaziert es sie auf dem Bus und gibt ReaDY/ aus.
- Die Buszyklen, die bewirken, daß das Cache einen internen Zyklus durchführt, sind:
- 1. Ein Eingangs/Ausgangslesevorgang (IOR) zum privaten Speicherraum. Dies ermöglicht dem Cache, Daten zu liefern, die modifiziert worden sein können, jedoch noch nicht in den Speicher eingeschrieben wurden. Der Speicherplatzcode ist < 101xx> . Das heißt der Speicherraum ist der Hauptspeicher, und die erforderlichen Daten werden im Rückkopiermodus in einen privaten Speicherbereich cachiert. Wenn infolge eines Programmierfehlers ein 16-Wort-Zyklus als cachierbar erklärt wird und ein Cache-Treffer auftritt, wird das Cache die ersten vier Worte korrekt liefern und dann den Wert des vierten Wortes liefern, transferiert zu den verbleibenden 12 Worten.
- 2. Eingangs/Ausgangsschreibzyklen (IOW) von ein, vier oder sechzehn Worten. Dies ermöglicht dem Cache, irgendwelche Daten zu invalidieren, die es (sie) enthält (enthalten), was in den Speicher zu laden ist. Die Memoryspace-Codes sind < 001xx> , < 001xx> und < 010xx> . Das heißt, alle passenden Daten, die cachiert sind, werden gereinigt.
- 3. Einzel- und Vierwort-CPU-Schreibvorgänge in den geteilten Speicher. Dies ermöglicht anderen Caches, irgendwelche Daten, die sie enthalten, wo eine Speicheränderung vorgenommen wird, zu invalidieren. Der Memoryspace-Code ist < 001xx> . Das heißt, irgendwelche passenden Daten, die cachierbar sind und in geteilten Speicherbereichen.
- 4. Globale Schreibvorgänge zu der Cache-Speicherverwaltungseinheit (CAMMU) steuern Register. In einem Mehrfach-CPU-System, beispielsweise mit mehreren Cache-Paaren, ist eine zusätzliche Komponente erforderlich, um die CBSY-Leitung zu überwinden und das RDY-Signal auszugeben, wenn CBSY im Globalmodus aus ist.
- 5. Zugriffe von der Daten-Cache-Speicherverwaltungseinheit (DCAMMU) auf ihre zugeordnete Befehls-Cache-Speicherverwaltungseinheit (ICAMMU).
- Das Folgende ist eine beispielsweise Zusammenfassung von Bustransfererfordernissen, denen zu folgen ist, um erfolgreich Daten über den Systembus zu transferieren. Andere Beschränkungen infolge Software-Übereinkommen können zusätzlich notwendig sein.
- 1. Alle Aktivität erfolgt bei der Anstiegsflanke von BCLK.
- 2. Alle Signale müssen alle entsprechenden Setz- und Haltezeiten erfüllen.
- 3. Mütter dürfen nur jene Zyklen an Töchter übertragen, welche die Töchter ausführen können; diese sind:
- (i) MMIO und Vorratszugriffe sind nur Einzelzyklen.
- (ii) Sechzehn-Wort-Transfers zum Speicher können nur als Eingangs/Ausgangstypzyklen ausgegeben werden.
- 4. Während cachierbarer Zyklen dürfen die Bustöchter kein ReaDY/ ausgeben, bevor CacheBuSy/ negiert worden ist. Während nicht-cachierbarer Zyklen braucht die adressierte Tochter keinen Test bezüglich CacheBuSy/ auszuführen. Wenn ReaDY/ ausgegeben wird, während CacheBuSy/ negiert ist, muß das Speichersystem seinen Zyklus verwerfen.
- Ein typischer Systembuszyklus 141 beginnt, wenn eine Komponente die Busbeherrschung durch Ausgeben des Busrequest an den Busschiedsschaltkreis 180 anfordert. Einige Zeit später gibt der Schiedskreis 180 Busgrant zurück, womit angezeigt wird, daß die anfordernde Komponente den Bus benutzen darf. Beim nächsten Takt gibt die Komponente Activecycle/ aus, die Busadresse, den Buszyklustyp und die Busspeicherraumcode. Die Busadresse wird zwei Bustakte BCLK später zurückgenommen. Wenn der Zyklus ein Schreibzyklus ist, dann werden die Daten auf die Adreßdatenleitungen gelegt. Wenn es sich um einen Lesezyklus handelt, werden die Adreßdatenleitungen auf den hochimpedanten Zustand in Voraussicht, daß Daten auf ihnen plaziert werden, gelegt. Dann tritt eines der beiden folgenden Ereignisse ein:
- 1. Wenn der Zyklus einen internen Cache-Zugriff einschließt, wird das Cache (werden die Caches) CacheBuSy/ anlegen, bis es bzw. sie seine bzw. ihre internen Operationen beendet haben. CacheBuSy/ Anlegen sperrt den Hauptspeicher gegen die Vervollständigung seines Zyklus. Es gibt nun mehrere mögliche Sequenzen, die auftreten können.
- i. Wenn der Zyklus ein Eingangs/Ausgangslesevorgang zum privaten Speicher ist und ein Cache die meisten laufenden Daten hat, wird das Cache gleichzeitig die Daten auf den Systembus 141 legen, ReaDY/ wählen und CacheBuSy/ negieren. Wenn ReaDY/ auf wahr geht, zeigt dies dem Speicher 140 an, daß er den laufenden Zyklus zu verwerfen hat.
- ii. Wenn der Zyklus ein Eingangs/Ausgangsschreibzyklus ist oder ein Schreibvorgang zu dem geteilten Speicher, wartet der Speicher 140 bis zum Negieren von CacheBuSy/ und legt ReaDY/ an.
- iii. Wenn der Zyklus ein Eingangs/Ausgangslesevorgang aus dem privaten Speicher im Hauptspeicher 140 ist und das Cache keine Daten hat, wird schließlich CacheBuSy/ negiert. Dies entsperrt den Speicher 140, um Daten auf Bus 141 zu legen und ReaDY/ anzuwählen.
- 2. Wenn der Zyklus keinen Cache-Zugriff einschließt, braucht CacheBuSy/ nicht überwacht zu werden.
- Wenn ReaDY/ auf wahr geht, signalisiert dies der Mutter, daß die Daten erfolgreich transferiert worden ist. Bei einem Einzelwortzugriff zeigt dies, daß der Zyklus zuende ist. ReaDY/ bleibt wahr bis einen BCLK, nachdem ActiveCycle/ fallengelassen worden ist. Wenn es sich um einen Lesezyklus handelt, dann bleiben die Daten wahr für einen BCLK länger als der ActiveCycle/. Für einen Schreibzyklus werden die Daten mit ActiveCycle/ fallengelassen. BusRequest, Speicherraum und Zyklustyp werden ebenfalls mit ActiveCycle/ fallengelassen. Wenn BusRequest falsch wird, bewirkt der Busschiedskreis 180, daß Busgrant beim nächsten BCLK unter Beendigung des Zyklus fallengelassen wird. ReaDY/ wird mit Bus- Grant fallengelassen. Wenn der Zyklus ein Mehrworttyp ist, dann zeigt das Wahrgehen von ReaDY/, daß weitere Transfers erfolgen werden. Der letzte Transfer eines Mehrwortzyklus erscheint identisch mit dem des entsprechenden Einzelwortzyklus.
- Der Lese/Modifizier/Schreibzyklus ist ein Lesezyklus und ein Schreibzyklus ohne Busschiedsvorgang zwischen ihnen. Die Lesedaten müssen nicht später entnommen werden als die BCLK-Flanke, bei der der nächste Aktivzyklus aufgelegt wird.
- Ein Busfehler-, BERR, Signal wird bereitgestellt, um den Systembus 141 zu entsperren, um richtig abgeklärt zu werden nach irgendeiner Busversagensbedingung. Da die Länge des längsten Zyklus bekannt ist (beispielsweise ein Sechzehn-Wort-Schreib- oder Lesevorgang), ist es nur erforderlich, Busgrant mit Auszeit hinreichenden Schutz zu verleihen. Wenn als Mutter eine Komponente Buserror sieht, wird sie sofort den Zyklus verwerfen, BusRequest fallenlassen und aus dem Bus herausgehen. Busgrant wird zu der jeweiligen Mutter fallengelassen, wenn BusERRor fallengelassen wrid. Die Bustreiberlogik ist ausgelegt, um diese Bedingung zu handhaben. Die zu Beginn des letzten Zyklus repräsentierte Adresse, die eine Auszeit des Bus bewirkte, wird in einem Register in der Bussteuereinheit gespeichert.
- BERR wird auch erzeugt, wenn Paritätsfehler auf wahr geht. Wenn sowohl eine Auszeit als auch ein Paritätsfehler gleichzeitig auf wahr gehen, hat die Auszeit Präzedenz.
- Der Hauptspeicher 140 besteht wie dargestellt aus einer Lese- Schreib-Speichermatrix, Fehlerkorrektor- und Treiber-Empfängern und Busschnittstellenschaltkreisen, welche für die Busankopplung sorgen, und Schnittstellenprotokollhandhabung für Transfers zwischen dem Hauptspeicher 140 und dem Systembus 141. Die Speicherfehlerkorrektureinheit des Hauptspeichers 140 sorgt für die Fehlererkennung und Korrektur, wenn aus dem Speicherrraum des Hauptspeichers 140 gelesen wird. Die Speicherfehlerkorrektureinheit des Hauptspeichers 140 sorgt für die Fehlererkennung und Korrektur, wenn aus dem Speicherraum des Hauptspeichers 140 gelesen wird. Die Fehlerkorrektureinheit ist an den Speichermatrixraum des Hauptspeichers 140 angekoppelt und über den Systembus 141 mit der Daten- Cache-MMU 130 und Befehls-Cache-MMU 120. Daten, die aus dem Speicher 140 gelesen werden, werden bezüglich Fehlerkorrektur durch die Fehlererkennungs- und Korrektureinheit verarbeitet.
- Der Prozessor 110 liefert Adressen in oben beschriebener Weise an die Befehls-Cache-MMU 120 und Daten-Cache-MMU 130, um so das Beginnen der Lokalisierung von zu transferierenden Daten anzuzeigen. In der bevorzugten Ausführungsform wird diese Adreßinformation in einem virtuellen oder logischen Adreßformat bereitgestellt entsprechend über eine zugeordnete Tabellierung einer realen oder physikalischen Adresse im Hauptspeicher 140. Der Hauptspeicher 140 sorgt für das Lesen und Schreiben von Daten von adressierbaren Speicherstellen innerhalb des Hauptspeichers 140 in Reaktion auf physikalische Adressen, wie sie über einen Systembus 141 eingekoppelt werden.
- Die Hochgeschwindigkeitsspeicher der Befehls-Cache-MMU 120 und Daten-Cache-MMU 130 sorgen für selektives Speichern und Ausgeben digitaler Information in einer tabelliert assoziativen Weise von ihrem jeweiligen adressierbaren Hochgeschwindigkeitsspeicher. Die Befehls-Cache-MMU 120 umfaßt Speicherverwaltungsmittel für das Verwalten des selektiven Zugriffs auf den primären Hauptspeicher 140 und führt die Tabellierung und Umsetzung der virtuellen in die physikalische Adresse aus, wobei, wenn erforderlich, die Ausgabe der physikalischen Adresse an den Systembus 141 und von diesem zum Hauptspeicher 140 vorgesehen ist. Die Daten- Cache-MMU 130 hat ebenfalls einen hochgeschwinden tabellierten adressierbaren Speicher, der auf virtuelle Adressen als Ausgang von dem Prozessor 110 reagiert. In ähnlicher Weise wie bei der Befehls-Cache-MMU hat die Daten-Cache-MMU 130 Speicherverwaltungsmittel für das Verwalten des selektiven Zugriffs auf den Hauptspeicher 140, wobei die Speicherverwaltungsmittel die Tabellierung und Umsetzung virtueller in physikalische Adressen umfaßt, um, wenn erforderlich, eine physikalische Adresse an den Systembus 141 und von diesem an den Primärspeicher 140 in Reaktion auf den virtuellen Adreßausgang von dem Prozessor 110 auszugeben. Der Systembus 141 sorgt für hochgeschwinde Kommunikationen, angekoppelt an den Hauptspeicher 140, die Befehls-Cache-MMU 120, die Daten-Cache-MMU 130 und andere Elemente, die angeschlossen sind, wobei zwischen diesen digitale Information ausgetauscht wird.
- Die CPU 110 kann gleichzeitig auf beide Cache-MMUs 120 und 130 über zwei hochgeschwinde Cache-Busse zugreifen, den Befehls-Cache-Prozessorbus 121 und den Daten-Cache-Prozessorbus 131. Jede Cache-MMU greift auf den Systembus 140 zu, wenn es ein Verfehlen bei einem CPU-Zugriff auf die Cache-MMU gibt. Die Cache-MMUs eliminieren im wesentlichen die Geschwindigkeitsdiskrepanz zwischen der Exeukutionszeit der CPU 110 und der Zugriffszeit auf den Hauptspeicher 140.
- Die Eingangs/Ausgangsschnittstellenprozessoreinheit (IOP) 150 besteht aus einem Eingangs/Ausgangsadapter 152, einem Eingangs/Ausgangsprozessor 153 und einem lokalen Speicher MIO 154, wie in Fig. 1 gezeigt. Die Eingangs/Ausgangsschnittstelle 152 verbindet den Systembus 141 und einen externen Eingangs/Ausgangsbus 151, an den externe Eingangs/Ausgangskomponenten angeschlossen sind. Unterschiedliche Versionen von Eingangs/Ausgangsadaptern 152 können konstruiert werden, um eine Schnittstelle mit sekundären Speichern, wie Festplatten und Bändern, zu bilden und mit unterschiedlichen Standards von Eingangs/Ausgangsbussen, wie einem VME-Bus und MULTI-Bus wie auch mit Kundenbussen. Die Eingangs/Ausgangsprozessoreinheit 153 kann irgendeine Art von existierendem Standard-Mikroprozessor sein oder kann ein besonders ausgelegter Mikro-Prozessor sein, oder Zufallslogik. Eingangs/Ausgangsprogramme einschließlich Festplattensteuerprogrammen können in dem MIO 154 abgelegt sein.
- Datentransfermoden des Systembus 141 werden durch den CT-Code über einen CT-Bus definiert. In der bevorzugten Ausführungsform können Datentransfers von der Daten-Cache-MMU 130 zum Hauptspeicher 140 (d.h. Mp) entweder in einem Quadwortmodus erfolgen (d.h. eine Adresse, gefolgt von vier aufeinanderfolgenden Datenworten) oder in einem Einzelwortmodus.
- Bei Eingangs/Ausgangs-Lese/Schreiboperationen, eingeleitet durch einen Eingangs/Ausgangsprozessor, IOP 150, kann der Blockmodus zusätzlich zu den oben beschriebenen Einzelwort- und Quadwortmoden deklariert werden. Der Blockmodus erlaubt einen konsekutiven Datentransfer von sechzehn Worten, um die Datentransferrate auf dem Systembus 141 zu steigern. Dies wird gewöhnlich nur bei Durchschreibseiten beim Eingangs/Ausgangslesen ausgenutzt. Bei Eingangs/Ausgangsschreiben kann dies zu entweder Durchschreib- oder Rückkopierseiten erklärt werden. Wenn der IOP 150 den Datentransfer von dem Hauptspeicher 140 zu dem IOP 150 deklariert, kann ein Cache auf die IOP-Anforderung zu reagieren haben, anstatt daß der Hauptspeicher 140 auf ein Rückkopierschema reagiert, weil es möglicherweise nicht der Hauptspeicher 140 ist, sondern das Daten-Cache 130, das die jüngsten modifizierten Daten hält. Ein spezielles Steuersignal ist an die Caches 120, 130 und Hauptspeicher 140 angekoppelt (nämlich CBSY/ und RDY/ Signale).
- Für eine Lese/Modifizier/Schreiboperation folgt der Einzelleseoperation eine Einzelwortschreiboperation innerhalb eines Busanforderungszyklus.
- Der Hauptspeicher 140 kann aus mehreren Speicherborden bestehen, angeschlossen an einen Intraspeicherbus. Der Intraspeicherbus ist in einen Hauptadreßbus und einen Hauptspeicherdatenbus aufgeteilt. Alle Datentransfermoden, wie oben beschrieben, werden abgestützt
- Ein Raum-ROM befindet sich in einem speziellen Adreßraum und kann direkt an den Systembus 141 angeschlossen werden.
- Indem erneut auf Fig. 1 eingegangen wird, ist der Prozessor 110 auch als eine Interruptsteuereinheit 170 über Interruptvektor- und Steuerleitungen 111 angekoppelt. Die Interruptsteuereinheit 170, wie dargestellt, ist an den Hauptspeicher 140 über die Interruptleitungen 145 angekoppelt, an den IOP 150 über Interruptleitungen 155 und an den Matrixprozessor 188 über Interruptleitungen 165. Die Interruptsteuereinheit 170 signalisiert dem Prozessor 110 Interrupts über Interruptleitungen 111.
- Eine Interruptsteuereinheit 170 ist an die CPU 110 angekoppelt, um auf Interruptanforderungen, ausgegeben von Busmutterkomponenten zu reagieren.
- Die CPU hat einen separaten unabhängigen Interruptbus 111, welcher maskierbare Interrupts steuert und an die Interruptsteuereinheit 170 ankoppelt. Jeder Pegelinterrupt kann durch das entsprechende Bit eines ISW maskiert werden (d.h. Interrupt-Statuswort) in der CPU. Alle Pegel sind vektorisierte Interrupts und haben gemeinsame Anforderungsund Bestätigungs/Entsperrleitungen.
- Die Bus-Interruptsteuereinheit 170 entsperrt mehrere Hochpegel-Interruptquellen, um die CPU 110 zu unterbrechen. In einer Ausführungsform ist die Interrruptsteuereinheit 170 vom parallelen prioritätsfesten Typ. Ihr Protokoll ist ähnlich dem des Systembus 141 und multiplexiert die Gruppe und den Pegel über dieselben Leitungen.
- Die Interruptsteuereinheit 170 ist mit jeder potentiell unterbrechenden Komponente durch die folgenden Signale gekoppelt:
- Dieses Signal wird an die Interruptsteuereinheit 170 durch die unterbrechende Komponente als eine Anforderung für Service ausgegeben.
- Dies wird von der Interruptsteuereinheit 170 an die unterbrechende Komponente ausgegeben, um anzuzeigen, daß der Interruptservice gewährt worden ist.
- Diese fünf Leitungen führen die Interruptgruppen und -pegel zu der Interruptsteuereinheit 170. Dies ist ein Dreizustandsbus.
- Dieses Signal zeigt der unterbrechenden Komponente, daß die CPU 110 die Annahme des Interrupts in dieser Gruppe verweigert hat. Dies mit allen Interruptkomponenten verbunden.
- Die Interruptsteuereinheit 170 ist mit der CPU oder den CPUs 110 über die Signalleitungen 111 wie folgt gekoppelt:
- IR/ zeigt die Existenz eines anhängigen vektorisierten Interrupts an, dessen Pegel auf den VCT< 2:0> -Leitungen verfügbar ist.
- Die CPU 110 sended IAK/ aus um anzuzeigen, daß der Interrupt akzeptiert worden ist und liest gleichzeitig die Vektornummer durch die VCT< 4:0> -Leitungen. IAK/ und IR/ konfigurieren ein Handschlagschema.
- Jede CPU, die den laufenden Interrupt maskiert, schickt ein MK-Signal anstelle eines IAK/-Signals zurück. Der Interrupt wird nicht in der CPU in diesem Falle zwischengespeichert. MK kann durch die Interruptsteuereinheit verwendet werden, um den maskierten Interrupt freizugeben und einem neu eintreffenden Interrupt höheren Pegels Raum zu geben.
- VCT-Leitungen werden multiplexiert und liefern eine Pegelnummer und eine Vektornummer. Eine Pegelnummer 0-7 wird auf die VCT< 2:0> -Leitungen gelegt, wenn IR/ aktiv ist. Wenn IAK/ durch die CPU aktiviert wird, haben die VCT< 4:0> -Leitungen eine Vektorzahl, die einen von 32 Interrrupts des betreffenden Pegels identifiziert. Die VCT-Leitungen koppeln Ausgänge von der Interrupt-Steuereinheit 170 auf die CPU 110 oder die CPUs.
- Die CPU 110 aktiviert IAK/ und gibt die Vektornummer über IBUS< 4:0> -Leitungen ein, welche einen von 32 Interrupts in jedem Pegel identifiziert. In einem Falle von mehreren Prozessoren können diese Pegel benutzt werden, um dem System ein flexibles Interruptschema zu verleihen. Als ein Beispiel des Interruptschemas in einem Multiprozessorsystem, wenn alle IREQx/-Leitungen aktiviert sind, entsperren die CPUs Bits in dem 15W, welche unterscheiden, ob die CPU den Interrupt empfangen sollte oder nicht. Jeder Interruptpegel hat 32 Interrupts, und der Pegel kann dynamisch irgendeiner der CPUs durch Steuerung der Entsperrbits in SSW (d.h. Systemstatuswort) zugeordnet werden.
- MK- (maskierte) Signale werden anstelle von IAK/ durch die CPUs aktiviert, die den laufenden Interrupt herausmaskieren. Der Interrupt wird ignoriert (nicht zwischengespeichert) durch die betreffenden CPUs. Diese Signale erlauben der Interruptsteuereinheit 170, die maskierten Interrupts zu reservieren und einen höheren Interrupt verarbeiten zu lassen, wenn er auftritt.
- Jenseits der wie oben für Fig. 1 beschriebenen Elemente können zusätzliche Systemelemente zu der Architektur hinzugefügt werden und über den Systembus 141 in das System gekoppelt werden.
- Ein Busschiedskreis 180 ist an den Systembus 141 angekoppelt sowie an Systemelemente, die an dem Systembus 141 angekoppelt sind, wie die Befehls-Cache-MMU 120 und Daten-Cache-MMU 130, um selektiv Kanalzugriffskonflikte zwischen den mehreren potentiellen "Mutter"-Elementen aufzulösen, die an den Systembus 141 angekoppelt sind. Dies hält die Integrität der Kommunikationen auf dem Systembus 141 aufrecht und vermeidet Kollisionen von Datentransfers auf diesem. Der Busschiedskreis 170 hat Busanforderungs- und buszulassungseingänge bzw. -ausgänge, angekoppelt jeweils an die Befehls-Cache-MMU 120, Daten-Cache-MMU 130 und Eingangs/Ausgangsprozessor 150. Wenn beispielsweise die Befehls-Cache-MMU 120 einen Transfer von Befehlsdaten von dem Hauptspeicher 140 gleichzeitig anfordert, wie der Eingangs/Ausgangsprozessor 150 den Transfer von Daten zu oder von der IOP 150 relativ zu dem Hauptspeicher 140 anfordert, ist der Busschiedskreis 180 verantwortlich für das Lösen des Konflikts, derart, daß die beiden Ereignisse sequentiell erfolgen, anstatt einen Konflikt und eine Kollision zuzulassen, die ein Ergebnis der simultanen Versuche wäre.
- Die Busscheidung zwischen Busmuttern erfolgt durch den Busschiedskreis 180. Jede Busmutter aktiviert ihre Busanforderungs-BR-Leitung, wenn sie beabsichtigt, auf den Systembus 141 zuzugreifen. Der Busscheidskreis 180 schickt ein Bus-Zugeteilt-(BG)-Signal zu der neuen Mutter, die zu dem betreffenden Zeitpunkt immer die höchste Priorität hat.
- Die Busmutter mit aktiven BR- und BG-Signalen ist in der Lage, das Recht auf den Bus aufrechtzuerhalten, indem er das BR-Signal aktiv hält, bis der Datentransfer komplett ist. Andere Mütter halten ihre BR- Signale aktiv, bis das entsprechende BG-Signal seinerseits aktiviert ist.
- Der Systembus 141 ist eine aufgeteilte Ressource, doch kann nur eine Einheit die Benutzung des Busses zu irgendeinem Zeitpunkt haben. Da es eine Anzahl von potentiellen "Busmutter"-Einheiten gibt, angekoppelt an den Systembus 141, von denen jeder den Versuch machen könnte, auf den Systembus 141 unabhängig zuzugreifen, ist der Busschiedskreis 180 ein notwendiges Element, das an den Systembus 141 anzukoppeln ist.
- Es gibt generell zwei Schiedsprioritätstechniken: eine feste Priorität und eine rotierende oder geplante Priorität. Es gibt auch zwei Arten von Signalhandhabungsschemata: ein serielles (d.h. verkettetes) und ein paralleles. Das serielle Schema, wenn es als ein Festprioritätssystem konfiguriert ist, benötigt weniger Schaltkreise als ein paralleles Schema, ist jedoch relativ langsam in der Durchsatzgeschwindigkeit. Die Kombination eines seriellen Schemas einer rotierenden Priorität kann von einem Hochleistungsbusschiedskreis 180 bereitgestellt werden. Das parallele Schema kann entweder mit einer festen oder einer rotierenden Priorität realisiert werden und ist schneller als ein serielles oder gemischtes Schema, erfordert jedoch sehr viel mehr Schaltkreise. Der Busschiedskreis 180 der vorliegenden Erfindung kann irgendeines dieser Schemata verwenden.
- In einer alternativen Ausführungsform kann ein rotierendes Prioritätsschema jeder Busmutter die gleiche Chance geben, den Systembus zu benutzen. Wenn jedoch IOPs oder eine bestimmte CPU höhere Priorität haben sollte, ist eine feste Priorität gewöhnlich bevorzugt und einfacher.
- Der Busschiedskreis 180 kann auch die Funktion haben, bezüglich irgendeiner langen Busbenutzung durch irgendeine Einheit an dem Systembus 141 eine Überprüfung vorzunehmen. Dies kann durch Messen der aktiven Zeit eines Buszuteilungssignals BG erfolgen. Wenn das BG-Signal in seiner Dauer zu lang ist, kann ein Busfehlersignal BERR an die Busmutter erzeugt werden, die gerade den Systembus 141 besetzt. BERR wird auch erzeugt, wenn ein Paritätsfehler auftritt.
- Wie weiter in Fig. 1 dargestellt ist, kann ein Matrixprozessor 188 an den Systembus 141 angekoppelt sein. Komplizierte Berechnungsprobleme, die mit den Fähigkeiten des Matrixprozessors kompatibel sind, können heruntergeladen werden, um für parallele Verarbeitung der heruntergeladenen Daten zu sorgen, wobei die resultierenden Antworten über den Systembus 141 zurückgeführt werden (beispielsweise zurück zum Hauptspeicher 140 oder zu der Daten-Cache-MMU 130 und von dieser zu der CPU für die Bearbeitung derselben).
- Wie oben diskutiert, ist die Eingangs/Ausgangsprozessoreinheit (bP) 150 an den Systembus 141 angekoppelt und hat Mittel für das Ankoppeln an einen Eingangs/Ausgangsbus 151, wie an einen sekundären Festplattenspeicher oder eine Bandeinheit. Der IOP 150 kann für den direkten Transfer von Daten zu und von dem Hauptspeicher 140 und zu und von der sekundären Speichereinrichtung sorgen, die an den IOP 150 angekoppelt ist, und kann diesen Transfer unabhängig von der Befehls-Cache-MMU 120 und Daten-Cache-MMU 130 ausführen. Der IOP 150 kann auch als eine Busmutter an den Busschiedskreis 180 angekoppelt sein, um Konflikte bezüglich Zugriff auf den Hauptspeicher 140 über Zugriff auf den Systembus 141 zu lösen. Dies sorgt für Flexibilität. Beispielsweise können Daten, transferiert zwischen dem Hauptspeicher 140 über den Systembus 141 zu dem IOP 150 und von diesem zu einer sekundären Speichereinrichtung, gesteuert werden, um für eine 16-Wege-Vermaschung zu sorgen, während Transfers zwischen einem Cache 120 oder 130 und dem Hauptspeicher 140 gesteuert werden können, um für eine 4-Wege-Vermaschung zu sorgen. Dies ist möglich, da die Steuerung der Transfers zwischen den Caches 120 oder 130 und dem Hauptspeicher 140 separat von der Steuerung für Transfers zwischen dem bp 150 und dem Hauptspeicher 140 ist.
- Der IOP 150 kann alternativ oder zusätzlich für die Protokollumsetzung sorgen. In dieser Ausführungsform ist der Protokoll-IOP 150 an den Systembus 141 angekoppelt wie auch an einen externen Eingangs- Ausgangsbus 151. Vorzugsweise ist der IOP 150 auch an den Busschiedskreis 180 angekoppelt. Der Protokollumsetzungs-IOP 150 regelt den Schnittstellenzugriff und die Protokollumsetzung von digitaler Information zwischen irgendwelchen Systemelementen, die an den Systembus 141 angekoppelt sind, und sorgt für den Transfer von digitaler Information über den externen Kommunikations-Eingangs/Ausgangsbus 151 zu dem externen System. So können beispielsweise die Systembusarchitektur 141 und das Transferprotokoll zur Schnittstelle mit nicht-kompatiblen System-und Busstrukturen und Protokollen erbracht werden, wie etwa Schnittstellenbildung zu einem Multibussystem.
- Fig. 7A-C illustrieren den virtuellen Speicher, den realen Speicher bzw. virtuelle Adreßkonzepte. Gemäß Fig. 7A wird der virtuelle Speicher wie von der CPU 110 gesehen illustriert. Der virtuelle Speicher ist als eine eine 2³²-Wort-32-bit-Speichermatrix dargestellt, binär adressierbar von 0 bis FFF FFF FF (hexadezimal). Dieser virtuelle Speicher kann visualisiert werden als 1024 (2¹&sup0;) Segmente umfassend, wobei jedes Segment 1024 (d.h. 2¹&sup0;) Seiten umfaßt und jede Seite 4096 (d.h. 2¹²) Worte oder Bytes hat. Demgemäß kann die CPU einen virtuellen Speicherraum von 4 Gigabytes adressieren. Dieser virtuelle Speicheradreßraum ist unabängig von dem verfügbaren tatsächlichen realen Speicherraum. Beispielsweise kann der reale Speicher (d.h. Hauptspeicher) aus 16 Megabytes oder 2¹² Seiten bestehen.
- Wie in Fig. 7B dargestellt, wird der reale Speicherraum durch eine reale Adresse RA von 0 bis FFF FFF (hexadezimal) repräsentiert. Die Cache-Speicherverwaltungseinheit der vorliegenden Erfindung bewirkt extrem schnelle Virtuell/Real-Speicherraumadreßumsetzung nach Bedarf. Die Cache-Speicherverwaltungseinheit liefert eine Tabellierung für das Korrelieren der Cache-Speicherinhalte und bestimmter vorgespeicherter Information von den virtuellen zu den reellen Speicherraumadressen.
- Gemäß Fig. 7C besteht die 32-bit virtuelle Adresse, VA, aus einer 10-bit-Segmentadresse, Bits 31 bis 22 (d.h. VA< 31:22> ), einer 10-bit-Seitenadresse, Bits 21 bis 12 (d.h. VA< 21:0> ) und einer 12-bit- Verlagerungsadresse, Bits 11 bis 0 (d.h. VA< 11:0> ). In einer bevorzugten Ausführungsform stellt die Cache-Speicherverwaltungseinheit satzassoziative Tabellierung zur Verfügung, derart, daß die Verlagerungsadreßbits bis 11 der virtuellen Adresse den Bits 0 bis 11 der realen Adresse entsprechen. Dies bewirkt bestimmte Vorteile und beschleunigt den Umsetzund Tabellierprozeß.
- In Fig. 8 ist ein Blockdiagramm der Cache-Speicherverwaltungseinheit illustriert. In einer bevorzugten Ausführungsform kann eine einzige Cache-Speicherverwaltungseinheitsarchitektur sowohl für den Befehls-Cache als auch für den Daten-Cache zweckverwendet werden, ausgewählt durch Programmieren bei der Herstellung oder durch Abzugs- oder Initialisierungsprozeduren zum Zeitpunkt der Systemkonfiguration oder Initialisierung. Die Cache-Speicherverwaltungseinheit hat eine CPU- Schnittstelle, die den Prozessor-Cache-Bus 121 oder 131 angekoppelt, und eine Systembusschnittstelle zur Kopplung mit dem Systembus 141. Die CPU- Schnittstelle besteht aus einem Adreßeingangsregister 210, einem Cache- Ausgangsregister 230 und einem Cache-Eingangsregister 240. Die Systembusschnittstelle besteht aus einem Systembuseingangsregister 260 und einem Systembusausgangsregister 250. Das Adreßeingangsregister 210 koppelt die virtuelle Adresse über Bus 211 an ein Cache-Speichersystem 220, einen Umsetzlogikblock (d.h. TLB) 270 und eine Direktadreßumsetzlogik(d.h. DAT)-Einheit 280. Die DAT 280 und ihr Betrieb sind in größeren Einzelheiten nachstehend unter Bezugnahme auf Fig. 12 beschrieben. Der Datenausgang von dem Cache-Speichersystem 220 ist über Bus 231 an das Cache-Ausgangsregister 230 angekoppelt. Das Cache-Speichersystem empfängt reale Adreßeingänge über Bus 261 vom Systemeingangsregister 260 und empfängt zusätzlich einen Realadreßeingang von dem TLB 270. Der Dateneingang zu dem Cache-Speichersystem 220 ist über den Cache-Datenbus (d.h. DT) 241, der an jeden der Cache-Eingangsregister 240 ankoppelt, das Systembuseingangsregister 260, das Systembusausgangsregister 250, Cache-Ausgangsregister 230, Umsetzlogikblock 270 und DAT 280, um für Realadresse und Datendurchflußfähigkeiten zu sorgen. Der TLB 270 und DAT 280 sind bidirektional zu dem DT-Bus 241 für das Ankoppeln von realer Adresse und Adreßumsetzdaten zwischen dem DT-Bus 241 und dem TLB 270 und dem DAT 280 gekoppelt. Die Systembusschnittstelle kann mit dem DAT 280 und TLB 270 wie auch mit dem Cache-Speichersystem 220 über den DT-Bus 241 kommunizieren.
- Fig. 9 zeigt ein detailliertes Blockdiagramm der Cache-MMU zur Illustration der Datenflußoperationen innerhalb der Cache-MMU.
- Die virtuelle Adresse wird von dem schnellen Cache-Bus 121 oder 131 über das Cache-Eingangsregister 240 genommen und wird in einem Akkumulator/Register 310 der Cache-MMU gespeichert. Diese Adresse wird dann in drei Teile gespalten. Die hochstelligen Bits (< 31:1> ) werden zu dem TLB 350 und DAT 370 gesandt. Bits < 10:4> werden der Cache-Speicherpufferauswähllogik 320 zugesandt zum Auswählen einer Leitung in dieser. Bits < 3:2> werden dem Multiplexer 341 zugeführt, der eines der vier Ausgangsworte der Quadwortleitungsregister 333 und 335 auswählt. Bits < 0:1> werden nur verwendet für das Speichern von Byte/Speicherhalbwortoperationen, wie unten beschrieben.
- Die TLB 350 verwendet die niedrigstelligen 6 Bits < 17:12> der virtuellen Seitenadresse für den Zugriff auf eine zweiwegesatzassoziative Matrix 352 und 354, die als ihren Ausgang die reelle Adresse der Seite entsprechend der präsentierten virtuellen Adresse hat. Bit < 11> wird durchgeschleust ohne Umsetzung. Da die Seitengröße 4K beträgt, ist Bit < 11> Teil der Spezifikation f des Byte innerhalb der Seite. Wenn deshalb eine Anpassung festgestellt wird, wird die reelle Adresse ausgegattert und in die Komparatoren 332 und 334 für den Vergleich mit den Cache-Realadreßflaggenausgängen 322 und 326.
- Wenn keine übereinstimmung in der TLB 350 gefunden wird, kommt der DAT (dynamischer Adressenumsetzer) 370 ins Spiel. Der DAT setzt durch Verwendung der Segment- und Seitentabellen für den aktiven Prozeß die präsentierte virtuelle Adresse in eine reelle Adresse um. Die reelle Adresse wird in die TLB 350 geladen unter Verdrängung eines früheren Eintrags. Die TLB 350 sendet dann die reelle Adresse an den Cache 320.
- Der Cache-Datenpuffer 321 und 322 ist ein satzassoziativer Speicher, organisiert als 128 Sätze von zwei Leitungen von jeweils 16 Bytes. Bits < 10:4> der virtuellen Adresse wählen einen Satz in dem Cache-Datenpuffer. Die 16 Bytes von Daten für jeweils eine der zwei Leitungen in dem Satz werden in die beiden Quadwortregister in der Cache- Logik ausgegattert.
- Die Komparatoren 332 und. 334 vergleichen die reelle Adresse (von der TLB mit sowohl den reellen Adreßflaggen 322 und 326 von dem Cache-Datenpuffer. Wenn Übereinstimmung vorliegt, wird das entsprechende Wort von der passenden Leitung aus zu dem COR 230 gegattert. Bits < 3:2> werden verwendet, um das entsprechende Wort über Multiplexer 341 auszuwählen. Wenn das gültige Bit für eine Leitung aus ist, gibt es keine Übereinstimmung.
- Für Byte- oder Halbwortbelastungen liefert die Cache-MMU das gesamte Wort, und die CPU 110 wählt das Byte oder Halbwort. Für Byte- oder Halbwortspeicherung gibt es eine etwas kompliziertere Sequenz von Operationen. Das Byte oder Halbwort von der CPU 110 wird in dem CIR 240 plaziert, und gleichzeitig liest das Cache das Wort aus, in welches das Byte/die Bytes in dem COR 230 zu speichern ist/sind. Die Inhalte des CIR 240 und COR 230 werden dann gemischt und auf den Prozessor-/Cache-Bus plaziert.
- Wenn es eine Fehlübereinstimmung gibt (d.h. keine Übereinstimmung), wird die reelle Adresse über den Systembus 141 zum Hauptspeicher 140 gesandt, und im Rücklauf wird eine 16-byte-Leitung empfangen. Diese 16-byte-Leitung und ihre zugeordneten Flaggen ersetzen eine Leitung in dem Cache-Datenpuffer 321und 323. Das spezifische angeforderte Wort wird dann aus der Cache-MMU gelesen.
- Das Akkumulatorregister 310 dient als das Adreßregister in der Daten-Cache-MMU und als der Programmzähler in der Befehls-Cache-MMU. Die Funktion als entweder eine Befehls-Cache-MMU oder eine Daten-Cache-MMU wird durch Initialisierung des Systems oder durch Festverdrahtung bestimmt. Für eine monolithische integrierte Cache-MMU-Schaltungsausführung kann diese Entscheidung zu dem Zeitpunkt der abschließenden Umhüllung erfolgen (beispielsweise wie Abziehen eines bestimmten Stiftes von einer Spannung oder an Masse oder durch Laser-oder Ionenimplantierprozeduren). Alternativ kann es programmiert werden als Teil der Initialisierung des Chips durch das System (beispielsweise durch Laden von Werten entsprechend einem Initialisierungsprotokoll auf dem Chip. Der Registerakkumulator 310 speichert den Adreßausgang von der CPU 110. Wie zuvor beschrieben, hat diese Adresse 32 bit Länge, nämlich Bits 0 bis 31.
- Das Cache-Speicheruntersystem 320 ist in zwei gleiche Hälften unterteilt, markiert mit "W, 321" bzw. "X", 323". Jede Hälfte ist identisch und speichert mehrere Datenworte, die reelle Adresse für diese Daten und bestimmte Steuerinformation in Flaggenbits. Die interne Struktur des Cache ist in größeren Einzelheiten unter Bezugnahme auf Fig. 10 beschrieben. Jede Hälfte des Cache, W und X, liefert Adreßausgänge und Mehrfachdatenworte-Ausgänge über Leitungen 322 und 324 für Adreß- und Datenausgang von der W-Cache-Hälfte 321 sowie Adreß- und Datenausgänge 326 und 328 von der X-Cache-Hälfte 323.
- In der bevorzugten Ausführungsform hat der Datenausgang die Form von Quadwortausgang simultan parallel. Dies ist komplementär zu der Speicherstruktur von vier Worten in jeder Hälfte W und X des Cache für jede Leitung in der Cache-Hälfte, wie in Fig. 10 illustriert. Die Quadwortausgänge von den beiden Hälften W bzw. X des Cache sind an Quadwortleitungsregister 333 bzw. 335 angekoppelt. Die Anzahl von Worten in den Leitungsregistern entspricht der Anzahl von Worten, die pro Leitung in jeder Hälfte des Cache gespeichert sind. Die Adreßausgänge von jeder Hälfte des Cache W bzw. X 321 bzw. 323 werden auf jeweils einen Eingang von Komparatoren 332 bzw. 334 gekoppelt. Der andere Eingang jedes Komparators 332 und 334 ist an den Ausgang eines Multiplexers 347 angekoppelt, der einen reellen Adreßausgang mit Bits 31 bis 11 liefert. Die reelle Adresse, Bits 31 bis 11, wird über die Komparatoren 332 bzw. 334 mit den Ausgängen der Adreßschnittstelle von jeder der Cache-Hälften W 321 bzw. X 323 verglichen, um festzustellen, ob die angeforderte Adresse der Adresse entspricht, die in dem Cache 320 vorhanden ist oder nicht. Der Akkumulator 310 liefert einen Ausgang von Bits 10 bis 4 an das Cache-Speicheruntersystem, um so darin eine Leitung zu wählen. Die reelle Adresse, gespeichert in jener Leitung für jede Hälfte W und X des Cache- Speichers 320 wird aus der entsprechenden Hälfte über die zugeordnete Adreßausgangsleitung 322 und 326 zu den zugeordneten Komparatoren 332 bzw. 335 ausgegeben. Die Ausgänge von jedem der Leitungsregister 333 und 335 sind auf den Multiplexer 341 gekoppelt. Das Akkumulatorregister 310 liefert den Ausgang von Bits 3 und 2 zum Auswählen eines von vier aufeinanderfolgenden Worten von den Quadwortspeicherleitungsregistern 333 und 335.
- Das ausgewählte Wort von jedem der Zeilenregister wird von Multiplexer 341 an Multiplexer 343 ausgegeben. Die Auswahl, von welchem Leitungsregister, d.h. 333 oder 335, ein Ausgang vom Multiplexer 343 auszugeben ist, wird in Reaktion auf die Anpassung/Fehlanpassungsausgänge der Komparatoren 332 und 334 bestimmt. Der Multiplexer 343 koppelt die Datenausgangsbits 31 bis 0 an den Prozessor-Cache-Bus über das Cache-Ausgangsregister 230 der Fig. 4. Die Anpassungs-/Fehlanpassungssignalausgänge von den Komparatoren 332 und 334 zeigen einen Cache-Treffer an (d.h. daß es jene angeforderte reelle Adresse ist, die in dem Cache vorhanden war, und daß die Daten gültig waren, oder einen Cache-Fehltreffer, d.h. angeforderte Daten nicht in dem Cache vorhanden, für die jeweils entsprechende Hälfte des Cache W (321) bzw. X (323). Die reellen Adreßbits 31 bis 11, die auf die Komparatoren 332 und 334 von dem Multiplexer 337 gekoppelt werden, werden durch einen Verkettungsprozeß aufgebaut, illustriert bei 348. Der Ausgang Bit 11 des Registerakkumulators 310 wird entsprechend in dem satzassoziativen Tabellieren zu dem reellen Adreßbit 11 verkettet mit den Realadreßausgangsbits 31 bis 12 von dem Multiplexer 345 des TLB 270.
- Das TLB 270 der Fig. 8 ist in größeren Einzelheiten in Fig. 9 gezeigt als einen Umsetzlogikblockspeicher 350 umfassend mit einer W-Häflte 352 und einer identischen X-Hälfte 354, wobei jede mehrere Speicherleitungen hat und jede Leitung eine virtuelle Adresse, Statusflaggenbits, eine reelle Adresse enthält. Jede Hälfte liefert einen virtuellen Adreßausgang und einen Realadreßausgang. Der virtuelle Adreßausgang von der W-Hälfte des TLB-352 ist an Komparator 362 gekoppelt. Der virtuelle Adreßausgang der X-Hälfte 354 ist an Komparator 364 gekoppelt. Der andere Eingang der Komparatoren 362 bzw. 364 ist gemeinsam an den Registerakkumulator 310 mit Ausgängen Bits 31 bis 18 gekoppelt. Eine Leitung wird in dem TLB ausgewählt in Reaktion auf die Ausgangsbits 17 bis 12 des Registerakkumulators 310, der eine der Leitungen in dem TLB als aktiv ausgewählte Leitung auswählt. Der virtuelle Adreßausgang von den TLB-W bzw. -X-Hälften 352 bzw. 354 entspricht der ausgewählten Leitung. Die Anpaßausgangsleitungen von den Komparatoren 362 und 364 sind jeweils an Auswähleingänge eines Multiplexers 345 angekoppelt, der einen Realadreßausgang von Bits 31 bis 12 zu der Verkettungslogik 348 für selektive Passage zum Multiplexers 347 usw. liefert. Die Realadreßausgänge für die ausgewählte Leitung (d.h. für beide Hälften) des TLB 350 sind an den Multiplexer 345 angekoppelt. Bei einem TLB-Treffer, wenn es eine Anpassung auf einer der Hälften W oder X des TLB gibt, liefert der entsprechende Komparator ein Anpassungssignal an den Multiplexer 345, um die reale Adresse für die Hälfte des TLB auszuwählen, der die Anpassung der virtuellen Adressen hatte, um seinen Realadreßausgang vom Multiplexer 345 der Verkettungslogik 348 zuzuführen. Im Falle einer TLB-Fehlanpassung wird ein TLB-Fehlsignal 372 an die Direktadreßumsetzeinheit 370 gekoppelt. Der DAT 370 liefert einen Seitentabellenzugriff, wie bei 374 illustriert, und bewirkt einen Ersatz der TLB-Leitungen, wie bei 375 illustriert. Die Operation des DAT wird in größeren Einzelheiten später hier beschrieben. Bei einem Cache-Fehltreffer werden die angeforderten adressierten Daten innerhalb des Cache ersetzt, wie über Leitung 325 angedeutet.
- Gemäß Fig. 10A ist die Organisation des Cache-Speichersystems illustriert. Das Cache-Speichersystem 320 besteht aus drei Feldern, einem Feld Benutztes Bit (Used bit) und zwei identischen Hochgeschwindigkeits-Lese/Schreibspeicherfeldern W und X. Das erste Feld 329 besteht aus einem U- (used)-Bitspeicher, der anzeigt, ob die W- oder X-Hälfte als letzte Hälfte für die Adresse der Leitung des Cache-Speichers 320 benutzt worden war. Die W- und X-Speicher enthalten jeweils mehrere Leitungen (beispielsweise 128 Leitungen). Das U-Speicherfeld 329 hat dieselbe Anzahl von Leitungen (beispielsweise 128 Leitungen). Die Speichermatrizen W und X des Cache-Speicheruntersystems 320 können in mehrere Ebenen expandiert werden (d.h. mehr als zwei gleiche Blöcke), wobei die Größe des U-Speicherworts sich entsprechend ändert.
- Jede Leitung in jeder Cache-Speicheruntersystemhälfte W bzw. X enthält mehrere Felder, wie in Fig. 10B gezeigt. Jede Leitung in dem W- oder X-Untersystemspeicher enthält ein Entsperrbit "E", ein Leitungsgültigkeitsbit "LV", ein Leitungsverschmutzungsbit "LD", ein Realadreßfeld "RA" und mehrere Datenworte "DT". Das Entsperrbit zeigt, wenn gesetzt, daß die entsprechende zugeordnete Leitung funktionell ist. Ein Rücksetzentsperrbit zeigt, daß die entsprechende zugeordnete Leitung nicht betriebsfähig ist. Ein Rücksetzentsperrbit resultiert in einem Cache-Fehler für versuchten Zugriff auf die betreffende Leitung. Für Cache-MMUs in Form einer monolithisch integrierten Schaltung kann das Entsperrbit eine Leseeinstellung nach abschließendem Test als Teil des Herstellungsprozesses sein. Das Leitungsgültigkeitsbit LV zeigt, ob die gesamte laufende Leitung bei einem Kaltstart zu invalidieren ist oder nicht beim Eingangs/Ausgangsschreiben oder unter Prozessorkommando. Das Leitungsverschmutzungsbit LD zeigt, ob eine entsprechende zugeordnete laufende Leitung des Cache-Speicheruntersystems durch den Prozessor verändert worden ist (d.h. der Hauptspeicher ist nicht laufend). Das Realadreßfeld, illustriert als 21 Bits, umfaßt die höchststelligen 20 Bits für die Realadresse im Hauptspeicher des ersten gespeicherten Datenworts, das folgt. Auf die Mehrdatenworte, illustriert als vier Worte CTO bis DT4, wird von dem Prozessor anstatt Hauptspeicher zugegriffen. Jedes Datenwort enthält mehrere Bits, beispielsweise 32 Bits.
- Wie in Fig. 11A dargestellt, besteht das TLB-Untersystem 350 aus drei Feldern, einem benutzten ("used" = U) Feld 359 und dualen Hochgeschwindigkeits-Lese/Schreib-Speicherfeldern, den W- bzw. X-Speicheruntersystemen. Die W- und X-Speicheruntersysteme sind Äquivalente, welche zwei Hälften des Cache-Speichers bilden. Wie dargestellt, enthält jede Hälfte 64 Zeilen von adressierbarem Speicher mit 47-bit-langen Worten und stritzt die Virtuelle-zur-reellen-Adresse-Umsetzung. Das U-Feld jeder Zeile arbeitet in einer Weise ähnlich jene, die unter Bezugnahme auf Fig. 10A beschrieben ist.
- Wie in Fig. 11b dargestellt, besteht jede Speicherzeile in W und X aus einem 14 bit umfassenden virtuellen Adreßfeld "VA", einem 20-bit-Realadreßfeld "RA", einem Überwachungsgültigkeitsbitfeld, einem Benutzergültigkeitsbit-UV-Feld, einem Verschmutzungsbit-"D"-Feld, einem Referenzbit "R", einem Schutzniveauwort-"PL"-Feld, dargestellt als vier Bits, und einem Systemanhangfeld "ST", dargestellt als fünf Bits.
- Der TLB ist ein Typ von inhaltsadressierbarem Speicher, der innerhalb eines MCLK-Zyklus gelesen werden kann. Er ist als ein satzassoziativer Puffer organisiert und besteht aus 64 Sätzen von jeweils zwei Elementen. Die niedrigstelligen 6 Bits der virtuellen Seitenadresse werden verwendet, um einen Satz auszuwählen, d.h. eine Speicherzeile. Danach werden die oberen 14 Bits der virtuellen Adresse verglichen (d.h. 362 und 364) mit dem Schlüsselfeldausgang VA von beiden Elementen 352 und 354 des Satzes. Bei einem TLB-Treffer wird das Realadreßfeld (20 Bits) RA der TLB-Zeileneingabe, welches paßt, über Multiplexer 345 ausgegeben zusammen mit den zugeordneten Systemanhängern und Zugriffschutzbits. Eine TLB-Umsetzsuche wird in Reaktion auf 14 Bits der virtuellen Adresse gültigen Überwacher und gültigen Benutzer bereitgestellt.
- Wie in Fig. 12 dargestellt, ist der Cache-Speicher auf einer Quadwortbegrenzung organisiert. Vier adressierbare Worte des Realadreßspeichers sind in jeder Zeile für jede Hälfte (d.h. W und X) des Cache-Speichersystems 320 gespeichert. Das Cache-Speicheruntersystem liefert Quadwortausgang auf den Quadwortbegrenzungen, um weiter die Cache- Zugriffszeit zu beschleunigen. Wenn beispielsweise bei einer Ladeoperation die laufende Adresse sich innerhalb der Quadbegrenzung der vorhergehenden Adresse befindet, dann ist die Cache-Zugriffszeit minimal (beispielsweise zwei Taktzyklen). Wenn die laufende Adresse jenseits der Quadbegrenzung der vorhergehenden Adresse ist, ist die Cache-Zugriffszeit länger (beispielsweise vier Taktzyklen).
- Wie an anderer Stelle in größeren Einzelheiten diskutiert, ist der TLB reserviert für das Bereitstellen festverdrahteter Umsetzlogik für kritische Funktionen. Dies ergibt eine extrem hohe garantierte Geschwindigkeit der Hauptspeicher-Virtual/Real-Tabellierung und Umsetzmöglichkeit. Die festverdrahteten Umsetzlogikblockfunktionen sind in Fig. 13 illustriert. Jede Zeile enthält Information, wie in Fig. 11B angegeben. Die Umsetz- und Systeminformation wird für kritische Funktionen vorgesehen, wie Vorrats-ROM, Speicherverwaltung, Eingang/Ausgang, Vektoren, Betriebssystem und reservierte Speicherplätze, anwendungsreservierte Speicherplätze, wie oben in größeren Einzelheiten unter Bezugnahme auf Fig. 11A-B diskutiert.
- Zusätzlich zu dem Lese/Schreib-TLB gibt es acht festverdrahtete Virtuell/Real-Umsetzungen, wie unter Bezugnahme auf Fig. 13 diskutiert. Einige dieser Umsetzungen sind auf reale Seiten 0 bis 3 tabelliert. Seite 0 im virtuellen Raum, die erste Seite am unteren Ende des Realspeichers, wird für Fallen- und Interruptvektoren benutzt. Seiten 1 bis 3 werden als eine geteilte Fläche für Initialisierung des Systems benutzt. Seiten 6 und 7 werden für Bootstrap-System-ROM und Seiten 4 und 5 für speichertabellierte Eingänge/Ausgänge benutzt. Diese acht Seiten Umsetzungen werden nur im Überwachungsmodus verwendet. Als Ergebnis dieser Festverdrahtungen in dem TLB wird niemals eine Fehlanpassung oder ein Seitenversagen in den ersten acht virtuellen Seiten des Systemraums auftreten.
- Die PL-Bits indizieren das Schutzniveau der Seite. Der Funktionscode, der die VA (virtuelle Adresse) von der CPU begleitet, enthält den Speicherreferenzmodus. Diese Moden werden mit den PL-Bits verglichen, und wenn eine Verletzung erkannt wird, wird eine CPU-Falle erzeugt.
- Die Cache-MMU ermöglicht Speicherzugriffschutz durch Überprüfen der vier Schutzbits (PL) in dem TLB-Eingang oder dem Seitentabelleneintrag. Dies wird bewirkt durch Vergleichen des Überwachungs/Benutzerbits und K-Bit in dem Überwachungsstatuswort (SSW) mit dem Zugriffscode, und wenn eine Verletzung vorliegt, wird der Zugriff verweigert und der CPU eine Falle erzeugt.
- Die virtuelle Adresse, welche die Falle bewirkt, wird in einem Register aufgehoben und kann mit einem Eingangs/Ausgangs-Befehl gelesen werden.
- Es gibt drei einzigartige Fallen, die erzeugt werden:
- 1. Befehlsaufrufzugriffverletzung - nur Befehls-Cache.
- 2. Lesezugriffverletzung - nur Daten-Cache.
- 3. Schreibzugriffverletzung - nur Daten-Cache.
- worin: RW = Lesen/Schreiben,
- E = Befehlsexekution,
- - = kein Zugriff,
- S = Überwacher/Benutzer, und
- K = Schutz
- Das Verschmutzungsbit (D) in der Daten-Cache-Zeile zeigt an, daß die Zeile modifiziert worden ist, seit sie aus dem Hauptspeicher gelesen wurde.
- Das Verschmutzungsbit in dem TLB zeigt an, daß eine oder mehrere Worte in der betreffenden Seite modifiziert worden sind.
- Wenn ein Wort in das Cache zu schreiben ist, wird das Verschmutzungsbit in der Zeile gesetzt. Wenn das Verschmutzungsbit in dem TLB nicht gesetzt ist, wird es dann gesetzt, und die Zeile in dem TLB wird in die Seitentabelle zurückgeschrieben. Wenn das Verschmutzungsbit in dem TLB bereits gesetzt ist, wird die Seitentabelle nicht aufgefrischt. Dieser Mechanismus wird automatisch die Seitentabelle auffrischen, wenn das Verschmutzungsbit erstmals die Seite modifiziert.
- Das Referenzbit (R) in dem TLB wird verwendet um anzuzeigen, daß die Seite mindestens einmal durch einen Lese- oder Schreibvorgang angesprochen wurde. Derselbe Ansatz, der für das D-Bit benutzt wird, wird für das Auffrischen des R-Bit in dem Seitentabelleneintrag verwendet.
- Die gültigen Bits (SV, UV) werden verwendet, um die Zeile zu invalidieren. Bei einem Kaltstart werden sowohl SV als auch UV auf null gesetzt. Bei einem Kontextschalter von einem Benutzer zu einem anderen wird UV auf null gesetzt. UV wird nicht rückgesetzt, wenn man vom Benutzer zum Überwacher geht oder zurück zu dem selben Benutzer.
- Eine 20-bit-Realadresse (RA) wird ebenfalls bei jeder Speicherstelle gespeichert. Wenn die virtuelle Adresse eine Anpassung zeigt, wird die reale Adresse zu dem Cache für Vergleich oder zu dem SOR gesandt.
- Wenn das System im nicht-tabellierten Modus läuft (d.h. keine virtuelle Adressierung), ist der TLB nicht aktiv, und die Schutzschaltkreise sind gesperrt.
- Der TLB reagiert auf die folgenden speichertabellierten Eingangs/Ausgangs-Befehle:
- o Rücksetzen von gültigen TLB-Überwachungsbits - Alle SV-Bits in dem TLB werden rückgesetzt.
- o Rücksetzen von gültigen TLB-Benutzerbits - Alle UV-Bits in dem TLB werden rückgesetzt.
- o Rücksetzen D-Bit - Alle Verschmutzungsbits (D) werden in dem TLB auf null gesetzt.
- o Rücksetzen R-Bit - Alle referenzierten (R)-Bits werden in dem TLB auf null rückgesetzt.
- o Lesen TLB Oben - Höchststelliger Teil der adressierten TLB-Speicherstelle wird der CPU gelesen.
- o Lesen TLB Unten - Niedrigststelliger der adressierten TLB-Speicherstelle wird der CPU gelesen.
- o Schreiben TLB Oben - Höchststelliger Teil der adressierten TLB-Speicherstelle wird von der CPU beschrieben.
- o Schreiben TLB Unten - Niedrigststelliger Teil der adressierten TLB-Speicherstelle wird von der CPU beschrieben.
- Speichertabellierter Eingang/Ausgang zu der Cache-MMU geht durch die virtuelle Seite 4.
- Die Systemanhänger werden von dem System benutzt, um die Cache-MMU-Strategie für das Schreiben zu ändern (d.h. Rückkopieren oder Durchschreiben) für das Entsperren der Cache-MMU und das Handhaben von Eingängen/Ausgängen. Die Sytemanhänger befinden sich in den Seitentabellen und der TLB. Systemanhänger
- R = Referenzbit, D = Verschmutzungsbit.
- Fünf der Systemanhänger werden nach außerhalb der Cache-MMU für Decodierung durch das System gebracht. Anhänger T2 wird verwendet, um zwischen Bootstrap- und Eingangs/Ausgangsraum zu unterscheiden. Anhänger T4 wird verwendet, um zwischen Speicherraum und Vorrats- oder Eingangs/Ausgangsraum zu unterscheiden. Das UNIX-Betriebssystem (beispielsweise UNIX) kann die Anhänger T0 und T1 verwenden. Deshalb können T0 und T1 nicht von Systemkonstrukteuren benutzt werden, solange nicht von dem Betriebssystem bekannt ist, daß es sie nicht benutzt. Diese vier Anhänger sind nur gültig, wenn die Cache-MMU den Systembus belegt hat. Diese Signale werden gemeinsam mit Anhängern von anderen Cache-MMUs auf Busse gelegt.
- ST (0,0,1,X,X,X,X): Gemeinsam Durchschreiben.
- Wenn die virtuelle Seite 0 in dem TLB im Überwachungsmodus erkannt wird, wird die Seite 0 des Realspeichers zugeordnet. Diese erste Seite des Realspeichers kann RAM oder ROM sein und enthält Vektoren für Fallen und Interrupts. Die festverdrahtete Umsetzung tritt nur im Überwachungsstatus auf. Die höchststelligen 20 Bits der realen Adresse sind null.
- ST (1,X,1,X,X,X,X)
- Wenn Seiten 6 und 7 im virtuellen Speicher adressiert werden, werden die Systemanhänger von dem festverdrahteten Puffer ausgegeben. Diese Umsetzung erfolgt nur im Überwachungszustand. Seiten 6 und 7 des virtuellen Speichers tabellieren sich in Seiten 0 und 1 des Vorratsspeichers.
- Die höchststelligen 19 Bits der realen Adresse sind null, und Bit 12 ist eine 1 für Seite 1 des Vorratsspeichers und eine 0 für Seite 0.
- Der Vorratsspeicherrealraum ist nicht in dem Realspeicherraum. ST (1,X,0,X,X,X,X) - Speichertabelliert Eingang/Ausgang
- Seiten 4 und 5 in dem virtuellen Raum, wenn im Überwachungsmodus, haben in dem TLB eine festverdrahtete Umsetzung. Die höchststelligen 19 Bits der umgesetzten Realadresse sind null. Das Eingangs/Ausgangssystem muß die Systemanhänger T2 und T4 decodieren, welche speichertabellierten Eingang/Ausgang anzeigen. Eine weitere Decodierung der höchststelligen 20 Bits der Realadresse kann für zusätzliche Seiten der Eingangs/Ausgangsbefehle verwendet werden. Jede reale Seite hat 1024 Befehle, ausgeführt durch Lesen (Wort) und Schreiben (Wort) in der entsprechenden Speicherstelle.
- Wenn diese festverdrahtete Seite in dem TLB oder dem Seitentabelleneintrag erkannt wird, wird auf das Lese- oder Schreibkommando eingewirkt, als handelte es sich um ein nicht cachierbares Lesen oder Schreiben.
- Die Verwendung und Zuordnung des Eingangs/Ausgangsraums ist wie folgt:
- Eingang/Ausgang im Überwachungsmodus, tabelliert oder untabelliert, Seiten 4 und 5.
- Seiten 4 und 5 des virtuellen Adreßraums werden in Seiten bzw. 1 des Eingangs/Ausgangsadreßraums durch die festverdrahteten TLB- Einträge tabelliert. Seite 4 wird für Befehle an den Cache-Chip verwendet.
- Eingang/Ausgang im Überwachungsmodus, tabelliert, zusätzliche Seiten.
- Eingangs/Ausgangsraum kann auch in der Seitentabelle definiert werden. Der Eingangs/Ausgangsbefehl wird durch die entsprechenden Anhängerbits identifiziert. Irgendeine virtuelle Adresse, ausgenommen Seiten 0 bis 7, kann in eine Eingangs/Ausgangseite, die 0 und 1 nicht enthält, tabelliert werden.
- Eingangs/Ausgangsraum in dem Cache.
- Eine Eingangs/Ausgangsadresse, gerichtet auf den Cache-Chip, sollte wie folgt interpretiert werden:
- ST (0,1,0,X,X,D,R) - Privat, Rückkopieren
- A. LV ist 1 und TREFFER: Wort in Zeile schreiben und Zeile setzen und Seitenverschmutzungsbit
- B. Fehlpassung - Zeile durch Nicht Verschmutzt zu ersetzen: Lese Quadwort aus Speicher und speichere in Zeile. Schreibe Wort in neue Zeile und setze Zeile und Verschmutzungsseite.
- C. Fehlpassung - Zeile durch Verschmutzung zu ersetzen: Schreibe verschmutzte Zeile zurück in Speicher. Lese neues Quadwort in die Zeile. Schreibe Wort in neue Zeile und setze Zeile und Verschmutzungsseite.
- ST (0,0,0,X,X,D,R) - Privat, Durchschreiben
- A. LV ist 1 und TREFFER: Schreibe Datenwort in Zeile und Speicher. Setze Seitenverschmutzungsbit.
- B. Fehlpassung - Schreibe Wort in Speicher und setze Seitenverschmutzungsbit.
- ST (0,0,1,X,X,D,R) - Gemeinsam, Durchschreiben
- A. LV ist 1 und TREFFER: Schreibe Datenwort in Zeile und Speicher. Setze Seitenverschmutzungsbit.
- B. Fehlpassung: Schreibe Wort in Speicher und setze Seitenverschmutzungsbit.
- ST (0,1,1,X,X,D,R) Nicht cachierbar
- A. Schreibe Wort in Hauptspeicher. Wenn Treffer, dann reinigen.
- ST (0,1,0,X,X,D,R) - Privat, Rückkopieren
- A. LV ist 1 und TREFFER: Schreibe Byte oder Halbwort in Zeile und setze Zeile und Seitenverschmutzungsbit.
- B. Fehlpassung: Zu ersetzende Zeile ist Nicht Verschmutzt. Lese Quadwort aus Speicher und speichere in Zeile. Schreibe Byte oder Halbwort in neue Zeile und setze Zeilen und Seitenverschmutzung.
- C. Fehlpassung und zu ersetzende Zeile ist Verschmutzt: Schreibe Zeile in Speicher zurück. Lese neues Quadwort in die Zeile. Schreibe Byte oder Halbwort in neue Zeile und setze Zeilen und Seitenverschmutzung.
- ST (0,0,0,X,X,D,R) - Privat, Durschreiben
- A. TREFFER: Schreibe Byte oder Halbwort in Zeile. Kopiere modifiziertes Wort von Cache-Zeile in Speicher.
- B. FEHLPASSUNG: Lese Wort. Modifiziere Byte oder Halbwort. Schreibe modifiziertes Wort von Cache-Zeile in Speicher (Lesen/Modifizieren/Schreiben-Zyklus). (Keine Schreibzuordnung).
- ST (0,0,1,X,X,D,R) - Gemeinsam, Durchschreiben
- A. LV ist 1 und TREFFER: Schreibe Byte oder Halbwort in Zeile. Schreibe modifiziertes Wort von Cache-Zeile in Speicher.
- B. FEHLPASSUNG. Lese Wort. Schreibe Byte oder Halbwort in Zeile. Schreibe modifiziertes Wort von Cache-Zeile in Speicher (Lesen/Modifizieren/Schreiben-Zyklus). (Keine Schreibzuordnung).
- ST (0,1,1,X,X,D,R) - Nicht cachierbar
- A. Lese Wort in Cache-Chip. Auffrischen des angemessenen Byte/Halbworts und Schreiben des modifizierten Wortes zurück in den Hauptspeicher.
- ST (0,1,1,X,X,D,R) - Nicht cachierbar.
- Lese Hauptspeicherstelle, teste und modifiziere Wort und speichere an gleicher Stelle zurück. Führe Ursprungswort zur CPU zurück. Speicherbus ist Cache zugeteilt, bis diese Operation beendet ist. Wenn der folgende Systemanhänger auftritt, während dieser Befehl ausgeführt wird, tritt eine Fehlerbedingung auf.
- 1 X X X X X X (m/m Eingangs/Ausgangsraum oder Reserveraum)
- ST (0,1,0,X,X,D,R) - Privat, Rückkopieren
- A. LV ist 1 und TREFFER: Lese Wort von Cache an CPU.
- B. Fehlpassung - Zu ersetzende Zeile Nicht Verschmutzt: Lese neues Quadwort von Speicher in Cache. Lese Wort an CPU.
- C. Fehlpassung - Zu ersetzende Zeile ist Verschmutzt: Schreibe Zeile zurück in Speicher. Lese neues Quadwort vom Speicher in Cache. Lese Wort an CPU.
- ST (0,0,X,X,D,R) oder ST (0,0,1,X,X,D,R,) - Durchschreiben
- A. LV ist 1 und TREFFER: Lese Wort von Cache an CPU.
- B. Fehlpassung: Lese neues Quadwort in Zeile. Lese Wort in CPU.
- ST (0,1,1X,X,D,R) - Nicht cachierbar
- A. Lese Wort von Hauptspeicher an CPU.
- ST (0,0,1,X,X,D,R) - Gemeinsam, Durchschreiben
- Alle Caches überprüfen den Bus, und wenn es einen Treffer gibt, wird die Zeile im Cache invalidiert. Wenn es keinen Treffer gibt, ignoriere den Bus.
- Wenn ein Eingangs/Ausgangssystem Daten aus dem Cache oder Hauptspeicher liest, wird die reale Adresse von dem Cache überprüft, und die folgende Aktion erfolgt. Auf den TLB wird nicht zugegriffen.
- A. LV ist 1 und TREFFER, und LD ist 1: Lese ein Wort oder eine Zeile von Cache an Eingang/Ausgang.
- B. FEHLPASSUNG: Lese ein Wort, Quadwort oder 16 Worte von Speicher an Eingang/Ausgang.
- Wenn ein Eingang/Ausgang zum Hauptspeicher erfolgt, wird die reale Adresse von dem Cache überprüft, und die folgende Aktion erfolgt. Auf den TLB wird nicht zugegriffen, und deshalb wird das Verschmutzungsbit in der Seitentabelle oder dem TLB nicht geändert.
- A. LV ist und 1 und TREFFER: Schreibe ein Wort, Quadwort oder 16 Worte von Eingang/Ausgang zum Speicher. Invalidiere Zeile oder Zeilen im Cache.
- B. FEHLPASSUNG: Schreibe ein Wort, Quadwort oder 16 Worte von Eingang- Ausgang in Speicher.
- Virtuelladreß-zur-Realadreß-Tabelliersysteminformation wird ausschließlich in jeder Zeile von jeder der W- und X-Hälften des Cache- Speicheruntersystems gespeichert. Dies sorgt für extrem geschwinde Umsetzung virtueller in reale Adressen zum Beschleunigen der Tabellierung des virtuellen in den realen Adreßraum, um so notwendige Eingangs/Ausgangsprozeduren mit sekundären Speichersystemen zu erleichtern, wie durch den Eingangs/Ausgangsprozessor 150 der Fig. 1. Die Systeminformation in jeder Speicherzeile des TLB-Speicheruntersystems 350 liefert alle notwendige Schutz- und Rückschreibinformation. Das verwendete Bit für jede Untersystemzeile liefert eine Anzeige für das Rückschreiben in die jüngst benutzte Hälfte des Speicheruntersystems. Andere Austauschstrategien könnten implementiert werden.
- Wo eine hachgeschwinde Kommunikationsstruktur vorgesehen ist, wie in einer monolithisch integrierten Cache-MMU, begünstigt diese Cache-MMU-Systemarchitektur sehr schnelle Cache-System-Operation und sorgt für große Anwendungsvielseitigkeit.
- Wie in Fig. 14 dargestellt, kann die Quadwortbegrenzung mit Vorteil in einer Zeilenregisterarchitektur verwendet werden. Die Speichermatrix des Cache-Speichers 320 der Fig. 9 ist mit einem Zeilenregister 400 gekoppelt, das vier Worte vom Wortspeicher innerhalb einer Zeilenbegrenzung enthält. Das Cache-Speicher 320 gibt jeweils vier Worte pro Cache-Treffer an das Zeilenregister 400 aus, das selektiv den Quadwortausgang von dem Cache-Speicheruntersystem 320 speichert und es zu dem Cache-Ausgangsregister weitergibt, wie COR 230 der Fig. 8. Dieser Transfer endet, wenn der "Quadbegrenzung-gleich-null"-Komparatorausgang auftritt. Der Ausgang des Cache-Ausgangsregisters der Systemschnittstelle des Cache-MMU-Systems wird danach an den Adreßdatenfunktionscodebus (d.h. ADF) des Prozessor-/Cache-Bus (d.h. Bus 121 oder 131) und Bus 115 der Fig. 1) angekoppelt.
- Das Akkumulatorregister (d.h. 310 der Fig. 9) ist auch an den Prozessor/Cache-Schnittstellenbus angekoppelt, um Adreßinformation von diesem zu erhalten. Wenn die Cache-Speicherverwaltungseinheit als Daten- Cache konfiguriert ist, speichert das Akkumulatorregister die Adresse von dem Prozessor-/Cache-Bus für die Verwendung durch das Cache-Speicheruntersystem. Wenn als Befehls-Cache konfiguriert, wird das Akkumulatorregister 310 als Programmzähler konfiguriert, um sowohl Adreßinformation von dem Prozessor/Cache-Schnittstellenbus zu empfangen, als auch sich selbst zu inkrementieren, bis eine neue autorisierte Adresse von dem Prozessor-/Cache-Bus empfangen wird.
- Der Ausgang von dem Akkumulatorregister 310 ist an ein Quadzeilengrenzenregister 410 angekoppelt, an Quadgrenzenkomparator 420 und an Zustandssteuerlogik 430. Das Quadwortzeilenbegrenzungsregister 410 speichert die Startadresse der Quadwortzeilenbegrenzung für die in dem Zeilenregister 400 gespeicherten Worte.
- Der Ausgang des Quadwortzeilenbegrenzungsregisters 410 ist mit dem Quadwortzeilenbegrenzungskomparator 420 gekoppelt. Der Komparator vergleicht den Ausgang des Registers 410 mit dem virtuellen Adreßausgang des Adreßregisters (d.h. Akkumulatorregister 310), um festzustellen, ob das angeforderte Wort sich innerhalb der laufenden Quadwortbegrenzung für das Zeilenregister 400 befindet. Die Zustandssteuerlogik 430 bestimmt dann die Auswahl von entweder dem Zeilenregisterausgang 400 oder den Zugriff auf das Cache-Speicheruntersystem 320. Die Steuerlogik 430 multiplexiert dann selektiv zum Auswählen des entsprecherden Wortes von den Zeilenregistern.
- Fig. 15 illustriert die Ladezeitlage für das Cache-MMU-System 120 und 130 der Fig. 1. In der bevorzugten Ausführungsform handelt es sich um Daten innerhalb Quadwort- oder 16-Wort-Begrenzungen. Alternativ kann dies für irgendeine Blockgröße von Daten erfolgen. Fig. 15 illustriert die Operation des Ladens des Daten-Cache 130 aus der CPU 110 oder alternativ des Befehls-Cache 120 bei einer Verzweigungsoperation. Der Muttertakt-MCLK-Signalausgang des Systemtakts 160 der Fig. 1 ist oben in der Fig. 15 gezeigt mit einer Zeitkarte, die 0, 30, 60, 90 und 120 Nanosekunden (d.h. ns) Punkte vom Start des Ladezyklus aus zeigt.
- Zu Beginn dieses Zyklus wird eine gültige Adresse aus der CPU in das Akkumulatorregister des jeweiligen Cache-MMU-Systems geladen, und ein Funktionscode wird bereitgestellt zur Anzeige des Typs von Transfer, wie in größeren Einzelheiten an anderer Stelle diskutiert. Der Ons-Punkt erscheint, wenn das ASF-Signal gültig ist und anzeigt, daß eine Adreßabtastung im Gange ist. Wenn die angeforderten Daten in einer Quadzeilenbegrenzung für einen neuen Zugriff sind, stehen Daten zur Verfügung auf halbem Punkt zwischen den 90- und 120- Nanosekunden-Punkten von MCLK. Wenn jedoch der Zugriff für eine Anforderung innerhalb einer Quadwortbegrenzung vorliegt, ist die Datenzugriffszeit viel schneller (beispielsweise an dem 60-ns-Punkt), wie in gestrichelten Linien bei der ADF-Signalwellenform gezeigt, was einen Datentransfer innerhalb einer Quadzeilenbegrenzung anzeigt.
- In Fig. 16 ist eine Speicheroperation für die Cache-MMU-Systeme 120 und 130 der Fig. 1 für die Speicherung von der CPU zu dem Cache in einem Rückkopiermodus illustriert und zusätzlich zu dem Hauptspeicher 140 für den Durchschreibmodus. Der Muttertakt MCLK wird von dem Systemtakt 160 ausgegeben, wie in Fig. 15 als Referenzzeile dargestellt. Zum Zeitpunkt T1 wird das Adreßabtastsignal aktiviert zur Anzeige, daß eine gültige Adresse folgt. Zum Zeitpunkt T2, etwa ein Viertel MCLK-Taktzyklus später, werden die gültige Adresse und der Funktionscodeausgang auf den entsprechenden Leitungen des Prozessor-/Cache-Schnittstellenbus PDF bzw. FC empfangen. Zum Zeitpunkt T3 sind die Adreßleitungen im dritten Zustand (schwimmend), und Daten werden in den Cache-Speicher und/oder den Hauptspeicher eingeschrieben, je nach dem. Mehrere Datenworte können transferiert werden. Einzel-, Quad- oder 16-Wort-Modus werden durch den Funktionscode auf den FC-Leitungen bestimmt. Zum Zeitpunkt T4 wird der Reaktionscode ausgegeben zur Anzeige dafür, daß der Transfer vollständig ist und der Zyklus endet.
- Sowohl Rückkopier- als auch Durchschreibhauptspeicher-Auffrischstrategien sind in der Cache-MMU verfügbar und können auf einer Seitenbasis vermischt werden. In den Seitentabellen lokalisierte Steuerbits werden in den TLB geladen, um zu bestimmen, welche Strategie verwendet wird.
- Rückkopieren ergibt im allgemeinen höhere Leistung. Daten werden in den Hauptspeicher nur dann zurückgeschrieben, wenn sie von der Cache-MMU entnommen werden. Jene Schreibvorgänge können weitgehend mit Abrufen von Blöcken in das Cache überlappen. Demgemäß wird im allgemeinen das Rückkopieren den Busverkehr begrenzen und Verzögerungen infolge Schlangenbildung bei sukzessiven Schreibvorgängen minimieren.
- Durchschreiben hat zwei Vorteile. Erstens ist der Hauptspeicher immer auf dem laufenden, die Systemverläßlichkeit wird verbessert, da ein Cache-Chip- oder Prozessorfehler nicht den Verlust des Inhalts des Hauptspeichers bewirken wird. Zweitens erleichtert in einem Mehrprozessorsystem das Durchschreiben die Aufrechterhaltung der Konsistenz zwischen einem unter den Prozessoren geteilten Hauptspeicher. Das Betriebssystem kann diese Anhänger machen, welche Durchschreiben gegenüber Rückkopieren bestimmen, was den Benutzern verfügbar ist, so daß sie die entsprechende Wahl treffen können.
- Fig. 17A-B illustrieren den Datenfluß der Operationen zwischen der CPU 410, der Cache-MMU 412 und dem Hauptspeicher 414. Gemäß Fig. 17A ist der Datenfluß für einen schnellen Rückkopierschreibvorgang illustriert. Die CPU 410 gibt Daten für Speicherung in der Cache-Speicherverwaltungseinheit 410 aus. Dies verschmutzt den Inhalt des Cache-Speichers für die betreffende Stelle. Bei einer Reinigung schreibt die Cache-Speicherverwaltungseinheit 412 die verschmutzten Daten erneut in die entsprechende private Seite im Hauptspeicher 414. Der Prozessor 410 kann gleichzeitig neue Daten in die Cache-MMU-412-Speicherstellen schreiben, die gereinigt worden sind. Dies bewirkt den Vorteil einer insgesamt schnellen Betriebsweise beim Schreiben.
- In Fig. 17B ist der Durchschreibbetriebsmodus illustriert. Dieser Modus hält die Datenkonsistenz aufrecht auf Kosten einer gewissen Gesamtschreibgeschwindigkeit. Die CPU 410 schreibt gleichzeitig in den Cache-Speicher der Cache-Speicherverwaltungseinheit 412 und in die geteilte Seite des Hauptspeichers 414. Dies stellt sicher, daß die Daten, die an irgendeiner bestimmten Stelle in der geteilten Seite gespeichert sind, den jüngsten Wert aufweisen, wie durch andere Programme aufgefrischt.
- In Fig. 18 sind der Datenfluß und die Datenflußwechselwirkung der CPU 510 des Cache-Speicheruntersystems 512 und des TLB/Speicheruntersstems 514 illustriert. Auch ist die Wechselwirkung der Cache-MMU und CPU mit dem Hauptspeicher 516 dargestellt zur Illustration der DAT-Operation für das Rückkopieren und den Durchschreibmodus und die zeitliche Beziehung der Ereignisse.
- Die CPU 510 gibt eine virtuelle Adresse im Schritt 1 an das TLB/Speicheruntersystem 514 aus, das eine reale Adresse an das Cache- Speicheruntersystem 512 im Schritt 2 ausgibt. Wenn eine Durchschreiboperation erfolgt oder eine Cache-Fehlpassung, wird die reale Adresse auch zu dem Hauptspeicher 516 gesandt. Bei einer DAT-Operation wird ein Abschnitt der virtuellen Adresse plus das Segment Tabellenursprungssadresse zu dem Hauptspeicher im Schritt 2 gesandt.
- Bei Schritt 3 werden für den Speichermodus Daten aus der CPU für Speicherung im Cache-Speicheruntersystem 512 ausgeschrieben, sowohl für den Rückkopier- als auch den Durchschreibmodus und zusätzlich für Speicherung in dem Hauptspeicher 516 beim Durchschreibmodus. Für den Lademodus des Betriebs besteht Schritt 3 aus dem Laden von Daten von dem Cache-Speicheruntersystem 512 in die CPU 510. Bei einer Cache-Fehlpassung werden Daten aus dem Hauptspeicher 516 in das Cache-Speicheruntersystem 512 und die CPU 510 während Schritt 3 geladen. Bei einer Cache- Fehlpassung beim Rückkopiermodus gibt, wenn verschmutzte Date in dem Cache-Speicher präsentiert werden (d.h. das verschmutzte Bit wird gesetzt), das Speicheruntersystem 512 die verschmutzten Daten zurück in den Hauptspeicher 516.
- In Fig. 19 sind der Datenfluß und die Betriebsweise des DAT- und TLB-Adreßumsetzprozesses illustriert. Wenn eine virtuelle Adresse die Umsetzung in eine reale Adresse erfordert und es keine Umsetzwerte gibt, die der angeforderten Umsetzung entsprechen, gespeichert in dem Cache-Speicherverwaltungseinheitssystem, erfolgt die Operation, wie in Fig. 19 illustriert. Die angeforderte virtuelle Adresse, wie im Virtuelladreßregisterakkumulator gespeichert (d.h. 310 in Fig. 9), liefert eine virtuelle Adresse VA (beispielsweise 32 Bits), welche Umsetzung benötigt. Wie unter Bezugnahme auf Fig. 7C diskutiert, besteht die virtueile Adresse aus 10 Bits der Segmentdatenvirtuelladresse VA< 31:22> , 10 Bits von Seitenadresse VA< 21:12> und 12 Bits Verschiebeadresse VA< 11:0> .
- Die DAT-Logik führt eine dynamische Adreßumsetzung aus, wenn es eine Fehlpassung in dem TLB gibt. Die DAT-Logik wartet auf das Freiwerden des Schreibregisters und führt dann zwei Lesezugriffe zum Hauptspeicher aus. Der erste Lesezugriff addiert die Segmentzahl zu einem Segmenttabellenursprung (STO) und erhält die Adresse der Seitentabelle. Der zweite Lesezugriff addiert die Seitenzahl zu dem Seitentabellenursprung und erhält die reale Adresse der Seite wie auch andere brauchbare Information, wie Schutzbits, Rückkopier-/Durchschreibstatus, verschmutzte Bits usw. Für jeden Anwender oder Prozeß kann ein neuer Segmenttabellenursprung verwendet werden. Das STO-Register in dem DAT wird unter CPU-Steuerung geladen. Es gibt zwei STO-Register, eines für den Anwendermodus und eines für den Überwachungsmodus. Die Hardware wählt automatisch das richtige Register, abhängig von dem Modus in dem Prozessorstatuswort (PSW).
- Die Zugriffsschutzbis in den Seitentabellen werden von der DAT-Logik hinsichtlich Schutzverletzungen überprüft. Wenn sie auftreten, wird eine CPU-Falle erzeugt. Wenn ein Paritätsfehler während einer DAT- Operation beim Lesen des Hauptspeichers auftritt, derart, daß die Daten nicht korrigiert werden und demgemäß suspekt sind, wird eine CPU-Falle erzeugt.
- Ein PF-Bit in der Seitentabellen oder Segmenttabelle ist der Seitenversagensindikator. Das Bit wird gesetzt bzw. rückgesetzt mittels der Software.
- Das System kann in einem nicht tabellierten Modus sein ohne virtuelle Adressierung. In diesem Modus ist die DAT-Moglichkeit inaktiv, und es werden keine Stützbits verwendet. Dieser Modus sollte jedoch nur selten verwendet werden infolge der Verletzbarkeit des Systems gegenüber Fehlereinschleppung und böswilliger Beschädigung.
- Nachdem die DAT-Logik eine Umsetzung beendet hat, werden die Anhänger Virtuelle Adresse, Reale Adresse und System zu dem TLB gesandt, wo sie für zukünftige Verwendung gespeichert werden, bis sie ersetzt werden.
- Das DAT reagiert auf die folgenden speichertabellierten Eingangs/Ausgangsbefehle:
- o Lade Überwachungs-STO-Register (priviligiert)
- o Lese Überwachungs-STO-Register
- o Lade Benutzer-STO-Benutzerregister (priviligiert)
- o Lese Benutzer-STO-Register
- o Lese Virtuelle Adresse, welche den Seiten- oder Schutzfehler verursachte.
- Dies wird in größeren Einzelheiten unter Bezugnahme auf Fig. 22 diskutiert.
- Wie nachstehend unter Bezugnahme auf Fig. 21 erörtert, umfaßt das Cache-Speicherverwaltungseinheitssystem einen Registerstapel. Dieser Registerstapel enthält ein Segmenttabellenursprungs- (d.h. STO)-Register für die Überwachungs- bzw. Benutzersegment-Tabellenursprünge für den dann laufenden Überwachungs- bzw. Benutzervorgang für die entsprechende Cache-Speicherverwaltungseinheit. Das Segment-Tabellenursprungsregister enthält einen 32-bit-Wert, wobei die höchststelligen 20 Bits desselben Segment-Tabellenursprungswert repräsentieren. Wie in Fig. 19 illustriert, ist der STO-Wert mit dem höchststelligen Abschnitt eines Wortes in einem STO-Eingabeadreßakkumulator mit der 10-bit-Segmentadresse von dem virtuellen Adreßregister 310 verkettet als nächstem höchststelligen Abschnitt des Wortes in dem STO-Eingabeadreßakkumulator. Die resultierenden 30-bit-Adressen bilden einen Zeiger zu einer Segmenttabelle im Hauptspeicher.
- Der Segmenttabelleneingabeadreßakkumulator (d.h. STOEA) der Cache-Speicherverwaltungseinheit akkumuliert und verkettet die Adresse, die zu dem Hauptspeicher auszugeben ist, um so die Segmenttabelle im Hauptspeicher zu adressieren. Eine 32-bit-Adresse wird aufgebaut unter Verwendung des Segmenttabellenursprungs mit 20 Bits als Adressenbits STOEA < 31:12> , Verwendung der virtuellen Adreßsegmentbits (VA31:22) als nächste zehn Bits, STOEA < 11:2> der Segmenttabellenadresse und Verkettung von Nullen für die Bitpositionen STOEA < 1:0> der Segmenttabellenadresse, die zum Hauptspeicher von dem STOEA-Akkumulator ausgegeben wird. Der Segmenttabelleneingangsadreßausgang von dem Segmenttabelleneingangsadreßakkumulator der Cache-MMU wird über den Systembus zu dem Hauptspeicher ausgegeben. Dies ermöglicht Zugriff auf die entsprechende Seitentabelleneintragung (d.h. PTE) innerhalb der Segmenttabelle im Hauptspeicher entsprechend dem Segmenttabelleneintragadreßausgang von dem Cache-MMU-System. Die höchststelligen 20 Datenbits, 31:12, der adressierten Hauptspeicherstelle werden von dem Hauptspeicher zu der Cache-MMU zurück ausgegeben, um in der Seitentabelleeingabeadresse, (d.h. PTEA) in der DAT oder dem Cache-MMU-System gespeichert zu werden. Diese 20 Bits der Seitentabelleneingabeaddrese werden in dem PTEA-Akkumulator als höchststellige 20 Bits eines 32-bit-Worts verkettet. Die nächststelligen 10 Bits werden mit dem Ausgang von dem virtuellen Adreßregister 310, Bits VA< 21:12> , verkettet, was die Seitenauswählbits repräsentiert. Die niedrigststelligen beiden Bits des Seitentabelleneingangsadreßakkumulatorausgangs sind Nullen. Der Seitentabelleneingabeadreßakkumulator der Cache-MMU gibt eine 32-bit-Adresse an den Hauptspeicher über den Systembus aus.
- Die Seitentabelleneingabeadresse wählt den Eingabepunkt auf einer Zeile in der Seitentabelle im Hauptspeicher. Jede Zeile in der Seitentabelle besteht aus mehreren Feldern, umfassend die umgesetzte reale Adresse, Systemanhänger, Schutz, Verschmutzung, referenziert und Seitenversagenswerte für die entsprechende virtuelle Adresse. Die ausgewählte Zeile von der Seitentabelle enthält, wie dargestellt, 20 Bits der realen Adresse "RA", fünf Bits der Systemanhängerinformation ST, vier Bits der Schutzniveauinformation PL, ein Bit der Verschmutzungsinformation D, ein Bit der referenzierten Information R und Seitenversagensinformation PF. Diese Felder sind in größeren Einzelheiten unter Bezugnahme auf Fig. 11A-B diskutiert.
- Die ausgewählte Zeile von der Seitentabelle wird von dem Hauptspeicher zurück zu dem TLB in der Cache-MMU für Speicherung in der Speichermatrix des TLB transferiert. Als nächstes werden die 20 Bits der realen Adresse von dem TLB für die gerade beanspruchte Zeile in der Seitentabelle ausgegeben und an die höchststelligen 20 Bits des Realadreßakkumulators in der Cache-MMU angekoppelt. Diese 20 Bits werden in dem Realadreßakkumulator als höchststellige 20 Bits mit den niedrigststelligen 12 Bits des virtuellen Adreßregisters 310, also VA< 1:0> , verkettet, was einen 32 bit umfassenden Realadreßausgang von dem Realadreßakkumulator ergibt. Dieser Ausgang von dem Realadreßakkumulator wird dann über den Systembus an den Hauptspeicher ausgegeben zum Auswählen der gewünschten Realadreßstelle. In Reaktion auf diesen Realadreßausgang wird ein Block von Worten zurück zu dem Cache-Speicher-Untersystem für Speicherung darin transferiert. Die Cache-MMU transferiert dann das anfänglich angeforderte Wort oder Worte an Information zu der CPU. Die in Fig. 19 illustrierte Prozedur wird nur benötigt, wenn die virtuelle Adresse, enthalten in dem Registerakkumulator 310, keine entsprechenden umgesetzten Werte in dem TLB der Cache-MMU gespeichert hat. Demgemäß sind für irgendwelche adressierbaren Stellen, die gegenwärtig in der Cache-MMU gespeichert sind, bereits Umsetzdaten vorhanden. Dies würde alle Fälle des Rückschreibens in den Hauptspeicher von dem Cache umfassen.
- In Fig. 20 ist ein Blockdiagramm der Cache-MMU dargestellt. Der Prozessor zu dem Cache-Bus 121 oder 131 aus Fig. 1 ist mit der CPU- Schnittstelle 600 gekoppelt. Das Cache-Speicheruntersystem 510, TLB-Untersystem 620, Registerstapel 630, Systemschnittstelle 640 und mikroprogrammierte Steuer- und DAT-Logik 650 sind sämtlich an die CPU-Schnittstelle 600 angekoppelt. Ein Virtuelladreßbus (d.h. VA) ist von der CPU- Schnittstelle 600 zu jedem Cache-Untersystem 610, TLB-Untersystem 620 und Registerstapeluntersystem 630 gekoppelt. Ein Datenausgangsbus (d.h. DO) von dem Cache-Untersystem 610 zu der CPU-Schnittstelle 600 koppelt den Datenausgang von dem Speicheruntersystem des Cache-Speicheruntersystems 610, dargestellt als DO (31:00).
- Ein bidirektionaler Datenbus, der mit NDT(31:00) bezeichnet ist, bewirkt die selektive Kopplung von Daten, virtueller Adresse, realer Adresse oder Funktionscode, abhängig von der gerade durch die Cache-MMU ausgeführten Operation. Der NDT-Bus ist mit Cache-MMU-Systemelementen 600, 610, 620, 630, 640 und 650 gekoppelt. Die Systemschnittstelle 640 ist einerseits an den Systembus angekoppelt und ist mit dem NDT-Bus und dem SYRA-Bus an der internen Cache-MMU-Seite angekoppelt. Der SYRA-Bus liefert eine Realadresse von dem Systembus über die Systemschnittstelle 640 zu dem TLB 620 und Cache-Untersystem 610. Wie dargestellt, sind die niedrigststelligen 12 Bits, welche den Verschiebeabschnitt der Adresse repräsentieren, mit dem Cache-Speicheruntersystem 610 gekoppelt. Die höchststelligen 20 Bits, SYRA (31:1) sind von dem SYRA-Bus zu dem TLB-Untersystem 620 gekoppelt. Die Steuerund DAT-Logik 650 koordiniert die Systembusschnittstelle nach einer TLB-620-Fehlpassung oder Cache-Untersystem-610-Fehlpassung und steuert DAT-Operationen.
- In Fig. 21 ist ein detaillierteres Blockdiagramm von Fig. 20 dargestellt. Das Cache-Ausgangsregister 601, Cache-Eingangsregister 603 und Adreßeingangsregister 605 der CPU-Schnittstelle 600 werden in größeren Einzelheiten unter Bezugnahme auf Fig. 8 beschrieben. Fig. 21 illustriert weiter den Multiplexer 602, Lese/Schreib-Logik 604 für die Ausführung von Lese/Modifizier/Schreib-Operationen, Funktionscoderegister 606 und Fallencodierer 607.
- Die Lese/Modifizier/Schreib-Logik 604 koordiniert das Multiplexieren des Cache-Speicheruntersystemausgangs über Multiplexer 614 von dem Cache-Speicher 611 des Cache-Speicheruntersystems 610 und über Multiplexer 602 der CPU-Schnittstelle 600 für selektive Zwischenverbindung zu dem Cache-Ausgangsregister 601 und von diesem zu dem Prozessor/Cache- Bus. Alternativ kann der Multiplexer 602 Daten von der Systembusschnittstelle 640 über den NDT-Bus intern bezüglich des Cache-MMU-Systems empfangen oder von der Lese/Modifizier/Schreib-Logik 604. Die RMW-Logik 604 hat als Eingänge zu ihr das Cache-Ausgangsregister 601 und den Ausgang des Cache-Eingangsregisters 603. Das Funktionscoderegister 606 und der Fallencodecodierer 607 sind an den Prozessor angekoppelt. Das Funktionscoderegister 606 reagiert auf Funktionscodes, empfangen von dem Prozessor, um Signale an andere Abschnitte des Cache-MMU-Systems bereitzustellen. Die Fallenlogik 607 reagiert auf Fehlenversagen von innerhalb des Cache-MMU-Systems und liefert Ausgänge an den Prozessor in Reaktion auf die Fallenlogik für das gegebene Fehlerversagen.
- Das Cache-Speicheruntersystem 610 besteht aus einer Cache-Speichermatrix 611 mit zwei 64-Zeilen-Cache-Speichern, wie unter Bezugnahme auf Fig. 9 beschrieben. Der Quadwortausgang von jeder der W- und X-Hälften der Cache-Speichermatrix 611 wird an entsprechende Quadwortzeilenregister 612 bzw. 616 angekoppelt. Die Quadwortregister 611 und 616 sind jeweils unabhängig an den NDT-Bus angekoppelt für die Kopplung an den Prozessor/Cache-Bus über die CPU-Schnittstelle 600 oder den Systembus über die Systemschnittstelle 640.
- Die Realadreßausgänge von den W- und X-Hälften der Cache-Speichermatrix 611 sind jeweils mit einem Eingang von Komparatoren bzw. 617 gekoppelt, von denen jeder einen Treffer-Fehlpassungssignalausgang liefert. Die anderen Eingänge jedes der Komparatoren 615 und 617 sind mit dem Ausgang des Multiplexers 618 gekoppelt. Der Multiplexer 618 gibt eine reale Adresse aus. Die Realadreßeingänge sind an den Multiplexer 618 von der Systembusschnittstelle 640 über den SYRA-Bus von diesem angekoppelt und vom Multiplexer 622 des TLB-Untersystems 620, der eine umgesetzte reale Adresse von seiner TLB- Speichermatrix 621 in Reaktion auf eine physikalische Adresse liefert, empfangen von dem Prozessor/Cache-Bus über die CPU-Schnittstelle 600.
- Die Quadwortregister 612 und 616 haben jeweils unabhängige Ausgänge, angekoppelt an Multiplexer 614. Multiplexer 614 gibt selektiv das Wort der angewählten Information an Multiplexer 602 für selektives Koppeln an das Cache-Ausgangsregister 601.
- Wie unter Bezugnahme auf Fig. 9 diskutiert, koppelt der Multiplexer 613 selektiv einen unteren Abschnitt der realen Adresse entweder von der CPU-Schnittstelle 600 oder von dem TLB 620 an den Multiplexer 613 für selektive Ausgabe und Ankopplung an die Cache-Speichermatrix 611, um darin eine Zeile auszuwählen.
- Die TLB-Speichermatrix 621 liefert selektiv einen Ausgang von einer ausgewählten Zeile darin in Reaktion auf entweder eine Adresse von dem NDT-Bus oder einer Adresse, geliefert von der CPU-Schnittstelle 600 als Ausgang über das Adreßeingangsregister 605. Ein Abschnitt (d.h. der untere Abschnitt Bits 12 bis 0) des virtuellen Adreßausgangs von Adreßeingangsregister 605 ist an das TLB-Speicheruntersystem 621 angekoppelt, und ein höherstelliger Abschnitt (d.h. Bits 31 bis 22) ist an jeweils einen Eingang von Komparatoren 623 und 624 des TLB 620 angekoppelt. Der umgesetzte Virtuelladreßausgang von dem TLB-Speichermatrixuntersystem 621 wird für jede der W- und X-Hälften, wie unter Bezugnahme auf Fig. 9 diskutiert, an den anderen Eingängen von Komparatoren 623 und 624 gekoppelt. Die Komparatoren 623 und 624 liefern unabhängige Treffer- Fehlpassungssignalausgänge. Der Multiplexer 622 hat Realadreßeingänge, die an ihn als Ausgang von den W- und X-Hälften des TLB-Speicheruntersystems 621 angekoppelt sind. Der Multplexer 622 liefert selektiv einen Ausgang der umgesetzten realen Adresse an den Eingang von Multiplexer 618 des Cache-Speicheruntersystems 610 in Reaktion auf die Treffer/Fehlpassungsausgänge der Komparatoren 623 und 624.
- Die Adreßschutzlogik 625 bewirkt selektiven Schutz von Leseund Schreibzugriff für bestimmte TLB-Zeilen in Reaktion auf Information, wie anfänglich von der Seitentabelleeingabe geladen, wie unter Bezugnahme auf Fig. 19 diskutiert.
- Der Registerstapel 630 sorgt für Speicherung von Segmenttabellenursprungswerten in zwei Segmenttabellenursprungsregistern. Der Registerstapel 630 umfaßt Segmenttabellenursprungsüberwachungs- und Benutzerregister, ein Versagenadreßregister 11 und andere Register, wie ein Fehleradreßregister.
- Die Steuer- und DAT-Logik 650 stellt direkte Adreßumsetzlogik, Aufruflogik, Schreiblogik, Leselogik und Eingangs/Ausgangsbefehlsbetriebslogik bereit.
- In Fig. 22 ist ein detailliertes Blockdiagramm der Steuerlogik-Mikromaschine 650 der Fig. 21 illustriert. Die Mikromaschine besteht aus einem Festwertspeicher 700 und einem Mikromaschinenbetriebsuntersystem, umfassend Programmzähler 710, Stapelzeiger 715, Befehlsregister 720, Vektorgenerator 730, Konditioniercodesignalwähler 740, Signalsteuer- und Befehlsdecoder 750 und Ausgangsregister 760.
- Der Programmzähler 710 besteht aus einem Programmzählerakkumulatorregister 712, einem Multiplexer 713 und der Inkrementierlogik 711.
- Der Multiplexer 713 liefert einen Signalausgang an das Programmzählerakkumulatorregister 712 in Reaktion auf Multiplexauswählsignal MUXSLT als Ausgang von dem Signalsteuerbefehlsdecoder 750. Dieser wählt eines von: die 8-bit-Vektoradreßausgänge von dem Vektorgenerator 730; der Ausgang der nächsten sequentiel len Programmzähladresse von der Inkrementierlogik 711 in Reaktion auf PC-Inkrementiersignal PCINC als Ausgang von dem Signal/Steuerbefehlsdecodersystem 750; oder eine Verzweigungsadresse als Ausgang von dem Verzweigungsadreßregister des Befehlsregisters 720. Der Ausgang des Multiplexers 713 ist mit dem Programmzählerakkumulatorregister 712 für selektiven Ausgang von diesem als PC-Ausgangsadresse PCOUT gekoppelt. PCOUT ist mit der Inkrementierlogik 711 gekoppelt, mit dem Stapelzeiger 750 und mit den Adreßwähleingängen des Festwertspeicheruntersystems 700.
- Wie in Fig. 22 dargestellt, umfaßt der Speicher 700 256 Zeilen von jeweils 52 Bits, wobei jede Zeile einen Befehls- und/oder Datenwert hat, der an das Befehlsregister 720 und/oder Ausgangsregister 760 auszugeben ist. Die höchststelligen Bitpositionen (d.h. Ausgangsbits 51 bis 48) werden von dem Festwertspeicheruntersystem 700 an das Befehlsartregister 723 des Befehlsregisters 720 gekoppelt. Diese Bits zeigen an, ob die verbleibenden Bits der Zeile einen Befehls- oder einen Steuersignalausgang umfassen. Die verbleibenden Bits der Zeile (d.h.Bits 47 bis 0) sind an das Ausgangsregister 760 angekoppelt wie auch an das Befehlsregister 720. Diese Bits sind mit dem Verzweigungsadreßregister 721 gekoppelt (d.h. Bits 40 bis 47 des Ausgangs von Festwertspeicher 700) und mit dem Konditionscoderegister722 (d.h. Bits 26 bis 0).
- Der Ausgang von dem Befehlsregister 723 ist von dem Befehlsregister 723 an die Signalsteuereinheit 750 gekoppelt. Das Befehlsregister 723 liefert Befehlsartinformation in Reaktion auf ein CRhold-Signal als Ausgang von der Signalsteuereinheit 57. Beispielsweise könnte bei Verwendung von Bits 48 bis 51 des Ausgangs des Festwertspeichers 700 eine 000 einen Ausgangsbefehl anzeigen, 001 einen Verzweigungsbefehl, 010 einen Aufrufbefehl, 011 einen Wartebefehl, 100 einen Rückkehrbefehl, 101 und 110 Vektoroperationen und 111 eine Stillstandsoperation.
- Der Ausgang des Konditionscoderegister 722 ist mit der Konditionssignalauswähllogik 740 gekoppelt. Der Konditionscodedecodierer 740 hat auch Konditionscode- und Statuseingänge angekoppelt. Diese Signale zeigen Cache- oder TLB-Fehlpassung an, einen Funktionscode, um den Status der Operation anzusagen, wie Lesen oder Schreiben, Status- und Konditionscodeinformation usw. Der Konditionscodedecodierer 740 liefert einen "Wertmarkenausgang" an die Signalsteuereinheit 750 zur Anzeige des Status und gibt weiter eine Vektornummer an den Vektorgenerator 730. Die Kombination von Fehlpassung und/oder Funktionscodeinformation definiert die Bestimmungsadresse für den Vektorprozeß.
- Die Signalsteuereinheit 750 liefert Vektorsignalzeitlageausgänge (d.h. VCTS, VCTC), angekoppelt an den Vektorgenerator 730. Wo eine Vektoroperation angezeigt ist, wird die Vektoradresse von dem Vektorgenerator 730 in dem Programmzählerakkumulator 712 über Multiplexer 713 geladen, und der PC-Zähler 710 wird inkrementiert auf Sequenzbefehle, bis die Vektorroutine beendet ist.
- Das Verzweigungsadreßregister 721 gibt selektiv Verzweigungsadreßsignale an den Programmzähler 710 für Benutzung durch denselben gemäß Steuersignalen als Ausgang von dem Signalsteuer- und Befehlsdecodierer 750. Ausgänge von Signalen von dem Ausgangsregister 760 reagieren auf den selektiven Ausgang eines Ausgangsregisters-Halten-"OR hold"-Signals von der Signalsteuereinheit 750 an das Ausgangsregister 760. Die Signale, wie von dem Ausgangsregister 760 abgegeben, sind mit anderen Bereichen den Cache-MMU-Systems gekoppelt (d.h. Steuersignale und/oder Daten für die Verwendung durch die anderen Bereiche des Cache-MMU-Systems.
Claims (10)
1. Ein Cache-Speicherverwaltungssystem (Fig. 8 und 9),
angekoppelt an einen Prozessor (110) über einen Prozessor/Cache-Bus (121,
131) und an einen Primärspeicher (140) über einen Systembus (141),
welches Cache-Speicherverwaltungssystem umfaßt:
einen Cache-Speicher (Fig. 9; 320) für das Speichern von
Datenseiten;
Cache-Steuermittel, angekoppelt an den Prozessor und an den
Cache-Speicher einschließlich eines Übersetzungslogikblocks (TLB 350)
für das Bereitstellen der Realadressenübersetzung für virtuelle
Adressen, empfangen von dem Prozessor, und Mittel für das selektive Speichern
von Daten in und Entnehmen von Daten aus dem Cache-Speicher in Reaktion
auf den Betrieb des Übersetzerlogikblocks, wobei jeder Eintrag in den
Übersetzerlogikblock eine Systemmarkierung (ST (T&sub0;...,T&sub4;)) speichert,
die einen aus einer Mehrzahl von Cache-Datenspeichermoden anzeigt,
welche Cache-Datenspeichermoden umfassen:
einen cache-baren Datendurchschreibmodus, bei dem, wenn der
Prozessor Daten mit einer virtuellen Adresse entsprechend einer diesem
Modus zugeordneten Modus zugeordneten Datenseite modifiziert, das Cache-
Speicherverwaltungssystem unmittelbar die modifizierten Daten in dem
Primärspeicher und dem Cache-Speicher abspeichert; und
einen cache-baren Datenrückkopiermodus, bei dem, wenn der
Prozessor Daten mit einer virtuellen Adresse entsprechend einer Datenseite,
die diesem Modus zugeordnet ist, modifiziert, das
Cache-Speicherverwaltungssystem unmittelbar die modifizierten Daten in dem Cache-Speicher
speichert, nicht jedoch in dem Primärspeicher;
primäre Speichersteuermittel (Fig. 8; 250, 260) für selektives
Speichern von Daten in und Auslesen von Daten aus dem Primärspeicher in
Reaktion auf die Systemmarkierung und die virtuellen Adressen; und
wobei der Cache-Datenspeichermodus, angegeben durch die
Systemmarkierung durch ein Betriebssystem decodiert wird.
2. Das Cache-Speicherverwaltungssystem nach Anspruch 1, bei
dem vor dem Überschreiben existierender modifizierter Daten in dem
Cache-Speicher für Seiten, denen cache-barer Datenrückkopiermodus
zugeordnet ist, das primäre Speichersteuermittel die modifizierten Daten in dem
primären Speicher unter den jeweiligen Realadressen steuert, zugeordnet
den modifizierten Daten.
3. Das Cache-Speicherverwaltungssystem nach Anspruch 2, bei
dem die Systemmarkierung zusätzlich einen aus einer Mehrzahl von
Adreßraumattributen anzeigt.
4. Das Cache-Speicherverwaltungssystem nach Anspruch 3, bei
dem die Mehrzahl von Adreßraumattributen umfaßt:
ein gemeinsames Adreßraumattribut; und
ein privates Adreßraumattribut.
5. Das Cache-Speicherverwaltungssystem nach Anspruch 4, ferner
umfassend:
einen Verschlußladerspeicher, angekoppelt an den Systembus
(141) für das Speichern von Datenseiten darin, eine
Eingabe/Ausgabe-Einrichtung für das Speichern von Datenseiten darin, wobei die Mehrzahl von
Adreßraumattributen umfaßt:
ein Verschlußspeicheradreßraumattribut für die Anzeige, daß
eine virtuelle Adresse einer in dem Verschlußladerspeicher gespeicherten
Datenseite entspricht;
ein E/A-Adreßraumattribut für die Anzeige, daß eine virtuelle
Adresse einer Datenseite entspricht, abgespeichert in der
Eingabe/Ausgabe-Einrichtung; und
ein primäres Speicheradreßraumattribut für die Anzeige, daß
eine virtuelle Adresse einer in dem Primärspeicher gespeicherten
Datenseite entspricht.
6. Das Cache-Speicherverwaltungssystem nach Anspruch 5, bei
dem die Mehrzahl von Cache-Datenspeichermoden umfaßt:
einen nicht-cache-baren Datenmodus, bei dem Daten für jede
virtuelle Adresse entsprechend einer Datenseite, zugeordnet diesem
Modus, nicht in dem Cache-Speicher abgespeichert wird.
7. Das Cache-Speicherverwaltungssystem nach Anspruch 6, bei
dem jeder Cache-Datenspeichermodus für jede Datenseite, die in dem
Primärspeicher gespeichert ist, vorgesehen ist und variabel ist.
8. Das Cache-Speicherverwaltungssystem nach Anspruch 1, bei
dem der Übersetzungslogikblock (TLB 350) eine assoziative Liste von
Übersetzungen virtueller Adressen in reale Adressen entsprechend den in
dem Cache-Speicher abgespeicherten Daten liefert.
9. Ein Verfahren zum Implementieren einer Mehrzahl von
Speicherauffrischstrategien in einem Computersystem mit einem Cache-Speicher
(Fig. 9; 320) mit einem Primärspeicher (140) und einem Prozessor (110),
umfassend die Schritte:
Abspeichern, für in dem Primärspeicher abgespeicherte
Datenseiten, von virtuellen Adressen zu realen Adressenübersetzungsdaten
in dem Übersetzungslogikblock (TLB 350);
Abspeichern, in jeder Eingabe in den Übersetzungslogikblock
für eine entsprechende Übersetzung der virtuellen Adresse in eine reale
Adresse, einer Systemmarkierung, die eine von einer Mehrzahl von
Speicherauffrischstrategien anzeigt, wobei die Mehrzahl von
Speicherauffrischstrategien umfaßt:
eine cache-bare Datendurchschreibstrategie, bei der, wenn der
Prozessor Daten modifiziert, mit einer virtuellen Adresse entsprechend
einer dieser Strategie zugeordneten Datenseite, die modifizierten Daten
unmittelbar in dem Primärspeicher und in dem Cache-Speicher gespeichert
werden; und
eine cache-bare Datenrückkopierstrategie, bei der, wenn der
Prozessor Daten modifiziert mit einer virtuellen Adresse entsprechend
einer dieser Strategie zugeordneten Datenseite, die modifizierten Daten
unmittelbar in dem Cache-Speicher und nicht in dem Primärspeicher
gespeichert werden;
Übersetzen der virtuellen Adresse in die reale Adresse; und
Bewirken der Speicherauffrischstrategie, die durch die
Systemmarkierung entsprechend der Übersetzung der virtuellen Adresse in die
reale Adresse angezeigt wird.
10. Das Verfahren nach Anspruch 9, bei dem der
Speicherauffrischstrategieausführschritt ferner den Schritt umfaßt:
vor dem Überschreiben existierender modifizierter Daten in dem
Cache-Speicher für Seiten mit einer zugeordneten cache-baren
Datenrückkopierstrategie, Abspeichern der modifizierten Daten in dem
Primärspeicher unter der jeweiligen Realadresse, die den modifizierten Daten
zugeordnet ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US70449785A | 1985-02-22 | 1985-02-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3650584D1 DE3650584D1 (de) | 1997-01-23 |
DE3650584T2 true DE3650584T2 (de) | 1997-06-26 |
Family
ID=24829780
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3650782T Expired - Lifetime DE3650782T2 (de) | 1985-02-22 | 1986-02-21 | Anordnung von Cachespeicherverwaltungseinheiten |
DE3650584T Expired - Lifetime DE3650584T2 (de) | 1985-02-22 | 1986-02-21 | Anordnung von Cachespeicherverwaltungseinheiten |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3650782T Expired - Lifetime DE3650782T2 (de) | 1985-02-22 | 1986-02-21 | Anordnung von Cachespeicherverwaltungseinheiten |
Country Status (4)
Country | Link |
---|---|
EP (2) | EP0732656B1 (de) |
JP (1) | JPH07117913B2 (de) |
CA (3) | CA1272301A (de) |
DE (2) | DE3650782T2 (de) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0661066B2 (ja) * | 1986-10-20 | 1994-08-10 | 株式会社日立製作所 | 記憶制御装置 |
KR950006590B1 (ko) * | 1986-11-14 | 1995-06-19 | 가부시기가이샤 히다찌세이사꾸쇼 | 캐시 메모리를 갖는 마이크로 프로세서 |
IT1219238B (it) * | 1988-04-26 | 1990-05-03 | Olivetti & Co Spa | Dispositivo di traslazione dell'indirizzo per un memoria operativa di computer |
US5170476A (en) * | 1990-01-22 | 1992-12-08 | Motorola, Inc. | Data processor having a deferred cache load |
DE69327981T2 (de) * | 1993-01-21 | 2000-10-05 | Advanced Micro Devices, Inc. | Kombinierte Speicheranordnung mit einem Vorausholungspuffer und einem Cachespeicher und Verfahren zur Befehlenversorgung für eine Prozessoreinheit, das diese Anordnung benutzt. |
US5890221A (en) * | 1994-10-05 | 1999-03-30 | International Business Machines Corporation | Method and system for offset miss sequence handling in a data cache array having multiple content addressable field per cache line utilizing an MRU bit |
US6427162B1 (en) * | 1996-05-02 | 2002-07-30 | Sun Microsystems, Inc. | Separate code and data contexts: an architectural approach to virtual text sharing |
US8038691B2 (en) | 2004-11-12 | 2011-10-18 | Boston Scientific Scimed, Inc. | Cutting balloon catheter having flexible atherotomes |
US11972034B1 (en) | 2020-10-29 | 2024-04-30 | Amazon Technologies, Inc. | Hardware-assisted obscuring of cache access patterns |
US11755496B1 (en) | 2021-12-10 | 2023-09-12 | Amazon Technologies, Inc. | Memory de-duplication using physical memory aliases |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3138972A1 (de) * | 1981-09-30 | 1983-04-14 | Siemens AG, 1000 Berlin und 8000 München | Onchip mikroprozessorchachespeichersystem und verfahren zu seinem betrieb |
-
1986
- 1986-02-21 EP EP96108915A patent/EP0732656B1/de not_active Expired - Lifetime
- 1986-02-21 EP EP86400363A patent/EP0196244B1/de not_active Expired - Lifetime
- 1986-02-21 DE DE3650782T patent/DE3650782T2/de not_active Expired - Lifetime
- 1986-02-21 CA CA000502433A patent/CA1272301A/en not_active Expired
- 1986-02-21 DE DE3650584T patent/DE3650584T2/de not_active Expired - Lifetime
- 1986-02-22 JP JP61038127A patent/JPH07117913B2/ja not_active Expired - Lifetime
-
1989
- 1989-09-26 CA CA000613401A patent/CA1283220C/en not_active Expired - Lifetime
- 1989-09-26 CA CA000613400A patent/CA1283219C/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
CA1283219C (en) | 1991-04-16 |
DE3650782T2 (de) | 2004-06-17 |
EP0732656A3 (de) | 1996-11-06 |
CA1283220C (en) | 1991-04-16 |
JPS61275946A (ja) | 1986-12-06 |
EP0196244A2 (de) | 1986-10-01 |
EP0196244B1 (de) | 1996-12-11 |
DE3650782D1 (de) | 2003-09-11 |
JPH07117913B2 (ja) | 1995-12-18 |
DE3650584D1 (de) | 1997-01-23 |
EP0732656A2 (de) | 1996-09-18 |
EP0732656B1 (de) | 2003-08-06 |
CA1272301A (en) | 1990-07-31 |
EP0196244A3 (de) | 1990-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE68922326T2 (de) | Speicherwarteschlange für eine festgekoppelte Mehrprozessorenkonfiguration mit einem zweistufigen Cache-Pufferspeicher. | |
DE3688192T2 (de) | Seitenorganisierter cachespeicher mit virtueller adressierung. | |
DE69031978T2 (de) | Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern | |
DE68926059T2 (de) | Organisation einer integrierten Cache-Einheit zur flexiblen Verwendung beim Entwurf von Cache-Systemen | |
DE69228521T2 (de) | Mikroprozessorarchitektur mit der möglichkeit zur unterstützung mehrerer verschiedener prozessoren | |
DE69029173T2 (de) | Mikroprozessor | |
DE69230134T2 (de) | Dynamisches hochleistungsspeichersystem | |
DE69031367T2 (de) | Blockübertragungs- und Koprozessorschnittstellenbefehl | |
DE3688978T2 (de) | Seitenspeicherverwaltungseinheit mit der fähigkeit nach wahl mehrere adressräume zu unterstützen. | |
DE69127111T2 (de) | Verfahren zum Nachladen aufgeschobener Datenauslagerungen in einen Copy-back Daten-Cachespeicher | |
DE3587960T2 (de) | Datenverarbeitungsanlage mit einem Speicherzugriffssteuergerät. | |
DE69129913T2 (de) | Datenprozessor mit aufgeschobenem Laden eines Cache-Speichers | |
DE69203842T2 (de) | Speichersteuerungsvorrichtung mit Snoop-Mechanismus. | |
DE60211076T2 (de) | Datenübertragung zwischen virtuellen Adressen | |
DE69331448T2 (de) | Dataprozessor mit einem Cachespeicher | |
DE69319763T2 (de) | Verfahren und Gerät zur Durchführung eines Busarbitrierungsprotokolls in einem Datenverarbeitungssystem | |
DE68923863T2 (de) | Ein-/Ausgabecachespeicherung. | |
DE3750107T2 (de) | Cachespeicherkohärenzsteuerung mit einem Speicher, der ein laufendes Lesen anzeigt. | |
DE69031183T2 (de) | Verfahren und Anordnung zur Kontrolle der Umwandlung virtueller Adressen in physikalische Adressen in einem Computersystem | |
DE69327387T2 (de) | An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung | |
DE69224571T2 (de) | Mehrprozessorrechnersystem | |
DE69031411T2 (de) | Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff | |
DE69732181T2 (de) | Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen | |
DE69523395T2 (de) | Datenprozessor mit gesteuertem Stoss-Speicherzugriff und Vorrichtung dafür | |
EP0431463A2 (de) | Zweistufiger Adressübersetzungspufferspeicher mit partiellen Adressen zur Geschwindigkeitserhöhung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: INTERGRAPH HARDWARE TECHNOLOGIES CO., LAS VEGAS, N |
|
8310 | Action for declaration of annulment | ||
8313 | Request for invalidation rejected/withdrawn |