DE3650782T2 - Anordnung von Cachespeicherverwaltungseinheiten - Google Patents

Anordnung von Cachespeicherverwaltungseinheiten Download PDF

Info

Publication number
DE3650782T2
DE3650782T2 DE3650782T DE3650782T DE3650782T2 DE 3650782 T2 DE3650782 T2 DE 3650782T2 DE 3650782 T DE3650782 T DE 3650782T DE 3650782 T DE3650782 T DE 3650782T DE 3650782 T2 DE3650782 T2 DE 3650782T2
Authority
DE
Germany
Prior art keywords
data
cache
memory
bus
main memory
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
Application number
DE3650782T
Other languages
English (en)
Other versions
DE3650782D1 (de
Inventor
Howard Gene Los Altos Sachs
Walter H. Campbell Hollingsworth
James Youngsae Los Gatos Cho
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intergraph Corp
Original Assignee
Intergraph Hardware Technologies Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=24829780&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE3650782(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Intergraph Hardware Technologies Co filed Critical Intergraph Hardware Technologies Co
Publication of DE3650782D1 publication Critical patent/DE3650782D1/de
Application granted granted Critical
Publication of DE3650782T2 publication Critical patent/DE3650782T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction 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

  • HINTERGRUND DER ERFINDUNG
  • Diese Erfindung betrifft ein Computersystem, das einen Hauptspeicher, einen Systembus, ein erstes und ein zweites Datenverarbeitungselement und ein Cache-Speichermanagementmittel umfasst, sowie ein Verfahren zum Aufrechterhalten der Cache-Konsistenz in einem derartigen Computersystem.
  • Folglich betrifft diese Erfindung Computersystemarchitekturen und insbesondere eine Cache-Speichermanagementsystem-Architektur mit einem Hochgeschwindigkeits-Systembus, um Systemelemente, die damit gekoppelt sind, für einen sehr schnellen Informationsaustausch zwischen diesen miteinander zu verbinden, und mit einer sehr schnellen Mikroprozessor-Schnittstelle, einer direkten Adressenübersetzungseinheit und einer Adressenübersetzungseinheit.
  • Frühere Cachespeicher-Controller und Speichermanagementsysteme sind entlang mehrerer Trennlinien entwickelt worden. Systeme des Standes der Technik haben einen Cache-Controller, einen Cachespeicher, eine Speichermanagementeinheit und eine Übersetzungslogik jeweils als gesonderte und voneinander getrennte Einheiten der Systemarchitektur verwendet. In diesen Systemen gibt eine CPU eine Adresse aus, die dieser Adresse entsprechende Daten anfordert oder darauf vorbereitet, Daten an die der ausgegebenen Adresse entsprechende Adresse auszugeben. Ein Cache-Controller in Verbindung mit einem gesonderten Cachespeicher und möglicherweise in Verbindung mit verschiedenen Speichertabellen klärt, ob die ausgegebene Adresse Speicherstellen entspricht, die im Cachespeicher enthalten sind. Wenn ja, wird ein Treffer erklärt und der Cache-Controller steuert das Lesen oder Schreiben von Daten aus dem bzw. in den Cachespeicher über den Cache-Controller. Falls die Daten nicht vorhanden sind, schickt der Cache-Controller ein das Fehlen anzeigendes Signal an die CPU zurück. In diesem Fall können die Systeme entweder dafür sorgen, dass die CPU einen Hauptspeicherzugriff koordiniert, um die angeforderten Adresspositionsdaten zu erhalten, oder die CPU kann eine Anforderung an eine Speichermanagementeinheit ausgeben, damit die erforderlichen Speicherstellendaten zur Verfügung gestellt werden. Im Fall der Nutzung eines Speichermanagements stellen Systeme des Standes der Technik eine begrenzte Registerspeicherung entweder in der CPU, in der Speichermanagementeinheit oder im Hauptspeicher zur Verfügung, um das Verfahren der Übersetzung von virtuellen in physikalische Adressen zu unterstützen.
  • Diese bekannten Systeme weisen viele Nachteile auf. Erstens ist durch die körperliche Trennung infolge der Aufteilung die Gesamtdaten-Durchsatzrate verringert, und zwar aufgrund von Busladevorgängen, Busverzögerungen und der mehreren Ausgangspunkte für einen Zugriff über den Cache-Controller auf den Cachespeicher, oder auf Grund eines Fehltreffers über den Cache-Controller, Cachespeicher, zurück zur CPU, zur Speichermanagementeinheit und zum Hauptspeicher. Zweitens belasten diese Systeme im Fall eines Cache-Fehltreffers die CPU. Außerdem werden, um für die Cache-Controllerschaltung hinsichtlich der Busverzögerungen zwischen dem Cache-Controller und dem Cachespeicher einen Ausgleich zu schaffen, teurere schnelle Cachespeicher erfordern, eine Cachezugriffszykluszeit zu erzielen, die nicht wegen Cache-Controller- und Bus-Verzögerungszeiten verzögert ist.
  • ZUSAMMENFASSUNG
  • Die Erfindung ist in den Ansprüchen 1 und 10 definiert.
  • Es werden eine Cache- und Speichermanagementsystemarchitektur sowie ein zugeordnetes Protokoll offenbart. Das Cache- und Speichermanagementsystem umfasst ein two-way set associative oder Zweiwege-Assoziativspeicher-Cacheuntersystem, ein teilassoziatives Zweiwege-Übersetzungslogik-Speicheruntersystem, eine festverdrahtete Seitenübersetzung, eine wählbare Zugriffsbetriebsartlogik und eine wahlweise aktivierbare Logik für eine instruction prefetch oder Befehlsvorabruf-Betriebsart. Das Cache- und Speichermanagementsystem umfasst eine Systemschnittstelle und eine Prozessor/Cache-Busschnittstelle. Die Systemschnittstelle sorgt für Mittel zum Ankoppeln an einen Systembus, mit dem ein Hauptspeicher gekoppelt ist. Die Prozessor/Cache-Busschnittstelle liefert Mittel zum Koppeln an eine externen CPU. Das Cache-Speichermanagementsystem kann entweder als Befehlscache oder als Datencache arbeiten. Das Befehlscachesystem sorgt für einen Befehlsvorabruf sowie für chipintegrierte Befehlszählermöglichkeiten. Der Datencache sorgt für ein Adressregister, das Adressen von der CPU aufnimmt, um für eine Übertragung einer festgelegten Anzahl von Datenwörtern zu sorgen, die an der Adresse be ginnt, die in dem Adressregister gespeichert ist.
  • Ein weiteres neuartiges, offenbartes Merkmal sind die Vierfachwort-Grenzregister, Vierfachwort-Zeilenregister und das Vierfachwortgrenzen-Erfassungsuntersystem. Dadurch wird der Zugriff auf Daten innerhalb von Vierfachwortgrenzen beschleunigt und für eine wirksame Vorverarbeitung von aufeinander folgenden aufsteigenden Speicherstellen gespeicherter Befehle oder Daten aus dem Cachespeicher-Untersystem gesorgt.
  • Das Cache-Speichermanagementsystem sorgt für eine Gesamtarchitektur, die sowohl die Cachespeicherfunktion als auch eine teilassoziative Zweiwege-Übersetzung von Adressen aus einer virtuellen in eine physikalische Adresse und Möglichkeiten eines Seitenzugriffsschutzes, die dem gespeicherten teilassoziativen Zweiwege-Übersetzungslogik-Speicheruntersystem zugeordnet sind, liefert.
  • Das Cache-Speichermanagementsystem stellt wählbare Zugriffsbetriebsarten zur Verfügung. Folglich können bestimmte Adressen durch die CPU-Systemzustandswortausgabe definiert werden, die an die Cache-Speichermanagementsysteme gekoppelt ist, um verschiedene Betriebsarten anzugeben. Diese Betriebsarten schließen den abgebildeten/nicht abgebildeten Hauptsteuerprogramm/Anwendungsprogramm-Raumzugriff usw. ein. Weitere Merkmale bezüglich der wählbaren Zugriffsbetriebsarten sind durch die Seitentabelleneinträge definiert, die aus der Hauptspeicher-Seitentabelle zum Zeitpunkt des Ladens des Cachespeicher-Untersystems mit Daten aus der Seitentabelle im Hauptspeicher in das Übersetzungslogik-Speicheruntersystem des Cache-Speichermanagementsystems geladen werden. Diese mittels der Seitentabelle definierten wählbaren Zugriftsbetriebsarten umfassen nicht cachefähig, durchschreiben (write through)/rückkopieren (copy back) usw.
  • Ein weiteres neuartiges, offenbartes Merkmal ist ein festverdrahtetes Seitenübersetzungssystem. Dieses sorgt für einen garantierten Zugriff auf kritische System- und anwenderdefinierte Adressen. Beispiele schließen eine Unterbrechungsvektorseite, für das Betriebssystem und/oder Nutzeranwendungen reservierte Seiten, mehrere E/A-Seiten und Boot-Seiten ein.
  • Das Cache-Speichermanagementsystem reagiert jeweils auf E/A-Befehle von der CPU, die über den Prozessor-/Cache-Bus empfangen werden. Diese Befehle umfassen: Ungültigmachen von Hauptsteuerprogrammseiten in dem ÜLB-Übersetzungslogik-Speicheruntersystem, Ungültigmachen von Anwenderseiten in dem Übersetzungslogik-Speicheruntersystem, Zurücksetzen von so genannten Dirty-Bits und Referenced-Bits in dem Übersetzungslogik-Speicheruntersystem, Zugriff auf das gesamte Übersetzungslogik-Speicheruntersystem, Ungültigmachen des gesamten Cache-Speicheruntersystems usw. In einer Multicache- oder Mehrprozessoren-Systemarchitektur kann vom Systembus aus auf den Cache zugegriffen werden, um eine Zeile in dem Cachespeicher-Untersystem auf ein E/A-Schreibsignal oder auf ein Signal zum gemeinsamen Schreiben (shared write) hin für ungültig zu erklären. Der Cache schickt auf ein E/A-Lesesignal hin geänderte, aber noch nicht freigegebene Daten (Dirty-Data) an den Systembus zurück.
  • Das Cache-Speichermanagementsystem kann entweder als Befehls- oder als Datencache-Managementsystem konfiguriert sein. Wie offenbart ist, enthält die Systemarchitektur einen Prozessor, der getrennte Befehls- und Datencacheschnittstellen aufweist. Von der Prozessorbefehlsschnittstelle koppelt ein sehr schneller Befehlsbus an das Befehlscache-Speichermanagementsystem an. Ein sehr schneller Datenbus koppelt das Datencache-Speichermanagementsystem mit der Prozessordatenschnittstelle. Jedes Cache-Speichermanagementsystem koppelt über die Systemschnittstelle an den Systembus und von diesem an den Hauptspeicher.
  • Wo mehrere Elemente an den Systembus gekoppelt sind, sorgt ein Buszuteilungssystemelement für eine Systembuszuteilung und ein Kollisionsvermeidungsmanagement. Es werden ein Busanforderungs-/Busbewilligungsverfahren und eine unterstützende Architektur zur Verwendung in Verbindung mit dem Cache-Speichermanagementsystem offenbart.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Diese und weitere Merkmale und Vorteile der vorliegenden Erfindung werden aus der folgenden ausführlichen Beschreibung der Zeichnungen offensichtlich, worin:
  • 1 einen Blockschaltplan einer mikroprozessorbasierenden Dual-Cache-/Dual-Bus-Systemarchitektur gemäß der vorliegenden Erfindung veranschaulicht;
  • 2 ein Blockdiagramm der Befehlsschnittstelle von 1 ist;
  • 3 ein genaueres Blockdiagramm der Befehlsdecodierungseinrichtung 120 der Befehlsschnittstelle 100 von 2 ist;
  • 4 ein Schaltplan ist, der den Befehlcache-/Prozessor-Bus, den Datencache-/Prozessor-Bus und das Systembus-Dual-Bus-/Dual-Cache-System von 1 zeigt;
  • 5 den Systembus zur Cache-Schnittstelle von 4 genauer zeigt;
  • 6 ein Schaltplan ist, der die Treiber/Empfänger zwischen der Befehlscache-Speichermanagementeinheit und dem Systembus veranschaulicht;
  • 7A-C den virtuellen Speicher, den realen Speicher und Konzepte für virtuelle Adressen veranschaulichen, die mit der vorliegenden Erfindung Anwendung finden;
  • 8 einen Blockschaltplan einer Cache-Speichermanagementeinheit zeigt;
  • 9 ein genauerer Blockschaltplan der Cache-Speichermanagementeinheit von 8 ist;
  • 10A-B die Speicherstruktur innerhalb des Cachespeicher-Untersystems 320 veranschaulichen;
  • 11A-B die Speicherstruktur des ÜLB-Speicheruntersystems 350 genauer zeigen;
  • 12 die Vierfachwortgrenzenorganisation des Cachespeichers veranschaulicht;
  • 13 die von dem ÜLB-Untersystem gelieferten festverdrahteten Übersetzungen virtueller in reale Adressen veranschaulicht;
  • 14 das Cachespeicheruntersystem und die angegliederte Cache-Speichermanagementarchitektur veranschaulicht, die das Verfahren der Vierfachwortgrenze unter Verwendung von Zeilenregistern und Zeilen-Grenzregistern unterstützen;
  • 15 den Zeitablauf des Ladens für die Cache-Speichermanagementsysteme 120 und 130 von 1 veranschaulicht;
  • 16 die Speicheroperation für die Cache-Speichermanagementsysteme 120 und 130 von 1 für das Speichern von der CPU in das Cache-Speichermanagementsystem in der Rückkopier-Betriebsart (Copyback) und für das Speichern von der CPU in das Cache-Speichermanagementsystem und den Hauptspeicher in der Durchschreibbetriebsart (write through) veranschaulicht;
  • 17A-B den Datenfluss von Operationen zwischen der CPU und der Cache-Speichermanagementeinheit sowie dem Hauptspeicher veranschauli chen;
  • 18 die Wechselwirkung zwischen dem DAÜ- und der Zustandsänderung der CPU, des Cachespeicher-Untersystems und des ÜLB-Speicheruntersystems veranschaulicht;
  • 19 den Datenfluss und die Wirkungsweise der DAÜ- und -Untersysteme bei der Ausführung der Adressübersetzung sowie bei Datenspeicherungs- und Datenladeoperationen veranschaulicht;
  • 20 ein Blockdiagramm des Cache-Speichermanagementsystems einschließlich Busschnittstellenstrukturen innerhalb des Cache-Speichermanagementsystems veranschaulicht;
  • 21 ein genauerer Blockschaltplan entsprechend 20 ist; und
  • 22 ein genauer Blockschaltplan des Steuerlogik-Mikrobausteins 650 von 21 ist.
  • AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
  • In 1 ist eine Ausführungsform des Systems der vorliegenden Erfindung gezeigt. Eine Zentralverarbeitungseinheit (CPU) 110 ist über gesonderte und voneinander unabhängige sehr schnelle Cache-/Prozessor-Busse, einen Befehlsbus 121 und einen Datenbus 131, die an eine Befehlscache-Speichermanagementeinheit 120 bzw. eine Datencache-Speichermanagementeinheit 130 ankoppeln, gekoppelt. Außerdem ist von der CPU 110 ein Systemzustandsbus 115 sowohl mit der Befehlscache-Speichermanagementeinheit 120 als auch mit der Datencache-Speichermanagementeinheit 130 gekoppelt. Sowohl die Befehlscache-Speichermanagementeinheit 120 als auch die Datencache-Speichermanagementeinheit 130 besitzt eine gesonderte Schnittstelle, um mit einem Systembus 141 zu koppeln. Ein Hauptspeicher 140 enthält den Hauptarbeitsspeicher für das System, der dynamischen RAM, statischen RAM oder ein anderes schnelles Schreib-Lese-Speichermedium umfassen kann. Die Caches 120 und 130 koppeln jeweils über den Systembus 141 mit dem Hauptspeicher 140.
  • Außerdem können an den Systembus 141 weitere Systemelemente gekoppelt sein, wie etwa eine E/A-Verarbeitungseinheit (EAV) 150, die den Systembus 141 mit dem E/A-Bus 151 für die entsprechende EAV 150 koppelt. Der E/A-Bus 151 kann entweder eine Standard-Busschnittstelle wie etwa Ethernet, Unibus, VMEbus, Multibus sein oder der E/A-Bus 151 kann mit dem Ergänzungs speicher oder anderen Peripheriegeräten wie etwa Festplatten, Disketten, Druckern usw. koppeln. An den Systembus 141 können mehrere Ein-/Ausgabe-Verarbeitungseinheiten gekoppelt sein. Die Ein-/Ausgabe-Verarbeitungseinheit 150 kann über den Systembus 141 mit dem Hauptspeicher 140 kommunizieren.
  • Außerdem ist die CPU 110 über Unterbrechungsleitungen 111 mit einem Unterbrechungscontroller 170 gekoppelt. Jede der Einheiten, die um die Unterbrechungspriorität bezüglich der CPU streiten, hat gesonderte Unterbrechungsleitungen, die in dem Unterbrechungscontroller 170 gekoppelt sind. Wie in 1 gezeigt ist, hat der Hauptspeicher 140 eine Unterbrechungsausgabe I1 145, und die Ein-/Ausgabe-Verarbeitungseinheit 150 hat eine mit I2 beschriftete Unterbrechungsausgabe 155. Diese Unterbrechungen I1, 145, und I2, 155, sind mit dem Unterbrechungscontroller 170 gekoppelt, der priorisiert und die Priorität von Unterbrechungsanforderungen an die CPU 110 schlichtet. Die CPU 110 kann mehrere parallele CPUs umfassen oder kann eine einzige CPU sein. Im Fall eines Mehrprozessorensystems wird die Prioritätsfestlegung und Auflösung von Unterbrechungsanforderungen durch den Unterbrechungscontroller 170 in Verbindung mit den Signalsteuerleitungen 111 von der CPU 110 zu dem Unterbrechungscontroller 170 abgewickelt.
  • Ein Systemtaktgeber 160 liefert einen Haupttakt MCLK an die CPU 110, die Befehlscache-Speichermanagementeinheit 120 und die Datencache-Speichermanagementeinheit 130 für die Synchronisation von internen Operationen in diesen sowie von Operationen zwischen diesen. Außerdem liefert eine Bustaktausgabe BCLK vom Systemtaktgeber 160 Bussynchronisationssignale für Übertragungen über den Systembus 141, wobei sie mit allen Systemelementen gekoppelt ist, die mit dem Systembus 141 gekoppelt sind. Diese umfassen die Befehlscache-Speichermanagementeinheit 120, die Datencache-Speichermanagementeinheit 130, den Hauptspeicher 140, die Ein/Ausgabe-Verarbeitungseinheit 150 und alle weiteren Systemelemente, die mit dem Systembus 141 koppeln. Wo mehrere Einrichtungen gleichzeitig Zugang zum Systembus 141 anfordern, ist eine Buszuteilungseinheit 180 mit den Vorrichtungen gekoppelt, die mit dem Systembus 141 koppeln. Die Buszuteilungseinheit weist gesonderte Kopplungen mit jedem der potenziellen Bus-Master auf, die mit dem Systembus 141 koppeln. Der Buszuteiler 180 benutzt ein Handshake-Schema und priorisiert den Zugriff auf den Systembus 141. Die Buszuteilungseinheit 180 steuert, vermeidet Kollisionen auf dem Systembus 141 und schlichtet im Allgemeinen die Verwendung des System busses.
  • Der Prozessor 110 enthält Cache-Schnittstellen, die für sich gegenseitig ausschließende und unabhängig betriebsfähige Dual-Cache-Schnittstellensysteme sorgen, die eine mit dem Bus 121 gekoppelte Befehlsschnittstelle und eine mit dem Bus 131 gekoppelte Datenschnittstelle umfassen. Die Befehlsschnittstelle steuert den Informationsaustausch mit der externen Befehlscache-Speichermanagementeinheit 120 und sorgt für das Durchkoppeln von Befehlen von der Befehlscache-Speichermanagementeinheit 120 zum Prozessor 110. Die Datenschnittstelle sorgt für eine Steuerung des Informationsaustauschs mit der externen Datencache-Speichermanagementeinheit 130 und steuert den bidirektionalen Austausch von Daten zwischen dem Prozessor 110 und der Datencache-Speichermanagementeinheit 130. Die Prozessor-Ausführungseinheit ist mit der Befehlsschnittstelle und der Datenschnittstelle des Prozessors gekoppelt. Die Ausführungseinheit sorgt für die selektive Verarbeitung von Daten, die in Reaktion auf das Decodieren und Ausführen eines entsprechenden Befehls oder mehrerer entsprechender Befehle, die von der Befehlscache-Speichermanagementeinheit 120 erhalten worden sind, von der Datencache-Speichermanagementeinheit erhalten werden. Die Befehlsschnittstelle koppelt über einen sehr schnellen Befehlscache-Speichermanagementeinheit-Bus 121 mit der Befehlscache-Speichermanagementeinheit 120. Die Datenschnittstelle koppelt über einen sehr schnellen Datenbus 131 mit der Datencache-Speichermanagementeinheit 130. Die Befehlsschnittstelle und die Datenschnittstelle sorgen für die Fähigkeit zu einer sehr schnellen Übertragung von Befehlen von der Befehlscache-Speichermanagementeinheit 120 zum Prozessor 110 und für eine gleichzeitige unabhängige Übertragung von Daten zwischen der Datencache-Speichermanagementeinheit 130 und dem Prozessor 110.
  • Die Datencache-Speichermanagementeinheit 130 und die Befehlscache-Speichermanagementeinheit 120 haben jeweils eine entsprechende zweite Busschnittstelle für die Kopplung mit einem Hauptsystembus 141, um davon an einen Hauptspeicher 145 anzukoppeln, der ein sehr großer, verhältnismäßig langsamer Speicher ist. Der Systembus 141 hat eine einigermaßen hohe Geschwindigkeit, ist jedoch gegenüber dem Datenbus 131 oder dem Befehlsbus 121 langsam. Der Systembus 141 liefert außerdem Mittel, um weitere Schaltungen und Peripheriegeräte durch Ankoppeln in die Mikroprozessor-Systemarchitektur einzubeziehen.
  • Die Befehls- und Datenschnittstelle des Prozessors 110 liefert die erforderliche Steuerungs-, Zeitsteuerungs- und Pufferbetriebslogik für eine vollständige Steuerung der Schnittstelle und des Datenübertragungsvorgangs zwischen dem Prozessor 110 und dem Cache 120 bzw. 130. Ähnlich hierzu weisen die Befehlscache-Speichermanagementeinheit 120 und die Datencache-Speichermanagementeinheit 130 die erforderliche Steuerungs- und Pufferbetriebsschaltung auf, um die Schnittstelle zum Prozessor 110 über die jeweilige Befehlsschnittstelle und Datenschnittstelle zu ermöglichen. Auch weisen die Befehlscache-Speichermanagementeinheit 120 und die Datencache-Speichermanagementeinheit 130 jeweils die erforderliche Steuerungs- und Pufferbetriebsschaltung auf, um für eine Schnittstelle und ein Speichermanagement des Hauptspeichers 140 über den Systembus 141 zu sorgen. Funktionell sorgen die Befehlscache-Speichermanagementeinheit 120 und die Befehlsschnittstelle für ein separates Untersystem, das von der Datencache-Speichermanagementeinheit 130 und der Datenschnittstelle unabhängig ist. Die Befehlscache-Speichermanagementeinheit 120 greift direkt und unabhängig vom Betrieb der Datencache-Speichermanagementeinheit 130 auf den Hauptspeicher 140 zu und umgekehrt.
  • In 2 ist der Prozessor 110 von 1 genauer gezeigt. Wie 2 zeigt, umfasst der Prozessor 110 des Weiteren ein Befehlsregister 102, eine Befehlsdecodiereinrichtung 103 und eine Ausführungseinheit 105. Das Befehlsregister 102 liefert Mittel zum Speichern und Ausgeben von Befehlen, die von der Befehlscache-Speichermanagementeinheit 120 über den Befehlsbus 121 erhalten worden sind, an die Befehlsschnittstelle des Prozessors 110. Der Ausgang des Befehlsregisters 102 ist mit der Befehlsdecodiereinrichtung 103 gekoppelt. Die Befehlsdecodiereinrichtung 103 liefert Mittel zum Ausgeben von Operationsauswahlsignalen in Reaktion auf die Decodierung der Befehlsausgabe, die vom Befehlsregister 102 empfangen wurde. Die von der Befehlsdecodiereinrichtung 103 ausgegebenen Operationsauswahlsignale werden zur Ausführungseinheit 105 gekoppelt. Die Ausführungseinheit 105 liefert Mittel zur Verarbeitung ausgewählter Daten, die von der Datencache-Speichermanagementeinheit 130 über die Datenschnittstelle des Prozessors 110 und den Datenbus 131 in Reaktion auf die von der Befehlsdecodiereinrichtung 103 empfangenen Operationsauswahlsignale empfangen worden sind.
  • In einer bevorzugten Ausführungsform sorgt der Prozessor 110 für eine Pipeline- oder Fließbandverarbeitung. Wie in 2 gezeigt ist, gibt es fünf Stufen der Fließbandverarbeitung: das Befehlsregister 102, die Stufe C (104) in der Befehlsdecodiereinrichtung 103 und die Stufen D (106), E (107) und F (108) jeweils in der Ausführungseinheit 105. Folglich können in Reaktion auf Mehrfachbefehle mehrere Operationen gleichzeitig ausgeführt werden.
  • In der in 2 gezeigten Ausführungsform umfasst die Ausführungseinheit 105 ferner eine Schnittstelle 109, die Mittel liefert, um die aus der Verarbeitung der ausgewählten Daten resultierende Ausgabe zur Datenschnittstelle des Prozessors 110 zu koppeln, um die Ergebnisdaten von dort aus zur Datencache-Speichermanagementeinheit 130 zu koppeln. Die Schnittstelle 109 sorgt für eine bidirektionale Kopplung von Daten zwischen der Ausführungseinheit 105 und der Datenschnittstelle des Prozessors 110 und von dort aus über den Datenbus 131 zur Datencache-Speichermanagementeinheit 130.
  • In 3 ist die Befehlsdecodiereinrichtung 103 von 2 genauer gezeigt, wobei eine Ausführungsform einer Implementierung der Befehlsdecodiereinrichtung 103 veranschaulicht ist. Wie in 3 gezeigt ist, umfasst die Befehlsdecodiereinrichtung 103 eine sequenzielle Zustandsmaschine 113, welche die vom Befehlsregister 102 empfangenen Befehle decodiert und in Reaktion auf die Befehlsausgabe des Befehlsregisters 102 Operationscodesignale liefert. Die Operationscodesignale von der sequenziellen Zustandsmaschine 113 werden zu einer Synchronisations- und Steuerschaltung 114 gekoppelt, welche Mittel für die Ausgabe der Operationsauswahlsignale liefert, die die Reihenfolge der Befehlsausführung steuern, um die Ausführungseinheit 105 in Reaktion auf die Ausgabe der Operationscodesignale von der sequenziellen Zustandsmaschine 113 zu koppeln.
  • In einer bevorzugten Ausführungsform ist jeder Mikroprozessor eine auf einem einzigen Chip integrierte Schaltung. In Abhängigkeit von konfigurativen Zwängen können jedoch auch Ausführungsformen mit mehreren Chips verwendet werden.
  • Des Weiteren umfasst die Befehlsschnittstelle des Prozessors 110 einen mehrstufigen Befehlspuffer, der Mittel zum Speichern mehrerer Befehle der Reihe nach, jeweils einen Befehl pro Stufe, liefert und welcher des Weiteren für Mittel zur selektiven Ausgabe der gespeicherten Befehle an die Ausführungsmittel 105 sorgt. Das Cache-Vorsignal wird von der Befehlsschnittstelle gesteuert, sobald sie Freiraum hat. Das Cache-Vorsignal steuert die Zugriffe der Befehlscache-Speichermanagementeinheit. Folglich sorgt die Befehlsschnittstelle für einen mehrstufigen Befehlspuffer, um mehrere Befehlswörter als Ausgabe in einem seriellen Strom von der Befehlscache-Speichermanagementeinheit 120 über den Befehlsbus 121 zu koppeln und zu speichern. Dieser mehrstufige Befehlspuffer sorgt für eine Erhöhung der Befehlsdurchsatzrate und kann für eine Fließbandverarbeitung des Prozessors 110 verwendet werden. Ein externer Systemtakt 160 liefert Taktsignale für Synchronisierungen innerhalb des Prozessors 110 und zu diesem.
  • Des Weiteren umfasst die Befehlsschnittstelle des Prozessors 110 ein Speicheradressregister, das in Reaktion auf das Auftreten einer Aufgabenumschaltung oder einer Verzweigung in der Operation des Mikroprozessorsytems gezielt eine Startbefehlsadresse zur Speicherung in einem Befehlszähler der Befehlscache-Speichermanagementeinheit 120 ausgibt. Eine Programm- oder Aufgabenumschaltung (context switch) kann einen nicht programmierten Sprung, eine Unterbrechung oder irgendeine Initialisierung von Programmen umfassen, die eine Initialisierung des Befehlszählers des Befehlscaches 120 erfordern, um einen neuen Startpunkt für einen Befehlsstrom anzugeben. Die Befehlsschnittstelle liefert eine Ausgabe eines Cache-Vorsignals, das außer während einer Aufgabenumschaltung oder Verzweigung für ein gezieltes Inkrementieren des Befehlszählers der Befehlscacheprogramm-Managementeinheit sorgt. Bei Auftreten einer Aufgabenumschaltung oder Verzweigung wird der Befehlszähler der Befehlscache-Speichermanagementeinheit 120 mit einem neuen Wert aus dem Speicheradressregister der Befehlsschnittstelle des Prozessors 110 geladen. Ein Systemtaktgeber 160 liefert Taktsignale an die Befehlsschnittstelle des Mikroprozessors 110.
  • Bei einer Initialisierung des Systems oder während einer Aufgabenumschaltung oder Verzweigung bewirkt das Befehlsschnittstellen-Speicheradressregister des Prozessors 110 das Laden des Befehlszählers des Befehlscaches 120. Danach bewirkt die Befehlscache-Speichermanagementeinheit 120, wenn sie durch das Cache-Vorsignal freigegeben ist, die Ausgabe mehrerer Befehle (z. B. eines Vierfachworts), die zur Befehlsschnittstelle des Prozessors 110 gekoppelt werden. Danach werden in Reaktion auf die Ausgabe des Befehlszählers der Befehlscache-Speichermanagementeinheit 120 die Befehle sequenziell, unabhängig von jeder weiteren und ohne jede weitere Adressausgabe von der Befehlsschnittstelle des Prozessors 110 an die Befehlscache-Speichermanagementeinheit 120 ausgegeben.
  • Wie gezeigt ist, umfasst die Datenschnittstelle des Prozessors 110 des Weiteren ein Speicheradressregister und eine Schnittstelle, die eine Datenadresse ausgibt, um mit dem Adressregister 505 der externen Datencache-Speichermanagementeinheit 503 zu koppeln. Der Haupttakt MCLK des Systemtaktgebers 160 ist für die Synchronisierung der Datenübertragung zwischen der Datencache-Speichermanagementeinheit 130 und der Datenschnittstelle des Prozessors 110 an die Datencache-Speichermanagementeinheit 130 gekoppelt. In einer bevorzugten Ausführungsform sind Mittel bereitgestellt, um für jede Adressenausgabe von der Datenschnittstelle 302 unabhängig von jeder zwischenzeitlichen Adressenausgabe von der Adressschnittstelle 324 und ohne eine solche eine festgelegte Anzahl von Datenwörtern zwischen der Datencache-Speichermanagementeinheit 503 und der Datenschnittstelle 302 des Mikroprozessors 12 zu koppeln.
  • Die Befehlsschnittstelle des Prozessors 110 und die Befehlscache-Speichermanagementeinheit 120 sorgen für eine kontinuierliche Ausgabe eines Befehlsstroms mit einer nicht vordefinierten Länge von der Befehlscache-Speichermanagementeinheit 120 zur Befehlsschnittstelle des Prozessors 110 in Reaktion auf nur eine einzige Startadressenausgabe von dem Speicheradressregister der Befehlsschnittstelle und einer Ausgabe eines aktiven Cache-Vorsignals, wobei der Befehlsstrom andauert, bis eine Verzweigung oder eine Aufgabenumschaltung auftritt.
  • Der Betrieb der Datenschnittstelle des Prozessors 110 und der Datencache-Speichermanagementeinheit 130 sorgt für die Übertragung eines Datenworts oder einer definierten Anzahl von Datenwörtern zwischen diesen für jede Adressausgabe vom Prozessor 110 an die Datencache-Speichermanagementeinheit. Das erste Wort einer derart definierten Menge von Wörtern wird in Reaktion auf die Adresse vom Prozessor 110 ausgegeben. Die verbleibenden Wörter werden übertragen, sobald das System bereit ist. Bei Abschluss der Übertragung dieser definierten Anzahl von Wörtern muss eine neue Adresse aus dem Prozessor 110 in das Adressregister der Datencache-Speichermanagementeinheit 130 geladen werden. Jede Datenübertragung zwischen der Datencache-Speichermanagementeinheit 130 und der Datenschnittstelle des Prozessors 110 erfordert das Laden einer neuen Adresse von der Datenschnittstelle des Prozessors 110 in das Adressregister der Datencache-Speichermanagementeinheit 130. Obwohl diese Übertragung ein Wort oder mehrere Wörter umfassen kann, ist die Anzahl der Wörter fest und zu Beginn der Übertragung definiert, wobei jede Übertragung verlangt, dass eine eigene, neue Adresse geladen wird.
  • Der Haupt- oder Primärspeicher 140 ist mit einem Systembus 141 gekop pelt, mit dem auch die Datencache-Speichermanagementeinheit 130 und die Befehlscache-Speichermanagementeinheit 120 gekoppelt sind. Der Hauptspeicher 140 speichert selektiv und gibt digitale Informationen aus einem adressierbaren Schreib-Lesespeicher selektiv aus.
  • Die Befehlscache-Speichermanagementeinheit 120, die über den Systembus 141 mit dem Hauptspeicher 140 gekoppelt ist, managt den gezielten Zugriff auf den Hauptspeicher 140 und sorgt für eine Übertragung von Daten aus dem Schreib-Lesespeicher des Hauptspeichers 140 zur Befehlscache-Speichermanagementeinheit 120 für die Speicherung in dem Schnellzugriftsspeicher der Befehlscache-Speichermanagementeinheit 120. Außerdem stellt die Befehlscache-Speichermanagementeinheit 120 Mittel bereit, um die gespeicherten Daten aus dem adressierbaren Schnellzugriffs-Schreib-Lesespeicher der Befehlscache-Speichermanagementeinheit selektiv an den Prozessor 110 auszugeben.
  • Die Datencache-Speichermanagementeinheit 130 ist über das Bussystem 141 mit dem Hauptspeicher 140 gekoppelt und managt den selektiven Zugriff auf den Hauptspeicher 140 für das Speichern und Zurückladen von Daten zwischen dem Hauptspeicher 140 und der Datencache-Speichermanagementeinheit 130. Die Datencache-Speichermanagementeinheit 130 umfasst des Weiteren Mittel, die über den sehr schnellen Datenbus 131 Daten vom Prozessor 110 selektiv speichern oder an diesen ausgeben oder die über den Systembus 141 Daten vom Hauptspeicher 140 selektiv speichern oder an diesen ausgeben. Die Datencache-Speichermanagementeinheit 130 sorgt für eine selektive Speicherung und Ausgabe der Daten aus ihrem adressierbaren Schnellzugriffs-Schreib-Lesespeicher.
  • Der Prozessor 110 ist über den Befehlsbus 121 mit der Befehlscache-Speichermanagementeinheit 120 und davon unabhängig über den Datenbus 131 mit der Datencache-Speichermanagementeinheit 130 gekoppelt. Der Prozessor 110 verarbeitet die von der Datencache-Speichermanagementeinheit 130 erhaltenen Daten in Reaktion auf die Decodierung und Ausführung jeweils eines der Befehle, die von der Befehlscache-Speichermanagementeinheit 120 empfangen worden sind. Die Verarbeitung kann arithmetisch, logisch, auf Relationen beruhend usw. sein.
  • Wie weiter oben erörtert worden ist, wird der Befehlszähler der Befehlscache-Speichermanagementeinheit 120 nur während Verzweigungen und Aufgabenumschaltungen mit einer Adresse geladen. Ansonsten arbeitet die Befehlscache-Speichermanagementeinheit in einer einen kontinuierlichen Strom ausgeben den Betriebsart. Folglich wird, wenn der Befehlszähler der Befehlscache-Speichermanagementeinheit 120 mit einer Startadresse geladen ist und das Cache-Vorsignal aktiviert ist, das Datum des entsprechenden adressierten Speicherorts vom Speicher der Befehlscache-Speichermanagementeinheit 120 an den Prozessor 110 ausgegeben, und nachfolgende Befehle werden in einem Strom seriell, jeweils als ein Befehl zu einem Zeitpunkt an den Prozessor 110 übertragen. Jedes nachfolgende Befehlswort oder jede nachfolgende Gruppe von Befehlswörtern wird übertragen, ohne dass irgendeine zusätzliche Adressenübertragung von dem Prozessor 110 zu dem Befehlszähler der Befehlscache-Speichermanagementeinheit 120 erforderlich wäre, außer wenn eine Aufgabenumschaltung oder eine Verzweigung nötig ist.
  • MCLK ist der Takt für die gesamte Haupttaktgeberlogik (z. B. 33 MHz). BCLK ist der Systembustakt, vorzugsweise entweder ½ oder ¼ MCLK.
  • Für die Synchronisation des Systembusses 141 wird BCLK an alle Einheiten auf dem Systembus, d. h. die CPU, E/A-Verarbeitungseinheiten, Buszuteiler, Caches, Unterbrechungscontroller, Mikroprozessoren usw. geliefert. Alle Signale müssen auf den Bus gebracht werden und bei der ansteigenden Flanke von BCLK abgetastet werden. Die Laufzeitverzögerung der Signale muss innerhalb eines Zyklus von BCLK sein, um die Synchronie des Busbetriebs zu gewährleisten. Die Phasenbeziehungen zwischen BCLK und MCLK sind genau festgelegt. In einer Ausführungsform ist BCLK ein Takt mit einem Tastgrad von 50% der doppelten oder vierfachen Dauer der Zykluszeit von MCLK in Abhängigkeit von der physischen Größe und von den Lasten auf dem Systembus 141.
  • Wie dargestellt ist, erfolgt die Übertragung von Befehlen aus der Befehlscache-Speichermanagementeinheit 120 zu dem Prozessor 110. Die Datenübertragung zwischen der Datencache-Speichermanagementeinheit 130 und dem Prozessor 110 ist bidirektional. Die Schnittstelle zwischen der Befehlscache-Speichermanagementeinheit 120 und dem Hauptspeicher 140 ist frei von Befehlen aus dem Hauptspeicher 140 an die Befehlscache-Speichermanagementeinheit 120 in Reaktion auf die Speichermanagementeinheit des Befehlscachesystems 120. Dies tritt jedes Mal dann auf, wenn ein Befehl angefordert wird, der nicht im Cachespeicher der Befehlscache-Speichermanagementeinheit 120 resident ist. Die Übertragung von Daten zwischen der Datencache-Speichermanagementeinheit 130 und dem Hauptspeicher 140 ist bidirektional. Die Speichermanagementeinheiten des Befehlscaches 120 und des Datencaches 130 leisten das gesamte Speichermanagement, den Speicherschutz sowie die Übersetzung von virtuellen in physische Adressen.
  • Wie dargestellt worden ist, liefert der Prozessor 110 Ausgaben virtueller Adressen, die eine assoziative Abbildungsbeziehung zu einer entsprechenden physikalischen Adresse im Hauptspeicher haben. Die Speichermanagementeinheiten des Befehlscaches 120 bzw. des Datencaches 130 reagieren auf entsprechende Ausgaben virtueller Adressen von den Befehls- und Datenschnittstellen des Prozessors 110, so dass die Speichermanagementeinheiten gezielt die entsprechende Ausgabe der zugeordneten abgebildeten digitalen Informationen für den entsprechenden virtuell adressierten Speicherort liefern. Wenn die für den adressierten Speicherort angeforderten Informationen in den entsprechenden Speichern der Cache-Speichermanagementeinheiten 120 und 130 nicht gespeichert sind (d. h. wenn ein Cache-Fehltreffer vorliegt), liefert die entsprechende Speichermanagementeinheit der Caches eine übersetzte physikalische Adresse als Ausgabe an den Hauptspeicher 140. Die entsprechenden Informationen werden dann vom Hauptspeicher 140 zu der entsprechenden Befehlscache-Speichermanagementeinheit 120 oder zu oder von der Datencache-Speichermanagementeinheit 130 und gegebenenfalls zu dem Prozessor 110 durchgekoppelt.
  • Wie hier erörtert worden ist, umfasst das System von 1 eine Zentraleinheit 110, in der bevorzugten Ausführungsform einen Einchip-Mikrorechner mit in diesem enthaltenen eigenen Busschnittstellen der Befehlscache-Speichermanagementeinheit und der Datencache-Speichermanagementeinheit. Die CPU 110 koppelt über einen eigenen Befehlsbus 121 mit der Befehlscache-Speichermanagementeinheit 120. Der Befehlsbus 121 ist ein sehr schneller Bus, welcher, wie weiter oben erörtert worden ist, außer während Verzweigungen und Aufgabenumschaltungen, ohne Eingriffnahme des Prozessors Befehlsströme liefert. Der Befehlsbus 121 sorgt für sehr schnelle Befehlsübertragungen und schafft Mittel für die Übertragung von Befehlen mit einer sehr hohen Geschwindigkeit von der Befehlscache-Speichermanagementeinheit 120 zu dem Prozessor 110. Der Prozessor 110 ist außerdem über einen eigenen und unabhängigen Hochgeschwindigkeitsdatenbus 131 an eine Datencache-Speichermanagementeinheit gekoppelt. Der Datenbus 131 sorgt für eine sehr schnelle bidirektionale Übertragung von Daten zwischen dem Prozessor 110 und der Datencache-Speichermanagementeinheit 130.
  • Die beiden voneinander getrennten Cacheschnittstellenbusse, der Befehlsbus 121 und der Datenbus 131, umfassen jeweils mehrere Signale. Wie in den 4 und 5 für eine Ausführungsform gezeigt ist, sind die folgenden Signale auf dem Datencachebus 131, dem Befehlscachebus 121:
    Figure 00160001
  • ADF<31:0>: Adress-/Datenbus
  • Diese Leitungen sind bidirektional und schaffen einen multiplexierten Adress-/Datenbus. Die CPU gibt für einen Taktzyklus eine Adresse zur Weitergabe an Speicher auf diese Leitungen. Bei Speicheroperationen folgen dieser Adresse die Daten. Bei Ladeoperationen oder einem Testen und Setzen werden diese Busleitungen nach dem Adresszyklus frei (potenzialfrei oder floating), so dass sie bereit sind, Daten von der Datencache-Speichermanagementeinheit aufzunehmen. Der Datencache gibt dann für eine Ladeoperation oder für ein Testen und Setzen die adressierten Daten auf die Leitungen.
    MPUO: SSW30, Hauptsteuerprogramm-Betriebsart
    MPK: SSW29, Sicherungsschlüssel
    MPUOU: SSW28, Auswahl eines Anwendungsprogramm-Datenraums in der Hauptsteuerprogramm-Betriebsart
    MPKU: SSW27, Sicherungsschlüssel eines Anwendungsprogramm-Datenraums in der Hauptsteuerprogramm-Betriebsart
    MPM: SSW26, virtuell abgebildet.
  • Diese Signale repräsentieren das Systemzustandswort (SSW<30:26>) in der CPU und werden sowohl an den Datencache als auch an den Befehlscache geliefert.
  • FC<3:0> Funktionscode/Programmunterbrechungscode
  • Die CPU gibt den "Typ der Datenübertragung" für einen Taktzyklus während des Adresszyklus auf die Leitungen FC<3:0>. Der Datencache oder der Befehlscache sendet bei anormalen Operationen "den Typ der Programmunterbrechung" mit dem Signal TSTB zurück.
  • Übertragungstyp
    Figure 00160002
  • Figure 00170001
  • Der Datencachespeicher legt den Programmunterbrechungscode TRAP auf FC, um der CPU zu antworten.
  • Programmunterbrechungscode
    Figure 00170002
  • ASF: Adresshinweissignal (address strobe)
  • ASF wird von der CPU aktiviert, um anzuzeigen, dass die "Adresse" und der "Datenübertragungstyp" auf den Leitungen ADF<31:10> und FC<3:0> jeweils gültig sind. ASF ist einen halben Taktzyklus früher aktiv, als die Adresse auf dem ADF-Bus ist.
  • RSP: Antwortsignal
  • Bei Ladeoperationen wird das Signal RSP vom Datencache aktiviert, um anzuzeigen, dass Daten auf dem ADF-Bus bereitstehen. RSP hat die gleiche zeitliche Steuerung wie die Daten auf dem ADF-Bus. Bei einer Ladeoperation sendet der Datencache Daten an die CPU, während er bei einer Speicherungsoperation Daten von der CPU entgegennimmt.
  • Bei Speicherungsoperationen wird RSP aktiviert, wenn die Datencache-Speichermanagementeinheit bereit wird, die nächste Operation entgegenzunehmen. Beim Laden eines Doppelworts wird RSP mit jeder Datenpaketübertragung zurückgesendet. Beim Speichern eines Doppelworts wird nur ein RSP zurückgesendet, nachdem das zweite Datenpaket entgegengenommen worden ist.
  • TSTB: Programmunterbrechungshinweissignal (TRAB strobe)
  • TSTB wird mit dem Programmunterbrechungscode auf FC<2:0> vom Datencache ausgesendet, um anzuzeigen, dass eine Operation abgebrochen worden ist und dass der Programmunterbrechungscode auf den Leitungen FC<2:0> zur Verfügung steht. Bei einem schon korrigierten Fehler (MSBE) folgt auf TSTB zwei Taktzyklen später RSP, während bei irgendwelchen Störungen oder bei einem nicht korrigierbaren Fehler (MDBE) hingegen nur TSTB ausgesendet wird.
  • nDATA: Datencache
  • Ein niedriger Pegel (low) auf dieser Leitung zeigt an, dass der Chip mit der Datencache-Speichermanagementeinheit an den Datencachebus angeschlossen ist.
    Figure 00180001
  • IADF<31:0>: Adress-/Befehlsbus
  • Diese Leitungen sind bidirektional und bilden einen multiplexierten Adress-/Befehlsbus. Die CPU sendet eine virtuelle oder reale Adresse auf diesen Leitungen aus, wenn sie den Programmablauf ändert, etwa durch Verzweigen, Rücksprung, Steuerprogrammaufruf usw., oder wenn sie den Wert von SSW<30:26> ändert. Die Befehlscache-Speichermanagementeinheit gibt auf diesen Leitungen Befehle zurück.
  • MPUO, MPK, MPUOU, MPM : (siehe Datencachebus-Beschreibung dieser Leitungen)
  • IFC<3:0>: Funktionscode/Antwortcode
  • Der Befehlscachespeicher legt den Programmunterbrechungscode auf die Funktionscodeleitungen, um der CPU zu antworten.
  • Figure 00180002
  • Figure 00190001
  • IASF: Adresshinweissignal (address strobe)
  • IASF wird von der CPU aktiviert, um anzuzeigen, dass die Adresse auf den Leitungen IADF<31:0> gültig ist. IASF ist einen halben Taktzyklus früher aktiv, als die Adresse auf dem IADF-Bus ist.
  • ISEND: Befehl senden (d. h. Cache-Vorsignal).
  • ISEND wird von der CPU aktiviert, um anzugeben, dass die CPU bereit ist, den nächsten Befehl anzunehmen (z. B. ist der Befehlspuffer in der CPU nicht voll).
  • Bei der Abfallflanke von RSP muss ISEND aus sein, wenn der Befehlspuffer voll ist, ansonsten werden die nächsten Befehle von der Befehlscache-Speichermanagementeinheit gesendet. Wenn die neue Adresse erzeugt wird, beispielsweise bei einer Verzweigung, muss ISEND wenigstens einen Taktzyklus früher aus sein, als IASF aktiv wird.
  • IRSP: Antwortsignal
  • IRSP wird vom Befehlscache aktiviert, um anzuzeigen, dass ein Befehl auf den Leitungen IADF<31:0> bereitsteht. IRSP hat die gleiche zeitliche Steuerung wie die Daten auf dem Bus.
  • ITSTB: Programmunterbrechungshinweissignal (TRAP strobe)
  • Dieses Signal wird vom Befehlscache aktiviert, um anzuzeigen, dass der Cache seine Operation abgebrochen hat und dass auf den Leitungen IFC<3:0> ein Programmunterbrechungscode zur Verfügung steht. Bei einem schon korrigierten Fehler (MSBE) folgt auf TSTB zwei Taktzyklen später RSP, während bei Störungen oder bei einem nicht korrigierbaren Fehler (MDSE) hingegen nur TSTB ausgesendet wird und aktiv wird.
  • INST: Befehlscache
  • Ein hoher Pegel (high) auf dieser Leitung zeigt an, dass der Cache an den Befehlscache-Bus angeschlossen ist.
  • Sowohl die Befehlscache-Speichermanagementeinheit 120 als auch die Datencache-Speichermanagementeinheit 130 besitzt eine zweite Busschnittstelle, um mit dem Systembus 141 zu koppeln. Der Systembus 141 überträgt Informationen zwischen allen Elementen, die angekoppelt sind. Das Bustaktsignal BCLK vom Systemtaktgeber 160 sorgt für eine Synchronisation der Übertragungen zwi schen den Elementen, die an den Systembus 141 angekoppelt sind.
  • Wie in 6 gezeigt ist, sind der Systembusausgang der Befehlscache-Speichermanagementeinheit 120 und der Systembusausgang der Datencache-Speichermanagementeinheit 130 mit einem gemeinsamen Zwischenbus 133 gekoppelt, der mit der TTL-Treiber/Puffer-Schaltung 135 koppelt, um die Schnittstelle zum und vom Systembus 141 zu puffern und zu treiben. Dies ist besonders nützlich, wenn sowohl die Befehlscache-Speichermanagementeinheit 120 als auch die Datencache-Speichermanagementeinheit 130 monolithische, auf einem einzigen Chip integrierte Schaltungen sind, und wenn es erstrebenswert ist, die Bustreiber/-empfänger von den monolithischen integrierten Schaltungen zu isolieren, um die monolithischen integrierten Schaltungen vor Störeffekten von der Busschnittstelle zu schützen. Die folgenden Bussignale koordinieren die Bustreiber/-empfänger-Aktivität.
  • DIRout: AD-Bus nach außen gerichtet
  • Dieses Signal wird verwendet, um externe Treiber-Empfänger der AD-Leitungen zu steuern. Der Master-Cache aktiviert dieses Signal beim Erzeugen der Adresse und beim Aussenden von Daten in der Schreibbetriebsart. Der Slave-Cache aktiviert dieses Signal beim Aussenden der Daten in der Lesebetriebsart.
  • ICA/: Befehlscache-Zugriff
  • nICA wird nur von den Daten- und Befehlscaches sowie von der CPU verwendet. Dieses Signal wird vom Datencache zum zugehörenden Befehlscache gesendet, um auf den E/A-Raum in dem Befehlscache zugreifen zu können. Bei Eintreffen eines speicherabgebildeten E/A-Zugriff vom Systembus nimmt der Befehlsspeicher ihn nur dann als E/A-Befehl an, wenn das Signal nICA aktiv ist. Folglich nehmen die Caches E/A-Befehle nur von der zugehörenden CPU entgegen.
  • Eine synchrone Operation des Systembusses 141 ist in der obenbeschriebenen Systemumgebung solange möglich, wie keine Veränderung des Signals zu dem Zeitpunkt auftritt, zu dem es abgetastet wird. Zwei zeitliche Abstimmungen sind für die Ausführung dieser Operation von grundlegender Bedeutung: die eine betrifft die Erzeugung der Signale auf dem Bus und die andere die Abtastung zur Erfassung der Signale. Diese beiden Synchronisationssignale müssen aus dem Bustakt BCLK abgeleitet werden, der eine bestimmte Phasenbeziehung zum Haupttakt MCLK hat, um die bestimmte Beziehung zur internen Logikoperation aufrechtzuerhalten. Diese beiden Synchronisationssignale dürfen nur einen gerin gen Laufzeitunterschied von einer Einheit zur anderen auf dem Bus haben, um der folgenden Gleichung zu genügen: Tg-s > Tpro + Tskwobei Tg-s der Zeitraum vom Zeitpunkt der Signalerzeugung bis zum Zeitpunkt der Signalabtastung ist, Tpro die maximale Laufzeitverzögerungszeit der Signale ist und Tsk der Laufzeitunterschied des Bustakts ist.
  • Wenn die Hardware-Anforderungen an den Systembus der obigen Gleichung nicht genügen, werden die Signale in Bezug auf den Abtastzeitpunkt asynchron ankommen. In diesem Fall ist in der Busschnittstelle eine Synchronisiereinrichtung erforderlich, um die externen asynchronen Signale zu synchronisieren. Obwohl der asynchrone Betrieb weder die physische Größe des Busses noch irgendwelche Zeitverzögerungen einschränkt, besteht ein schwerwiegender Nachteil darin, dass es äußerst schwierig ist, die Möglichkeit eines "Synchronisationsfehlers" auszuschließen. Ein weiterer Nachteil des asynchronen Schemas ist eine Geschwindigkeitsbegrenzung infolge des Handshake-Protokolls, das bei asynchronen Schemata vorgeschrieben ist. Dies ist in einer Betriebsart zur Übertragung einer Datenmenge besonders uneffizient. Obwohl ein Handshake-Schema ein zweckmäßiges Verfahren für einen Informationsaustausch zwischen einer Quelle und einem oder mehreren Bestimmungsorten ist und obwohl es sich um ein sicheres Verfahren der Datenübertragung handelt, beschränkt das Ablaufsteuerungsprotokoll die Geschwindigkeit, die mitunter bei sehr schnellen Busoperationen unbefriedigend wird. Außerdem ist ein asynchroner Bus auch rauschempfindlich.
  • In der bevorzugten Ausführungsform hat der Systembus 141 einen Takt: BCLK. MCLK wird für die interne Logikoperation der CPU 110 und der Caches 120 und 130 verwendet, während BCLK verwendet wird, um die synchrone Ablaufsteuerung der Busoperation wie weiter oben beschrieben zu erzeugen.
  • Der Systembus kann für die Kompatibilität der Kombinationen aus Handshake-Schemata und Schemata, die nicht auf einem Handshake beruhen, sorgen.
  • In einer bevorzugten Ausführungsform ist der Systembus 141 ein synchroner Hochgeschwindigkeitsbus, der mehrere Master erlaubt. Jeder potenzielle Master kann eigene Unterbrechungsleitungen haben, die mit einem Unterbrechungskontroller 170 gekoppelt sind, der über Steuerleitungen 111 mit dem Prozessor 110 gekoppelt ist. Der Systembus 141 hat einen multiplexierten Daten-/Adressenpfad und ermöglicht die Übertragungen von einzelnen Wörtern oder von Blöcken aus mehreren Wörtern. Der Bus ist so optimiert, dass er eine effiziente CPU-Cache-Operation ermöglicht. Er weist keinen expliziten Lese-/Modifiziere-/Schreib-Zyklus auf, setzt dies aber durch Ausführen eines Lese-, dann eines Schreibzyklus, ohne den Bus abzugeben, um.
  • Als eine Veranschaulichung einer beispielhaften Ausführungsform von 1 umfasst das System eine einzige CPU 110, einen Buszuteiler 180 für acht Eingänge mit fester Priorität und einen Unterbrechungscontroller 170. Alle Signale werden an einer Taktflanke erzeugt und abgetastet und sollten wenigstens während einer Vorbereitungszeit vor der nächsten Taktflanke stabil sein und wenigstens während einer Haltezeit nach der Taktflanke konstant gehalten werden, um unbestimmte Schaltungsoperationen zu vermeiden. Dies bedeutet, dass Grenzen hinsichtlich der Busverzögerungen gezogen werden sollten, die ihrerseits die Buslänge und -last begrenzen.
  • Der Systembus 141 umfasst mehrere Signale. Beispielsweise kann der Systembus 141, wie in 5 für eine Ausführungsform veranschaulicht ist, die folgenden Signale umfassen, wobei "/" ein Signal mit "negativer Logik" (low true) angibt.
  • AD<31:0>: Adress-/Datenbus
  • Dies ist der multiplexierte Adress-/Datenbus. Während eines gültigen Buszyklus gibt der Bus-Master mit dem Recht an dem Bus eine Adresse auf den Bus. Danach gibt dieser Bus-Master entweder für ein Schreiben Daten auf den Bus oder bringt (floated) seine AD-Bus-Ausgänge auf einen hochohmigen Tristate-Zustand (floaten), um das Empfangen von Daten während des Lesens vorzubereiten.
  • CT<3:0>: Zyklustyp
  • CT<3:2> gibt den Typ des Masters auf dem Bus sowie das Stattfinden eines Lese- oder Schreibzyklus an.
  • Figure 00220001
  • Figure 00230001
  • CT(1:0) gibt die Anzahl der Wörter an, die in dem Zyklus übertragen werden sollen.
  • Figure 00230002
  • MS<4:0>: Systemspeicherraumbits
  • Die Systemspeicherraumbits legen den Speicheraum fest, auf welchen der aktuelle Zugriff erfolgen wird, und den Code, der angibt, dass der Cache einen internen Zyklus ausführen wird. Dieser Zyklus ist erforderlich, um entweder einen Cacheeintrag zu aktualisieren oder die Daten an den Systembus zu liefern, falls ein Cache eine neuere Kopie der Daten hat.
  • Figure 00230003
  • Eine Übertragung zwischen einer Cache-Speichermanagementeinheit und einer Vorrichtung in einem auf den Speicher abgebildeten Raum erfolgt mittels eines einzigen Worts oder nur mittels eines Teilworts.
  • Wenn die Übertragung in einen auf den Speicher abgebildeten E/A-Raum erfolgt, wird sie vom einen einzigen Zyklus umfassenden Typ sein, d. h. CT(1:0) ist (00); dann geben die zwei niedrigwertigen Speicherraumbits den Umfang der Referenced-Data an:
    Figure 00230004
    Figure 00240001
  • Das übertragene Byte oder Halbwort muss in den Busbits auftreten, auf welche die Adresse der Daten zeigt. Beispielweise müssen während eines Bytezugriffs auf die Adresse FF03 (HEX) die gewünschten Daten in den Bussignalen AD<23:16>, dem dritten Byte des Worts, erscheinen.
  • Wenn auf einen Cache 120, 130 durch ein gemeinsames Schreiben (d. h. ein Schreiben in einen gemeinsamen Raum im Hauptspeicher 140) oder durch ein E/A-Schreiben vom Systembus aus zugegriffen wird, muss die Trefferleitung in den entsprechenden Caches ungültig gemacht werden. Wenn durch ein E/A-Lesen vom Systembus aus auf einen Cache zugegriffen wird, müssen die entsprechenden geänderten, aber noch nicht freigegebenen Daten (Dirty-Data) ausgesendet werden.
  • Master dürfen nur den Typ (die Typen) eines Zyklus (von Zyklen) an den Slave ausgeben, auf den (die) der Slave antworten kann, ansonsten wird es eine Zeitüberschreitung des Busses geben.
  • AC/: aktiver Zyklus
  • Dieses Signal wird vom aktuellen Bus-Master gesetzt, um anzuzeigen, dass ein Buszyklus aktiv ist.
  • RDY/: bereit
  • RDY/ wird vom adressierten Slave ausgegeben, wenn er bereit ist, die angeforderte Busoperation durchzuführen und entweder die verfügbaren Daten genommen hat oder gelesene Daten auf den Bus gebracht hat. RDY/ darf nicht gesetzt werden, bis CBSY/ inaktiv wird. RDY/ kann zwischen Übertragungen bei Mehrfachwort-Zugriffszyklen negiert werden, um lange Zugriffszeiten zu berücksichtigen. Während Mehrfachwort-Lese- und Schreibzyklen muss RDY/ zwei Takte, bevor das ersten Wort der Übertragung transportiert wird, gesetzt werden. Wenn das nächste Datum verzögert werden soll, muss RDY/ im Takt, nachdem es gesetzt ist, negiert werden. Dieses Signal ist zwischen Vorrichtungen, die als Slaves reagieren können, festverdrahtet ODER-verknüpft.
  • CBSY/: Cache beschäftigt
  • CBSY/ wird von einem Cache ausgegeben, wenn er auf Grund eines Buszugriffs einen internen Zyklus ausführt. Der aktuelle Controller des Busses und der adressierte Slave dürfen den Zyklus nicht vollenden, bis CBSY "falsch" ge worden ist. Dieses Signal ist zwischen Caches festverdrahtet ODER-verknüpft. Die Leitung CBSY/ wird erst dann freigegeben, wenn die Operation beendet ist. In einer Betriebsart des Schreibens in den privaten Raum hält jeder Slave-Cache sein Signal CBSY/ in einem hochohmigen Zustand.
  • MSBE/: Speichereinzelbitfehler
  • Dieses Signal wird vom Hauptspeicher 140 ausgesendet, nachdem er einen Einzelbitspeicherfehler erfasst und korrigiert hat. Dieses Signal wird nur dann auf "wahr" gehen, wenn das fehlerhafte Datum auf dem Bus "wahr" ist (d. h. wenn das dritte Word einer vier Wörter umfassenden Übertragung einen korrigierten Lesefehler in diesem Zyklus hatte, dann wird während der Zeit, in der das dritte Wort auf dem Bus aktiv ist (MMBE) wahr sein).
  • MMBE/: Speichermehrfachbitfehler
  • Dieses Signal wird vom Hauptspeicher ausgegeben, wenn er einen unkorrigierbaren Speicherfehler erfasst. Dieses Signal wird nur dann auf "wahr" gehen, wenn das fehlerhafte Datum auf dem Bus "wahr" ist (d. h. wenn das dritte Wort einer vier Wörter umfassenden Übertragung einen unkorrigierbaren Lesefehler in diesem Zyklus hat, dann wird während der Zeit, in der das dritte Wort auf dem Bus aktiv ist, MMBE "wahr" sein).
  • BERR/: Busfehler
  • Dieses Signal wird von der Buszuteilungslogik ausgegeben, nachdem sie eine Bus-Zeitüberschreitung erfaßt hat oder ein Busparitätsfehler erfasst worden ist. Die überschrittene Signalzeit ist der Zeitabschnitt der Busbewilligung.
  • P<3:0>: Paritätsbits 3 bis 0
  • Diese sind die vier Paritätsbits für die vier Bytes auf dem Adress-/Datenbus <31:0>. Sowohl Adressen als auch Daten haben in allen Zyklen eine kontrollierte Parität.
  • PERR/: Paritätsfehler
  • Es handelt sich dabei um ein Open-Kollektor-Signal, das von der Paritätsprüfschaltung jeder Vorrichtung getrieben wird. Es wird gesetzt, wenn in einer Adresse oder in einem Datum ein Paritätsfehler erfasst worden ist. Es wird von der Buszuteilungslogik 180 zwischengespeichert, die dann eine Bus-Fehlersequenz erzeugt.
  • BRX: Busanforderung
  • Es handelt sich dabei um das Busanforderungssignal von der Einrichtung x an den Buszuteiler 180.
  • BGX: Busbewilligung
  • Es handelt sich dabei um das Busbewilligungssignal vom Buszuteiler 180 an die Einrichtung x.
  • LOCK
  • Dieses Signal wird während eines Lese-/Modifiziere-/Schreib-Zyklus erzeugt. Es hat die gleiche zeitliche Steuerung wie die Signale CT und MS.
  • MCLK: Haupttakt
  • Der Haupttakt MCLK wird an die CPU oder die CPUs 110 sowie die Caches 120 und 130 geliefert.
  • BCLK: Bustakt
  • Es handelt sich dabei um den Takt des Systembusses. Alle Signale werden bei seiner ansteigenden Flanke erzeugt und abgetastet.
  • RESET/
  • Es handelt sich dabei um das Rücksetzsignal des System-Masters. Es wird für eine große Anzahl von Bustaktzyklen geltend gemacht.
  • RAT: BCLK/MCLK-Rate
    • Niedrig: BCLK hat eine Frequenz von ½ MCLK (z. B. 60 ns).
    • Hoch: BCLK hat eine Frequenz von ¼ MCLK (z. B. 120 ns).
  • In einer Ausführungsform enthält die Systemarchitektur mehrere Cachespeicher, mehrere Prozessoren und E/A-Prozessoren. In dieser Ausführungsform besteht ein Problem darin, das gleiche Datum an jedem Ort, an dem es gespeichert und/oder verwendet wird, auf dem gleichen Wert zu halten. Um dieses Problem zu verringern überwachen die Cachespeicher den Systembus, wobei sie jeden Zyklus prüfen, um festzustellen, ob er von dem Typ ist, der die Datenkonsistenz in dem System beeinflussen könnte. Wenn ja, führt der Cache einen internen Zyklus aus, um zu ermitteln, ob er seine Daten löschen muss oder ob die Daten vom Cache statt von der adressierten Vorrichtung auf dem Bus an den Systembus geliefert werden müssen. Während der Cache dies entscheidet, setzt er CBSY/. Wenn er den Zyklus beendet hat, negiert er CBSY/. Wenn er das Datum besitzt, gibt er es auf den Bus und macht RDY/ geltend.
  • Die Buszyklen, die bewirken werden, dass der Cache einen internen Zyklus ausführt, sind:
    • 1. Ein E/A-Lesen an den privaten Speicherraum. Dies ermöglicht dem Cache, Daten zu liefern, die modifiziert worden sein können, aber noch nicht in den Speicher geschrieben worden sind. Der Speicherraumcode ist <010xx>. Das heißt der Speicherraum ist Hauptspeicher und das angeforderte Datum wird in einer Rückkopier-Betriebsart in einen privaten Speicherbereich gecachet. Wenn infolge eines Programmierungsfehlers ein Sechzehnfachwort-Zyklus als cachefähig erklärt worden ist und ein Cache-Treffer auftritt, wird der Cache die ersten vier Wörter korrekt liefern und dann den Wert des vierten Worts auf die verbleibenden 12 Wörter übertragen liefern.
    • 2. E/A-Schreibzyklen für ein Wort, vier oder sechzehn Wörter. Dies ermöglicht dem Cache, jedes Datum ungültig zu machen, das es enthält und das im Speicher zu ändern ist. Die Speicherraumcodes sind <001xx>, <001xx> und <010xx>. Das heißt Löschen jedes entsprechenden Datums, das gecachet ist.
    • 3. Einzelwort- und Vierfachwort-CPU-Schreiben in einen gemeinsam genutzten Speicher. Dies ermöglicht anderen Caches, jedes Datum, das sie enthalten, das im Speicher geändert wird, ungültig zu machen. Der Speicherraumcode ist <001xx>. Das heißt jedes entsprechende Datum, das cachefähig ist und sich in gemeinsam benutzten Speicherräumen befindet.
    • 4. Globales Schreiben in die Befehlsregister der Cache-Speichermanagementeinheit. In einem Mehrprozessorensystem, z. B. mit mehreren Cachepaaren, ist eine zusätzliche Einrichtung erforderlich, um die Leitung CBSY zu überwachen und das Signal RDY auszugeben, wenn CBSY in der globalen Betriebsart aus ist.
    • 5. Zugriff von der Datencache-Speichermanagementeinheit auf die ihr zugeordnete Befehlscache-Speichermanagementeinheit.
  • Es folgt eine beispielhafte Zusammenfassung der Anforderungen an eine Busübertragung, die erfüllt sein sollten, damit Daten erfolgreich über den Systembus übertragen werden. Außerdem könnten auf Grund von Softwarekonventionen weitere Einschränkungen erforderlich sein.
    • 1. Alle Aktivitäten erfolgen bei ansteigender Flanke von BCLK.
    • 2. Alle Signale müssen geeignete Aufbau- und Haltezeiten aufweisen.
    • 3. Master dürfen nur solche Zyklen an Slaves ausgeben, die die Slaves ausführen können. Dies sind: (i) Speichermanagement-E/A- und Bootzugriffe in nur einem einzigen Zyklus; (ii) Sechzehnfachwort-Übertragungen an Speicher dürfen nur als Zyklen vom E/A-Typ ausgegeben werden.
    • 4. Während cachefähiger Zyklen dürfen die Bus-Slaves kein RDY/ ausgeben, bis CBSY/ negiert worden ist. Während nicht cachefähiger Zyklen braucht der adressierte Slave CBSY/ nicht zu prüfen. Falls RDY/ gesetzt wird, wenn CBSY/ negiert ist, muss das Speichersystem seinen Zyklus vorzeitig abbrechen.
  • Ein typischer Zyklus des Systembusses 141 startet, wenn eine Vorrichtung die Herrschaft über den Bus anfordert, indem sie gegenüber dem Buszuteiler 180 BRX geltend macht. Kurze Zeit später sendet der Zuteiler 180 BGX zurück, um anzuzeigen, dass die anfordernde Vorrichtung den Bus benutzen darf. Beim nächsten Taktimpuls setzt die Vorrichtung AC/, die Busadresse, den Buszyklustyp und die Busspeicherraumcodes. Die Busadresse wird zwei BCLKs später entfernt. Wenn der Zyklus ein Schreibzyklus ist, dann werden Daten auf den Adress-/Daten-Leitungen geltend gemacht. Bei einem Lesezyklus werden die Adress-/Daten-Leitungen in Erwartung, dass Daten auf sie gebracht werden, auf einen hochohmigen Zustand für Tri-State gezogen. Dann wird eine der folgenden Möglichkeiten auftreten:
    • 1. Falls der Zyklus einen cacheinternen Zugriff enthält, wird der Cache (werden die Caches) CBSY/ setzen, bis er seine internen Operationen abgeschlossen hat (bis sie ihre internen Operationen abgeschlossen haben). Ein gesetztes CBSY/ hindert den Hauptspeicher daran, seinen Zyklus zu vollenden. Es gibt nun verschiedene mögliche Sequenzen, die auftreten könnten: i. Wenn der Zyklus ein E/A-Lesen in einem privaten Speicher ist und ein Cache das aktuellste Datum besitzt, wird der Cache das Datum auf den Systembus 141 geben, gleichzeitig RDY/ setzen und CBSY/ negieren. Ein auf "wahr" übergehendes RDY/ zeigt dem Speicher 140 an, dass er den derzeitigen Zyklus vorzeitig abbrechen muss. ii. Wenn der Zyklus ein E/A-Schreiben oder ein Schreiben in einen gemeinsamen Speicher ist, wartet der Speicher 140 darauf, dass CBSY/ negiert wird und setzt RDY/. iii. Wenn der Zyklus ein E/A-Lesen eines privaten Speichers im Hauptspeicher 140 ist und der Cache das Datum nicht besitzt, wird schließlich CBSY/ negiert. Dies ermöglicht dem Speicher 140, die Daten auf den Bus 141 zu geben und RDY/ zu setzen.
    • 2. Falls der Zyklus keinen Cachezugriff enthält, braucht CBSY/ nicht überwacht zu werden.
  • Ein auf "wahr" übergehendes RDY/ signalisiert dem Master, dass das Datum erfolgreich übertragen worden ist. Bei einem Einzelwortzugriff gibt es an, dass der Zyklus beendet ist. RDY/ bleibt "wahr" bis einen BCLK nach dem Abfall von AC/. Wenn es sich um einen Lesezyklus handelt, dann bleiben die Daten einen BCLK länger "wahr" als AC/. Bei einem Schreibzyklus fällt das Datum mit AC/ ab. BRX, MS und CT fallen ebenfalls mit AC/ ab. Ein auf "falsch" übergehendes BRX bewirkt, dass der Buszuteiler 180 beim nächsten BCLK die Busbewilligung BG abfallen lässt, wodurch der Zyklus beendet wird. RDY/ fällt mit BG ab. Wenn der Zyklus vom Mehrwort-Typ ist, dann zeigt ein auf "wahr" übergehendes RDY/ an, dass weitere Übertragungen stattfinden werden. Die letzte Übertragung eines Mehrwort-Zyklus erfolgt auf völlig gleiche Weise wie jene des entsprechenden Einwort-Zyklus.
  • Der Lese-/Modifiziere-/Schreib-Zyklus umfasst einen Lesezyklus und einen Schreibzyklus ohne eine zwischen diesen Zyklen stattfindende Buszuteilung. Die gelesenen Daten dürfen nicht später als die BCLK-Flanke entfernt werden, mit welcher das nächste AC/ gesetzt wird.
  • Ein Busfehlersignal BERR wird geliefert, um zu ermöglichen, dass der Systembus 141 nach Busfehlern ordnungsgemäß bereinigt wird. Da die Länge des längsten Zyklus bekannt ist (z. B. eines Lesens oder Schreibens von sechzehn Wörtern), ist es nur erforderlich, eine Zeitabschaltung von BG vorzunehmen, um einen ausreichenden Schutz zu schaffen. Wenn eine als Master agierende Vorrichtung BERR sieht, wird sie den Zyklus sofort vorzeitig abbrechen, BR abfallen lassen und vom Bus gehen. Die Busbewilligung BG wird an den aktuellen Master gesendet, wenn BERR abfällt. Die Bustreiberlogik ist so beschaffen, dass sie mit dieser Situation umgehen kann. Die Adresse, die zu Beginn des letzten Zyklus eine Buszeitabschaltung verursacht hat, ist in einem Register im Buscontroller gespeichert.
  • BERR wird auch erzeugt, wenn PERR/ (Paritätsfehler) auf "wahr" übergeht. Wenn eine Zeitabschaltung erfolgt und gleichzeitig PERR/ auf "wahr" übergeht, bekommt die Zeitabschaltung Vorrang.
  • Der Hauptspeicher 140, wie dargestellt, umfasst eine Schreib-Lese-Speicherfeld-Fehlerkorrektur sowie Treiber-Empfänger und eine Busschnittstellenschaltung, die für das Koppeln des Busses und für die Handhabung des Schnittstellenprotokolls für Übertragungen zwischen dem Hauptspeicher 140 und dem Systembus 141 sorgt. Die Speicherfehlerkorrektureinheit des Hauptspeichers 140 sorgt für eine Fehlererfassung und -korrektur, wenn aus dem Speicherinhalt des Hauptspeichers 140 gelesen wird. Die Fehlerkorrektureinheit ist mit dem Speicherinhalt des Speicherfelds des Hauptspeichers 140 und über den Systembus 141 mit der Datencache-Speichermanagementeinheit 130 sowie mit der Befehlscache-Speichermanagementeinheit 120 gekoppelt. Daten, die aus dem Speicher 140 ausgelesen werden, werden zwecks Fehlerkorrektur von der Fehlererfassungs- und Fehlerkorrektureinheit verarbeitet.
  • Der Prozessor 110 liefert in einer Art und Weise, wie sie weiter oben beschrieben ist, Adressen an die Befehlscache-Speichermanagementeinheit 120 und die Datencache-Speichermanagementeinheit 130, um die Startadresse der zu übertragenden Daten anzugeben. In der bevorzugten Ausführungsform werden diese Adressinformationen in einem virtuellen oder logischen Adressformat geliefert, das über eine assoziative Abbildung einer realen oder physikalischen Adresse im Hauptspeicher 140 entspricht. Der Hauptspeicher 140 sorgt für das Lesen und Schreiben von Daten adressierbarer Speicherstellen innerhalb des Hauptspeichers 140 in Reaktion auf physikalische Adressen, die über den Systembus 141 gekoppelt werden.
  • Die sehr schnellen Speicher der Befehlscache-Speichermanagementeinheit 120 und der Datencache-Speichermanagementeinheit 130 sorgen für die selektive Speicherung und Ausgabe von digitalen Informationen in Form einer assoziativen Abbildung von ihrem entsprechenden adressierbaren sehr schnellen Speicher. Die Befehlscache-Speichermanagementeinheit 120 enthält Speichermanagementmittel, die den gezielten Zugriff auf den primären Hauptspeicher 140 managen, die Abbildung und Übersetzung von virtuellen in physikalische Adressen ausführen und, wenn notwendig, für die Ausgabe der physikalischen Adresse an den Systembus 141 und von dort zum Hauptspeicher 140 sorgen. Außerdem hat die Datencache-Speichermanagementeinheit 130 einen sehr schnellen abgebildeten adressierbaren Speicher, der auf virtuelle Adressen, die vom Prozessor 110 ausgegeben werden, anspricht. In ähnlicher Weise wie die Befehlcache-Speichermanagementeinheit besitzt auch die Datencache-Speichermanagementeinheit 130 Speichermanagementmittel, die den gezielten Zugriff auf den Hauptspeicher 140 managen, wobei die Speichermanagementmittel die Abbildung und Übersetzung von virtuellen in physikalische Adressen umfassen, um, wenn erforderlich, in Reaktion auf die Ausgabe einer virtuellen Adresse vom Prozessor 110 für eine Ausgabe einer physikalischen Adresse an den Systembus 141 und von diesem an den Primär speicher 140 zu sorgen. Der Systembus 141 sorgt für eine Hochgeschwindigkeits-Kommunikationstechnik, die mit dem Hauptspeicher 140, der Befehlscache-Speichermanagementeinheit 120, der Datencache-Speichermanagementeinheit 130 und weiteren angeschlossenen Elementen gekoppelt ist, wobei er digitale Informationen zwischen diesen überträgt.
  • Die CPU 110 kann über zwei sehr schnelle Cachebusse, den Befehlscache-/Prozessor-Bus 121 und den Datencache-/Prozessorbus 131 gleichzeitig auf die zwei Cache-Speichermanagementeinheiten 120 und 130 zugreifen. Jede Cache-Speichermanagementeinheit greift auf den Systembus 140 zu, wenn es einen "Fehltreffer" bei einem CPU-Zugriff auf die Cache-Speichermanagementeinheit gibt. Die Cache-Speichermanagementeinheiten beseitigen im Wesentlichen den geschwindigkeitsbedingten Unterschied zwischen der Ausführungszeit der CPU 110 und der Zugriffszeit des Hauptspeichers 140.
  • Die E/A-Schnittstellen-Verarbeitungseinheit 150 umfasst einen E/A-Adapter 152, eine E/A-Prozessoreinheit 153 und einen lokalen Speicher MIO 154, wie in 1 gezeigt ist. Die E/A-Schnittstelle 152 verbindet den Systembus 141 mit einem externen E/A-Bus 151, an den externe E/A-Vorrichtungen angeschlossen sind. Verschiedene Versionen von E/A-Adaptern 152 können so beschaffen sein, dass sie mit einem sekundären Speicher, etwa mit Disketten bzw. Platten und Bändern, und sowohl mit verschiedenen üblichen E/A-Bussen, wie etwa VMEbus und MULTibus, als auch mit anwenderspezifischen Bussen verbunden sind. Die E/A-Prozessoreinheit 153 kann von jeder Art der gegenwärtig üblichen Mikroprozessoren sein oder kann ein nach Kundenwunsch hergestellter Mikroprozessor oder eine Direktzugriffslogik sein. E/A-Programme, einschließlich Plattenlaufwerksteuerprogramme, können in dem lokalen Speicher 154 gespeichert sein.
  • Die Betriebsarten der Datenübertragung auf dem Systembus 141 sind durch den CT-Code über einen CT-Bus definiert. In der bevorzugten Ausführungsform können Datenübertragungen von der Datencache-Speichermanagementeinheit 130 an den Hauptspeicher 140 (d. h. Mikroprozessor) entweder in einer Vierfachwort-Betriebsart (d. h. eine Adresse, gefolgt von vier aufeinander folgenden Datenwörtern) oder in einer Einzelwort-Betriebsart erfolgen.
  • Bei E/A-Lese-/Schreib-Operationen, die von einem E/A-Prozessor 150 initiiert sind, kann zusätzlich zu der weiter obenbeschriebenen Einzel- und Vierfachbetriebsart der Blockbetrieb erklärt werden. Die Blockbetriebsart ermöglicht eine Datenübertragung von 16 aufeinander folgenden Wörtern, um die Datenübertragungsrate auf dem Systembus 141 zu erhöhen. Diese wird gewöhnlich nur verwendet, um Seiten beim E/A-Lesen "durchzuschreiben". Bei einem E/A-Schreiben können diese entweder als "Durchschreib"- oder als "Rückkopier"-Seiten deklariert werden. Wenn die E/A-Verarbeitungseinheit 150 die Datenübertragung vom Hauptspeicher 140 zur E/A-Verarbeitungseinheit 150 initiiert, könnte statt des Hauptspeichers 140, ein Cache auf die Anforderung der E/A-Verarbeitungseinheit reagieren müssen, wobei er mit einem Rückkopierschema antwortet, da nicht der Hauptspeicher 140, sondern der Datencache 130 die zuletzt modifizierten Daten haben könnte. Es wird ein spezielles Steuersignal an die Caches 120, 130 und an den Hauptspeicher 140 angelegt (d. h. Signale CBSY/ und RDY/).
  • Bei einer Lese-/Modifiziere-/Schreib-Operation wird die Einzelwort-Leseoperation von einer Einzelwort-Schreiboperation innerhalb eines Busanforderungszyklus gefolgt.
  • Der Hauptspeicher 140 kann mehrere Speichererweiterungskarten umfassen, die an einen speicherinternen Bus angeschlossen sind. Der speicherinterne Bus ist in einen Hauptspeicher-Adressbus und einen Hauptspeicher-Datenbus unterteilt. All die Datenübertragungsbetriebsarten, die oben beschrieben worden sind, werden unterstützt.
  • In einem besonderen Adressraum befindet sich Boot-ROM, der direkt an den Systembus 141 angeschlossen sein kann.
  • In der 1, auf die sich nun wieder bezogen wird, ist der Prozessor 110 außerdem über Unterbrechungsvektor- und Steuerleitungen 111 an einen Unterbrechungscontroller 170 angeschlossen dargestellt. Der gezeigte Unterbrechungscontroller 170 ist über die Unterbrechungsleitungen 145 an den Hauptspeicher 140, über die Unterbrechungsleitungen 155 an die E/A-Verarbeitungseinheit 150 und über Unterbrechungsleitungen 165 an den Matrixprozessor 188 gekoppelt. Der Unterbrechungscontroller 170 zeigt dem Prozessor 110 über Unterbrechungsleitungen 111 Unterbrechungen an.
  • Ein Unterbrechungscontroller 170 ist mit der CPU 110 gekoppelt, um auf Unterbrechungsanforderungen zu reagieren, die von Bus-Mastervorrichtungen ausgegeben worden sind.
  • Die CPU besitzt einen eigenen, unabhängigen Unterbrechungsbus 111, der maskierbare Unterbrechungen steuert und zu dem Unterbrechungscontroller 170 koppelt. Jede Prioritätsunterbrechung mit Ebenen kann durch das entspre chende Bit eines Unterbrechungszustandsworts in der CPU maskiert sein. Alle Ebenen sind vektorgesteuerte Unterbrechungen und haben gemeinsame Anforderungs- und Bestätigungs-/Freigabeleitungen.
  • Der Bus-Unterbrechungscontroller 170 ermöglicht Unterbrechungsquellen mit hoher Priorität, die CPU 110 zu unterbrechen. In einer Ausführungsform ist der Unterbrechungscontroller 170 vom parallelen Typ mit fester Priorität. Sein Protokoll ist jenem des Systembusses 141 ähnlich und multiplexiert die Gruppe und Ebene über dieselben Leitungen.
  • Der Unterbrechungscontroller 170 ist durch die folgenden Signale an alle potenziell unterbrechenden Einrichtungen angeschlossen:
  • IREQX/: Unterbrechungsanforderung von der Einrichtung x
  • Dieses Signal wird von der unterbrechenden Einrichtung als Anforderung eines Dienstes an den Unterbrechungscontroller 170 ausgegeben.
  • IENX/: Unterbrechungsfreigabe an Einrichtung x
  • Dieses Signal wird vom Unterbrechungscontroller 170 an die unterbrechende Einrichtung ausgegeben, um anzuzeigen, dass ihr der unterbrechende Dienst gewährt worden ist.
  • IBUS<4:0>: Unterbrechungsbus
  • Diese fünf Leitungen übertragen die Gruppe und Ebene der Unterbrechung zu dem Unterbrechungscontroller 170. Es handelt sich um einen Dreizustandsbus.
  • IREJ/: Unterbrechungszurückweisung
  • Dieses Signal gibt der unterbrechenden Einrichtung an, dass die CPU 110 abgelehnt hat, die Unterbrechung in dieser Gruppe anzunehmen. Es ist an alle unterbrechenden Einrichtungen angeschlossen.
  • Der Unterbrechungscontroller 170 ist durch die folgenden Signalleitungen 111 mit der CPU oder mit den CPUs 110 verbunden:
  • IR/: CPU-Unterbrechungsanforderung
  • IR/ gibt das Vorhandensein einer anstehenden vektorgesteuerten Unterbrechung an, deren Ebene auf den Leitungen VCT<2:0> verfügbar ist.
  • IAK/: CPU-Unterbrechungsbestätigung
  • Die CPU 110 sendet IAK/ aus, um anzugeben, dass die Unterbrechung angenommen ist, und liest gleichzeitig über die Leitungen VCT<4:0> die Vektornummer. IAK/ und IR/ konfigurieren ein Handshake-Schema.
  • MK: Maskierte Rückantwort
  • Jede CPU, die die aktuelle Unterbrechung ausblendet, sendet statt eines Signals IAK/ ein Signal MK zurück. In diesem Fall wird die Unterbrechung in der CPU nicht zwischengespeichert. MK kann von dem Unterbrechungskontroller verwendet werden, um die maskierte Unterbrechung freizugeben und den Weg für eine neu angekommene Unterbrechung einer höheren Ebene freizumachen.
  • VCT<5:0>: Ebenen- und Vektorcode
  • Die Leitungen VCT sind multiplexiert und liefern eine Ebenennummer und eine Vektornummer. Auf den Leitungen VCT<2:0> liegt eine Ebenennummer 0-7, wenn IR/ aktiv ist. Wenn IAK/ durch die CPU aktiviert worden ist, haben die Leitungen VCT<4:0> eine Vektornummer, der eine von 32 Unterbrechungen dieser Ebene kennzeichnet. Die Leitungen VCT koppeln Ausgaben vom Unterbrechungskontroller 170 zu der CPU oder zu den CPUs 110.
  • Die CPU aktiviert IAK/ und gibt über die Leitungen IBUS<4:0> die Vektornummer ein, die eine von 32 Unterbrechungen in jeder Ebene kennzeichnet. In einer Mehrprozessorenumgebung können diese Ebenen benutzt werden, um das System mit einem flexiblen Unterbrechungsschema zu versehen. Als ein Beispiel des Unterbrechungsschemas in einem Mehrprozessorensystem unterscheiden die Freigabebits des Unterbrechungsstatusworts der CPU, wenn alle Leitungen IREQx/ aktiviert sind, ob die CPU die Unterbrechung annehmen soll oder nicht. Jede Unterbrechungsebene hat folglich 32 Unterbrechungen, wobei die Ebene durch Steuern der Freigabebits im Unterbrechungszustandswort (d. h. Systemzustandswort) dynamisch einer beliebigen der CPUs zugeordnet werden kann.
  • Statt IAK/ werden (maskierte) Signale MK von den CPUs aktiviert, die die gegenwärtige Unterbrechung ausblenden. Die Unterbrechung wird von diesen CPUs nicht beachtet (d. h. nicht zwischengespeichert). Diese Signale ermöglichen dem Unterbrechungskontroller 170, die maskierte Unterbrechung zu reservieren und eine Unterbrechung höherer Priorität verarbeiten zu lassen, wenn diese auftritt.
  • Über die Elemente, die weiter oben für 1 beschrieben worden sind, hinausgehend können zu der Architektur weitere Elemente hinzugefügt und über den Systembus 141 an das System gekoppelt werden.
  • Ein Buszuteiler 180 ist mit dem Systembus 141 und mit an den Systembus 141 angeschlossenen Systemelementen, wie etwa der Befehlscache-Speichermanagementeinheit 120 und der Datencachespeichermanagementeinheit 130 gekoppelt, um Kanalzugriffskonflikte zwischen mehreren potenziellen "Master"-Elementen, die an den Systembus 141 gekoppelt sind, gezielt zu lösen. Dies bewahrt die Integrität des Nachrichtenverkehrs auf dem Systembus 141 und vermeidet Kollisionen von Datenübertragungen auf diesem. Der Buszuteiler 170 hat Ein- und Ausgänge für die Busanforderung und Busbewilligung, die jeweils mit der Befehlscache-Speichermanagementeinheit 120, der Datencache-Speichermanagementeinheit 130 und der E/A-Verarbeitungseinheit 150 gekoppelt sind. Beispielsweise ist dann, wenn die Befehlscache-Speichermanagementeinheit 120 eine Übertragung von Befehlsdaten vom Hauptspeicher 140 zum selben Zeitpunkt anfordert, zu dem die E/A-Verarbeitungseinheit 150 eine Datenübertragung zwischen der E/A-Verarbeitungseinheit 150 und dem Hauptspeicher 140 anfordert, der Buszuteiler 180 dafür verantwortlich, den Konflikt so zu lösen, dass die beiden Ereignisse der Reihe nach eintreten werden, statt das Auftreten eines Konflikts und einer Kollision infolge der gleichzeitigen Versuche zuzulassen.
  • Die Buszueilung unter Bus-Mastern erfolgt durch den Buszuteiler 180. Jeder Bus-Master aktiviert seine Busanforderungsleitung BR, wenn er auf den Systembus 141 zugreifen will. Der Buszuteiler 180 sendet ein Busbewilligungssignal (BG) an den neuen Master zurück, der zu diesem Zeitpunkt immer noch die höchste Priorität hat.
  • Der Bus-Master, der aktive Signale BR und BG hat, ist in der Lage, das Recht auf den Bus aufrechtzuerhalten, indem er sein Signal BR aktiv hält, bis die Datenübertragung abgeschlossen ist. Die übrigen Master werden ihre Signale BR aktiv halten, bis sie an der Reihe sind und ihr entsprechendes Signal BG aktiviert wird.
  • Der Systembus 141 ist ein gemeinsam benutztes Betriebsmittel, jedoch kann immer nur eine Einheit von dem Bus Gebrauch machen. Da es eine gewisse Anzahl von potenziellen "Bus-Master"-Einheiten gibt, die mit dem Systembus 141 gekoppelt sind, könnte jede davon versuchen, unabhängig auf den Systembus 141 zuzugreifen; der Buszuteiler 180 ist folglich ein notwendiges Element, das an den Systembus 141 gekoppelt sein muss.
  • Es gibt im Allgemeinen zwei Zuteilungsprioritätstechniken: eine feste Priorität und eine rotierende oder festgelegte Priorität. Außerdem sind zwei Arten von Schemata zum Gebrauch der Signale bekannt: ein serielles Schema (d. h. kaskadiert) und ein paralleles Schema. Das serielle Schema erfordert, wenn es als System mit fester Priorität konfiguriert ist, einen geringeren Schaltungsaufwand als ein paralleles Schema, ist jedoch, was die Durchsatzgeschwindigkeit anbelangt, verhältnismäßig langsam. Für die Kombination eines seriellen Schemas mit einer rotierenden Priorität kann ein hochleistungsfähiger Buszuteiler 180 sorgen. Das parallele Schema kann entweder mit einer festen oder einer rotierenden Priorität verwirklicht werden und ist schneller als ein serielles oder Mischschema, erfordert aber einen viel höheren Schaltungsaufwand. Der Buszuteiler 180 der vorliegenden Erfindung kann jedes dieser Schemata benutzen.
  • In einer alternativen Ausführungsform kann ein Schema einer rotierenden Priorität jedem Bus-Master eine gleiche Chance geben, den Systembus zu benutzen. Jedoch ist dort, wo E/A-Verarbeitungseinheiten oder eine bestimmte CPU eine höhere Priorität haben sollten, eine feste Priorität im Allgemeinen vorzuziehen und einfacher.
  • Die Buszuteilungseinheit 180 kann außerdem die Funktion der Überwachung aller langandauernden Busbelegungen durch irgendwelche Einheiten auf dem Systembus 141 wahrnehmen. Dies kann durch Messen der Aktivitätsdauer eines Busbewilligungssignals BG erfolgen. Falls die Dauer des Signals BG zu lang ist, kann für den Bus-Master, der gerade den Systembus 141 belegt, ein Busfehlersignal BERR erzeugt werden. BERR wird auch erzeugt, wenn PERR/ (Paritätsfehler) auftritt.
  • Wie weiter in 1 dargestellt ist, kann ein Matrixprozessor 188 mit dem Systembus 141 gekoppelt sein. Komplexe rechnerische Probleme, die mit der Leistungsfähigkeit des Matrixprozessors vereinbar sind, können heruntergeladen werden, um für eine parallele Verarbeitung der heruntergeladenen Daten zu sorgen, wobei die resultierenden Antworten über den Systembus 141 zurückgeschickt werden (z. B. zum Hauptspeicher 140 zurück oder zur Datencache-Speichermanagementeinheit 130 zurück und von dort zur CPU, die sie verarbeitet).
  • Wie weiter oben erörtert worden ist, koppelt die E/A-Verarbeitungseinheit (EAV) 150 mit dem Systembus 141 und hat Mittel, um mit einem E/A-Bus 151 etwa zu einer sekundären Speichereinheit, einer Platte bzw. Diskette oder einem Band, zu koppeln. Die E/A-Verarbeitungseinheit 150 kann für eine direkte Übertragung von Daten zu und vom Hauptspeicher 140 und von und zu der sekundären Speichervorrichtung, die mit der E/A-Verarbeitungseinheit 150 gekoppelt ist, sorgen und die Übertragung unabhängig von der Befehlscache-Speichermanagementeinheit 120 und Datencache-Managementeinheit 130 bewerkstelligen. Auch kann die E/A-Verarbeitungseinheit 150 als ein "Bus-Master" mit dem Buszuteiler 180 gekoppelt sein, um Konflikte des Zugriffs auf den Hauptspeicher 140 über den Zugriff auf den Systembus 141 zu lösen. Dies schafft Flexibilität. Beispielsweise können die Daten, die zwischen dem Hauptspeicher 140 über den Systembus 141 zu der E/A-Verarbeitungseinheit 150 und von dort zu einer sekundären Speichervorrichtung transportiert werden, so gesteuert werden, dass ein 16-Wege-Interleave geschaffen wird, während hingegen Übertragungen zwischen einem Cache 120 oder 130 und dem Hauptspeicher 140 so gesteuert werden können, dass ein 4-Wege-Interleave geschaffen wird. Dies ist möglich, da die Steuerung der Übertragungen zwischen den Caches, 120 oder 130, und dem Hauptspeicher von der Steuerung der Übertragungen zwischen der E/A-Verarbeitungseinheit 150 und dem Hauptspeicher 140 getrennt ist.
  • Alternativ oder zusätzlich kann die E/A-Verarbeitungseinheit 150 für die Protokollumsetzung sorgen. In dieser Ausführungsform ist die Protokoll-E/A-Verarbeitungseinheit 150 mit dem Systembus 141 gekoppelt, wobei sie außerdem mit einem externen E/A-Bus 151 gekoppelt ist. Vorzugsweise ist die E/A-Verarbeitungseinheit 150 auch mit dem Buszuteiler 180 gekoppelt. Die Protokoll-Umsetzungs-EAV 150 managt den Schnittstellenzugriff und die Protokollumsetzung von digitalen Informationen zwischen allen Systemelementen, die mit dem Systembus 141 gekoppelt sind, und sorgt für eine Übertragung der digitalen Informationen über den externen Kommunikations-E/A-Bus 151 zu dem externen System. Folglich können beispielsweise die Architektur des Systembusses 141 und das Übertragungsprotokoll so beschaffen sein, dass sie eine Schnittstelle mit inkompatiblen System- und Busstrukturen und -protokollen, wie etwa eine Schnittstelle zu einem Multibus-System, bilden.
  • Die 7A-C veranschaulichen den virtuellen Speicher, den realen Speicher bzw. virtuelle Adressierungskonzepte. In 7A ist der virtuelle Speicher so dargestellt, wie er von der CPU 110 gesehen wird. Entsprechend der Darstellung umfasst der virtuelle Speicher ein Speicherfeld mit 232 32-Bit-Wörtern, das binär von 0 bis FFF FFF FF (hexadezimal) adressierbar ist. Dieser virtuelle Speicher ist als 1024 (210) Segmente umfassend vorstellbar, wobei jedes Segment 1,024 (210) Seiten hat und jede Seite 4,096 (212) Wörter oder Bytes hat. Folglich kann die CPU einen virtuellen Speicherraum von 4 Gigabyte adressieren. Dieser virtuelle Speicheradressenraum ist unabhängig vom tatsächlichen realen Speicherraum verfügbar. Beispielsweise kann der reale Speicher (d. h. der Hauptspeicher) 16 Megabyte oder 2'12 Seiten umfassen.
  • Wie in 7B veranschaulicht ist, wird der reale Speicherraum durch eine reale Adresse RA, von 0 bis FFF FFF (hexadezimal), repräsentiert. Die Cache-Speichermanagementeinheit der vorliegenden Erfindung sorgt, wie erforderlich, für eine sehr schnelle Übersetzung der virtuellen in reale Speicherbereichadressen. Die Cache-Speichermanagementeinheit liefert eine Abbildung, die die Inhalte des Cachespeichers mit bestimmten vorgespeicherten Informationen von virtuellen Adressen zu realen Speicherraumadressen in Beziehung setzt.
  • Wie aus 7C ersichtlich ist, umfasst die virtuelle 32-Bit-Adresse, VA, eine 10-Bit-Segment-Adresse, die Bits 31 bis 22 (d. h. VA<31:22>), eine 10-Bit-Seitenadresse, die Bits 21 bis 12 (d. h. VA<21:12>) und eine 12-Bit-Distanzadresse, die Bits 11 bis 0 (d. h. VA<11:0>). In einer bevorzugten Ausführungsform liefert die Cache-Speichermanagementeinheit eine bereichsassoziative Abbildung, derart, dass die Distanzadresse, Bits 0 bis 11 der virtuellen Adresse, den Bits 0 bis 11 der realen Adresse entspricht. Dies schafft bestimmte Vorteile und beschleunigt das Übersetzungs- und Abbildungsverfahren.
  • In 8 ist ein Blockdiagramm der Cache-Speichermanagementeinheit veranschaulicht. In einer bevorzugten Ausführungsform kann sowohl für den Befehlscache als auch für den Datencache eine Architektur mit einer einzigen Cache-Speichermanagementeinheit verwendet werden, die durch Programmieren während der Herstellung oder durch Lötbrücken oder Inizialisierungsverfahren zum Zeitpunkt der Systemkonfiguration oder Initialisierung ausgewählt wird.
  • Die Cache-Speichermanagementeinheit hat eine CPU-Schnittstelle, die mit dem Prozessor-/Cache-Bus 121 oder 131 koppelt, und eine Systembus-Schnittstelle, die mit dem Systembus 141 koppelt. Die CPU-Schnittstelle umfasst ein Adresseingaberegister 210, ein Cacheausgaberegister 230 und ein Cacheeingaberegister 240. Die Systembusschnittstelle umfasst ein Systembuseingaberegister 260 und ein Systembusausgaberegister 250. Das Adresseingaberegister 210 koppelt die virtuelle Adresse über den Bus 211 zu einem Cachespeichersystem 220, einem Übersetzungslogikblock (d. h. ÜLB) 270, und einer direkten Adressübersetzungslogikeinheit (d. h. DAÜ) 280. Die DAÜ 280 und ihre Funktionsweise werden später mit Bezug auf 12 ausführlicher beschrieben. Die Datenausgabe des Cachespeichersystems 220 ist über den Bus 231 mit dem Cacheausgaberegister 230 gekoppelt. Das Cachespeichersystem empfängt über den Bus 261 Eingaben realer Adressen vom Systemeingaberegister 260 und außerdem eine Eingabe einer realen Adresse vom ÜLB 270. Eine Dateneingabe in das Cachespeichersystem 220 erfolgt über den Cachedatenbus 241, der mit jedem der Cacheeingaberegister 240 koppelt, das Systembuseingaberegister 260, das Systembusausgaberegister 250, das Cacheausgaberegister 230, den Übersetzungslogikblock 270 und die DAÜ 280, um die reale Adresse zu liefern und Durchleitmöglichkeiten zu schaffen. Der ÜLB 270 und die DAÜ 280 sind bidirektional mit dem Cachedatenbus 241 gekoppelt, um die reale Adresse und die Adressübersetzungsdaten zwischen dem Cachedatenbus 241 und dem ÜLB 270 und der DAÜ 280 zu koppeln. Die Systembusschnittstelle kann sowohl mit der DAÜ 280 und dem ÜLB 270 als auch über den Cachedatenbus 241 mit dem Cachespeichersystem 220 kommunizieren.
  • In 9 ist ein genaueres Blockdiagramm der Cache-Speichermanagementeinheit gezeigt, das die internen Datenflussoperationen der Cache-Speichermanagementeinheit zeigt.
  • Die virtuelle Adresse wird über das Cacheeingaberegister 240 vom schnellen Cachebus 121 oder 131 genommen und in einem Akkumulator/Register 310 der Cache-Speichermanagementeinheit gespeichert. Diese Adresse wird dann in drei Teile geteilt: Die höchstwertigen Bits (<31:>) werden zum ÜLB 350 und zur DAÜ 370 geschickt. Die Bits <10:4> werden zur Pufferauswahllogik 320 des Cachespeichers geschickt, um eine Zeile des Cachespeichers auszuwählen. Die Bits <3:2> werden zum Multiplexer 341 geschickt, der eines der vier Ausgabewörter der Vierfachwort-Zeilenregister 333 und 335 auswählt. Die Bits <0:1> werden nur bei Byte-/Halbwort-Speicherungs-Operationen verwendet, wie weiter unten beschrieben ist.
  • Der ÜLB 350 benutzt die sechs niedrigwertigen Bits <17:12> der virtuellen Seitenadresse, um auf eine Zweiwege-Assoziativanordnung 352 und 354 zuzugreifen, die die reale Adresse der Seite, die der angebotenen virtuellen Adresse entspricht, ausgibt. Das Bit <11> wird ohne Übersetzung durchgeleitet. Da die Seitengröße 4K beträgt, ist das Bit <11> Teil der Spezifikation f des Bytes innerhalb der Seite. Deshalb wird, wenn eine Übereinstimmung gefunden worden ist, die reale Adresse ausgegeben und für einen Vergleich mit den Tagausgaben der realen Adressen des Caches, 322 und 326, in die Komparatoren 322 und 326 gegeben.
  • Wenn im ÜLB 350 keine Übereinstimmung gefunden worden ist, dann wird die dynamische Adressen-Übersetzungseinheit (DAÜ) 370 aufgerufen. Die DAÜ übersetzt unter Verwendung der Segment- und Seitentabellen für den akti ven Prozess die ihr dargebotene virtuelle Adresse in eine reale Adresse. Die reale Adresse wird unter Ersetzung eines früheren Eintrags in den ÜLB 350 geladen. Der ÜLB sendet dann die reale Adresse zum Cache 320.
  • Der Cachedatenpuffer 321, 322 ist ein teilassoziativer Speicher, der in 128 Sätzen zweier Zeilen von jeweils 16 Byte organisiert ist. Die Bits <10:4> der virtuellen Adresse wählen einen Satz in dem Cachedatenpuffer aus. Die 16 Byte Daten für jede der beiden Zeilen in dem Satz werden in zwei Vierfachwort-Register in der Cachelogik ausgegeben.
  • Die Komparatoren 332 und 334 vergleichen die reale Adresse (aus dem ÜLB) mit beiden Tags der realen Adressen, 322 und 326, aus dem Cachedatenpuffer. Wenn es eine Übereinstimmung gibt, dann wird das entsprechende Wort aus der übereinstimmenden Zeile an das Cacheausgaberegister 230 ausgegeben. Die Bits <3:2> werden benutzt, um das entsprechende Wort über den Multiplexer 341 auszuwählen. Wenn das Gültigkeitsbit für eine Zeile "aus" ist, liegt keine Übereinstimmung vor.
  • Für ein Byte- oder Halbwortladen liefert die Cache-Speichermanagementeinheit das gesamte Wort und die CPU 110 wählt das Byte oder Halbwort aus. Für Byte- oder Halbwortspeicherungen gibt es eine kompliziertere Folge von Operationen. Das Byte oder Halbwort von der CPU 110 wird im Cacheeingaberegister 240 platziert und gleichzeitig liest der Cache das Wort aus, in welches das Byte (die Bytes) im Cacheausgaberegister 230 gespeichert werden. Die Inhalte des CER 240 und des CAR 230 werden dann gemischt und auf den Prozessor-/Cache-Bus gebracht.
  • Wenn es einen Fehlgriff gibt (d. h. wenn keine Übereinstimmung vorliegt), dann wird die reale Adresse über den Systembus 141 zum Hauptspeicher 140 gesendet und dafür eine 16-Byte-Zeile erhalten. Diese 16-Byte-Zeile und ihre zugeordneten Tags ersetzen eine Zeile in den Cachedatenpuffern 321 und 323. Das spezielle angeforderte Wort wird dann von der Cache-Speichermanagementeinheit gelesen.
  • Das Akkumulatorregister 310 arbeitet als Adressregister in der Datencache-Speichermanagementeinheit und als Befehlszähler in der Befehlscache-Speichermanagementeinheit. Der Betrieb, entweder als Befehlscache-Speichermanagementeinheit oder als Datencache-Speichermanagementeinheit wird durch Inizialisieren des Systems oder durch eine festverdrahtete Zusammenschaltung bestimmt. Bei einer monolithischen integrierten Schaltung einer Ausführungsform der Cache-Speichermanagementeinheit kann diese Entscheidung zum Zeitpunkt der Endmontage getroffen werden (z. B. indem ein bestimmter Stift mittels Laser- oder Ionenimplantationsverfahren auf eine Spannung oder Masse geschaltet wird). Als eine andere Möglichkeit kann sie als Bestandteil der Initialisierung des Chips durch das System (z. B. durch Laden von Werten mittels eines Inizialisierungsprotokolls auf dem Chip) programmiert werden. Der Register-Akkumulator 310 speichert die Adressenausgabe von der CPU 110. Wie zuvor beschrieben worden ist, weist diese Adresse eine Länge von 32 Bit auf, nämlich die Bits 0 bis 31.
  • Das Cachespeicheruntersystem 320 ist in zwei gleiche Teile geteilt, die mit "W', 321, und "X", 323, beschriftet sind. Die beiden Hälften sind völlig gleich und speichern Mehrfachwörter von Daten, die reale Adresse dieser Daten und bestimmte Steuerinformationen in Kennzeichnungsbits. Die innere Struktur des Caches wird ausführlicher mit Bezug auf 10 beschrieben. Jede Hälfte des Caches, W und X, liefert Adressausgaben und Mehrfachwörter von Datenausgaben davon über die Leitungen 322 und 324 für die Adressen- und Datenausgabe von der W-Cache-Hälfte 321 und die Adressen- und Datenausgaben 326 und 328 von der X-Cache-Hälfte 323.
  • In der bevorzugten Ausführungsform erfolgt die Datenausgabe gleichzeitig in Form von parallelen Vierfachwortausgaben. Dies ist komplementär zur Speicherungsstruktur von vier Wörtern in jeder Hälfte, W und X, des Caches für jede Zeile in der Cache-Hälfte, wie in 10 gezeigt ist. Die Vierfachwort-Ausgaben von den beiden Hälften W und X des Caches werden jeweils zu Viefcachwort-Zeilenregistern 333 bzw. 335 gekoppelt. Die Anzahl der Wörter in den Zeilenregistern entspricht der Anzahl der Wörter, die pro Zeile in jeder Hälfte des Caches gespeichert sind. Die Adressausgaben von jeder Hälfte des Caches, W und X bzw. 321 und 323 werden jeweils auf einen Eingang des Komparators 332 bzw. 334 gekoppelt. Der andere Eingang jedes Komparators 332 und 334 ist mit dem Ausgang eines Multiplexers 347 gekoppelt, der eine reale Adresse, die Bits 31 bis 11, als Ausgabe liefert. Die reale Adresse, die Bits 31 bis 11, wird mittels des Komparators 332 bzw. 334 mit den Ausgaben der Adressschnittstelle von jeder der Cache-Hälften W, 321, bzw. X, 323 verglichen, um zu ermitteln, ob die angeforderte Adresse den Adressen entspricht, die im Cache 320 vorhanden sind, oder nicht. Der Akkumulator 310 liefert eine Ausgabe der Bits 10 bis 4 an das Cachespeicher-Untersystem, um in diesem einen Zeile auszuwählen. Die reale Adresse, die in dieser Zeile für jede Hälfte W und X des Cachespeichers 320 gespeichert ist, wird von der entsprechenden Hälfte über ihre entsprechende Adressausgabeleitung, 322 und 326, an ihren entsprechenden Komparator 332 und 335 ausgegeben. Die Ausgänge von jedem der Zeilenregister 333 und 335 sind mit dem Multiplexer 341 gekoppelt. Das Akkumulatorregister 310 sorgt für die Ausgabe der Bits 3 und 2, um eines von vier aufeinander folgenden Wörtern aus den Vierfachwort-Speicherzeilenregistern 333 und 335 auszuwählen.
  • Das aus jedem der Zeilenregister ausgewählte Wort wird vom Multiplexer 341 an den Multiplexer 343 ausgegeben. Die Wahl, welche Zeilenregisterausgabe, d. h. vom Register 333 oder vom Register 335, vom Multiplexer 343 auszugeben ist, wird in Reaktion auf die Ausgaben der Komparatoren 332 und 334 hinsichtlich der Übereinstimmung/Nichtübereinstimmung festgelegt. Der Multiplexer 343 koppelt die Datenausgabebits 31 bis 0 über das Cacheausgaberegister 230 von 4 mit dem Prozessor-/Cache-Bus. Die von den Komparatoren 332 und 334 ausgegebenen Signale hinsichtlich der Übereinstimmung/Nichtübereinstimmung geben einen Cachetreffer (d. h. dass die angeforderte reale Adresse im Cache vorhanden war und dass das Datum gültig war) oder einen Cachefehltreffer (d. h., dass das angeforderte Datum nicht im Cache vorhanden war) für die jeweils entsprechende Hälfte des Caches, W (321) oder X (323) an. Die realen Adressbits 31 bis 11, die vom Multiplexer 337 zu den Komparatoren 332 und 334 gekoppelt werden, werden durch einen unter 348 veranschaulichten Verkettungsprozess konstruiert. Das vom Registerakkumulator 310 ausgegebene Bit 11, das in der teilassoziativen Abbildung dem realen Adressbit 11 entspricht, wird mit den ausgegebenen realen Adressbits 31 bis 12 vom Multiplexer 345 des ÜLB 270 verkettet.
  • Der ÜLB 270 von 8, der in 9 genauer gezeigt ist, umfasst einen Übersetzungslogikblock-Speicher 350 mit einer Hälfte W 352 und einer völlig gleichen Hälfte X 354, wovon jede mehrere Speicherzeilen besitzt, wobei jede Zeile eine virtuelle Adresse, Zustandsbits, eine reale Adresse enthält. Jede Hälfte liefert eine Ausgabe einer virtuellen Adresse und eine Ausgabe einer realen Adresse. Die Ausgabe der virtuellen Adresse von der W-Hälfte des ÜLB 352 wird zu dem Komparator 362 gekoppelt. Die Ausgabe der virtuellen Adresse der X-Hälfte 354 wird zu dem Komparator 364 gekoppelt. Die andere Eingabe in die Komparatoren 362 und 364 wird ebenso mit den vom Registerakkumulator 310 ausgegebenen Bits 31 bis 18 gekoppelt. Eine Zeile wird in dem ÜLB in Reaktion auf die vom Re gisterakkumulator 310 ausgegebenen Bits 17 bis 12 ausgewählt, die eine der Zeilen in dem ÜLB als die aktive, ausgewählte Zeile festlegen. Die Ausgabe der virtuellen Adresse von den Hälften W und X des ÜLB, 352 bzw. 354, entspricht der ausgewählten Zeile. Die eine "Übereinstimmung" ausgebenden Leitungen von den Komparatoren 362 und 364 sind jeweils so gekoppelt, dass sie Eingänge eines Multiplexers 345 auswählen, der für eine gezielte Durchleitung zum Multiplexer 347 eine Ausgabe der Bits 31 bis 12 der realen Adresse an die Verkettungslogik 348 liefert usw. Die Ausgaben der realen Adresse für die ausgewählte Zeile (d. h. für beide Hälften) des ÜLB 350 sind mit dem Multiplexer 345 gekoppelt. Bei einem ÜLB-Treffer, wobei eine Übereinstimmung in einer der Hälften, W oder X, des ÜLB vorliegt, liefert der entsprechende Komparator ein Übereinstimmungssignal an den Multiplexer 345, um die reale Adresse aus der Hälfte des ÜLB auszuwählen, die die Übereinstimmung der virtuellen Adressen aufweist, um die Ausgabe ihrer realen Adresse vom Multiplexer 345 an die Verkettungslogik 348 zu erlangen. Im Fall eines ÜLB-Fehltreffers wird ein ÜLB-Fehltreffersignal 372 zu der direkten Adressenübersetzungseinheit 370 gekoppelt. Die DAÜ 370 sorgt für einen Seitentabellenzugriff, wie unter 374 veranschaulicht ist, sowie für ein Ersetzen der ÜLB-Zeilen, wie unter 375 veranschaulicht ist. Die Funktionsweise der DAÜ wird später ausführlicher beschrieben. Bei einem Cache-Fehltreffer wird das angeforderte adressierte Datum innerhalb des Caches ersetzt, wie durch die Linie 325 angegeben ist.
  • In 10A ist die Organisation des Cachespeichersystems veranschaulicht. Das Cachespeichersystem 320 umfasst drei Felder, ein den Gebrauch anzeigendes Bitfeld und zwei völlig gleiche, sehr schnelle Schreib-Lese-Speicherfelder W und X. Das erste Feld 329 umfasst einen den Gebrauch anzeigenden Bitspeicher "U", der angibt, ob die W- oder die X-Hälfte die für die adressierte Zeile des Cachespeichers 320 zuletzt gebrauchte Hälfte war. Die Speicher W und X enthalten jeweils mehrere Zeilen (z. B. 128 Zeilen). Das den Gebrauch anzeigende Speicherfeld 329 hat die gleiche Anzahl von Zeilen (z. B. 128 Zeilen). Die Speicheranordnungen W und X des Cachespeicheruntersystems 320 können auf mehrere Ebenen (d. h. mehr als zwei völlig gleiche Blöcke) erweitert werden, wobei sich die Größe des den Gebrauch des Speichers anzeigenden Worts entsprechend ändert.
  • Jede Zeile in jeder Cachespeicher-Untersystemhälfte, W bzw. X, enthält mehrere Felder, wie in 10B gezeigt ist. Jede Zeile in dem Untersystemspei cher W oder X enthält ein Freigabebit "E", ein Zeilengültigkeitsbit "LV", ein Zeilen-Dirty-Bit "LD", ein Feld realer Adressen "RA" und mehrere Datenwörter "DT". Das gesetzte Freigabebit gibt an, dass die entsprechende zugeordnete Zeile funktionsbeteiligt ist. Ein zurückgesetztes Freigabebit gibt an, dass die entsprechende zugeordnete Zeile nicht im Gebrauch ist. Ein zurückgesetztes Freigabebit führt zu einem Cache-Fehltreffer für versuchte Zugriffe auf diese Zeile. Für monolithische integrierte Schaltungen von Cache-Speichermanagementeinheiten kann das Freigabebit nach der Endprüfung als Teil des Herstellungsprozesses mittels Laser gesetzt werden. Das Zeilengültigkeitsbit LV gibt an, ob die gesamte aktuelle Zeile bei einem Kaltstart, E/A-Schreiben oder unter Prozessorsteuerung ungültig zu machen ist oder nicht. Das Zeilen-Dirty-Bit LD gibt an, ob die entsprechende zugeordnete aktuelle Zeile des Cachespeicheruntersystems durch den Prozessor verändert worden ist (d. h. der Hauptprozessor ist nicht aktuell). Das Feld realer Adressen, mit 21 Bits veranschaulicht, umfasst die zwanzig höchstwertigen Bits für die reale Adresse im Hauptspeicher des ersten gespeicherten Datenworts, das folgt. Der Prozessor greift statt auf den Hauptspeicher auf die mehreren Datenwörter zu, die als vier Wörter DT0 bis DT4 veranschaulicht sind. Jedes Datenwort enthält mehrere Bits, z. B. 32 Bits.
  • Wie in 11A veranschaulicht ist, umfasst das ÜLB-Untersystem 350 drei Felder, ein den Gebrauch anzeigendes Feld "U" 359 und ein aus zwei schnellen Schreib-Lese-Speicherfeldern X und Y gebildetes Speicheruntersystem. Die Speicheruntersysteme W und X sind äquivalent und bilden zwei Hälften des Cachespeicherraums. Wie dargestellt ist, enthält jede Hälfte 64 Zeilen adressierbaren Speichers mit 47 Bit breiten Wörtern und unterstützt die Übersetzung der virtuellen Adressen in reale Adressen. Das den Gebrauch anzeigende Feld jeder Zeile tritt in einer Weise auf, die jener, die mit Bezug auf 10A beschrieben worden ist, ähnlich ist.
  • Wie in 11 B veranschaulicht ist, umfasst jede Speicherzeile in W und X ein Feld "VA" einer virtuellen 14-Bit-Adresse, ein Feld "RA" einer realen 20-Bit-Adresse, ein Hauptsteuerprogramm-Gültigkeitsbit-Feld, ein Anwendungsprogramm-Gültigkeitsbit-Feld "UV", ein Dirty-Bit-Feld "D", ein Referenced-Bit-Feld "R", ein Schutzgradwortfeld "PL", das mit vier Bits dargestellt ist, und ein Systemtagfeld "ST", das mit fünf Bits dargestellt ist.
  • Der ÜLB ist vom inhaltsadressierten Speichertyp, der innerhalb eines MCLK-Zyklus gelesen werden kann. Er ist als teilassoziativer Pufferspeicher organisiert und aus 64 Sätzen von jeweils zwei Elementen gebildet. Die sechs niedrigwertigen Bits der virtuellen Seitenadresse werden verwendet, um einen Satz, d. h. eine Zeile des Speichers, auszuwählen. Dann werden die 14 höherwertigen Bits der virtuellen Adresse mit der Schlüsselfeldausgabe VA jedes der Elemente 352 und 354 des Satzes verglichen (d. h. 362 und 364). Bei einem ÜLB-Treffer wird das reale Adressfeld (20 Bits) RA des ÜLB-Zeileneintrags, der eine Übereinstimmung aufweist, zusammen mit den zugeordneten Systemtags und Zugriffsschutzbits über den Multiplexer 345 ausgegeben. Es wird eine ÜLB-Übersetzungssuche in Reaktion auf 14 Bits der virtuellen Adresse geliefert, wenn das Steuerprogramm und das Anwenderprogramm gültig sind.
  • Wie 12 veranschaulicht, ist der Cachespeicher auf der Grundlage einer Vierfachwortgrenze organisiert. In jeder Zeile jeder Hälfte (d. h. W und X) des Cachespeichersystems 320 sind vier adressierbare Wörter des realen Adressenspeichers gespeichert. Das Cachespeicheruntersystem liefert eine Vierfachwortausgabe auf der Grundlage der Vierfachwortgrenzen, um die Cachezugriffszeit weiter zu verkürzen. Beispielsweise ist bei einer Ladeoperation dann, wenn die aktuelle Adresse innerhalb der Vierergrenze der vorhergehenden Adresse ist, die Cachezugriffszeit minimal (z. B. zwei Taktzyklen). Ist die aktuelle Adresse jenseits der Vierergrenze der vorhergehenden Adresse, so ist die Cachezugriffszeit länger (z. B. vier Taktzyklen).
  • Wie an anderer Stelle ausführlicher erörtert ist, ist dem ÜLB vorbehalten, eine festverdrahtete Übersetzungslogik für kritische Funktionen zur Verfügung zu stellen. Dies schafft die Möglichkeit einer gewährleisteten, sehr schnellen Abbildung und Übersetzung virtueller in reale Adressen des Hauptspeichers. Die Funktionen des festverdrahteten Übersetzungslogikblocks sind in 13 veranschaulicht. Jede Zeile enthält Informationen, wie in 11B angegeben ist. Die Übersetzung und die Systeminformationen werden für kritische Funktionen wie etwa Boot-ROM, Speichermanagement, E/A, Vektoren, Betriebssystem und reservierte Speicherorte, anwendungsreservierte Speicherorte geliefert, wie weiter oben mit Bezug auf die 11A-B ausführlicher erörtert worden ist.
  • Zusätzlich zu dem Schreib-Lese-ÜLB gibt es acht festverdrahtete Übersetzungen von virtuellen in reale Adressen, wie mit Bezug auf 13 erörtert wird. Einige dieser Übersetzungen sind auf die realen Seiten 0-3 abgebildet. Die Seite 0 im virtuellen Raum, die erste Seite im unteren Bereich des realen Speichers, wird für Spontanmeldungs- und Unterbrechungsvektoren verwendet. Die Seiten 1-3 werden als gemeinsam genutzter Bereich für die Initialisierung des Systems verwendet. Die Seiten 6 und 7 werden für den Boot-System-ROM verwendet, während die Seiten 4 und 5 für speicherabgebildete Ein-/Ausgaben verwendet werden. Diese acht Seiten Übersetzungen werden nur in der Hauptsteuerprogramm-Betriebsart gebraucht. Infolge dieser festen Verdrahtung in dem ÜLB wird hinsichtlich der ersten acht virtuellen Seiten des Systemraums nie ein Fehltreffer oder ein Seitenfehler auftreten.
  • Die Bits PL geben den Schutzgrad der Seite an. Der Funktionscode, der die virtuelle Adresse (VA) von der CPU begleitet, enthält die Betriebsart der Speicherbezugnahme. Diese Betriebsarten werden mit den Bits PL verglichen, wobei dann, wenn eine Verletzung erfasst wird, eine CPU-Spontanmeldung erzeugt wird.
  • Die Cache-Speichermanagementeinheit sorgt für einen Speicherzugriffschutz durch Überprüfen der vier Schutzbits (PL) in dem ÜLB-Eintrag oder dem Seitentabelleneintrag. Dieses erfolgt durch Vergleichen des Hauptsteuerprogramm-/Anwender-Bits und des Bits K in dem Hauptsteuerprogramm-Zustandswort (SSW) mit dem Zugriffscode, wobei dann, wenn eine Verletzung vorliegt, der Zugriff verwehrt und eine Spontanmeldung an die CPU erzeugt wird.
  • Die virtuelle Adresse, die die Spontanmeldung verursacht hat, wird in ein Register gerettet und kann mit einem E/A-Befehl gelesen werden.
  • Es gibt drei eindeutige Spontanmeldungen, die erzeugt werden:
    • 1. Zugriffsverletzung beim Befehlsabruf – nur Befehlscache.
    • 2. Zugriffsverletzung beim Lesen – nur Datencache.
    • 3. Zugriffsverletzung beim Schreiben – nur Datencache.
  • Figure 00460001
  • Figure 00470001
    • wobei: RW = lesen/schreiben,
    • E = Befehlsausführung,
    • – = kein Zugriff,
    • S = Hauptsteuerprogramm/Anwenderprogramm, und
    • K = geschützt.
  • Das Dirty-Bit (D) in der Datencachezeile gibt an, dass die Zeile modifiziert worden ist, seitdem sie vom Hauptspeicher gelesen worden ist.
  • Das Dirty-Bit in der ÜLB gibt an, dass ein Wort oder mehrere Wörter innerhalb dieser Seite modifiziert worden sind.
  • Wenn ein Wort in den Cache zu schreiben ist, wird das Dirty-Bit der Zeile gesetzt. Wenn das Dirty-Bit in dem ÜLB nicht gesetzt ist, wird es dann gesetzt und die Zeile aus dem ÜLB wird in die Seitentabelle zurückgeschrieben. Wenn das Dirty-Bit in dem ÜLB schon gesetzt ist, dann wird die Seitentabelle nicht aktualisiert. Dieser Mechanismus wird das Seitentabellen-Dirty-Bit automatisch aktualisieren, wenn die Seite erstmals modifiziert wird.
  • Das Referenced-Bit (R) im ÜLB wird verwendet, um anzuzeigen, dass durch ein Lesen oder Schreiben wenigstens einmal auf die Seite Bezug genommen worden ist. Die gleiche Methode, die für das Bit D Anwendung findet, wird für die Aktualisierung des Bits R in dem Seitentabelleneintrag verwendet.
  • Die Gültigkeitsbits (SV, UV) werden verwendet, um die Zeile ungültig zu machen. Bei einem Kaltstart wird sowohl SV als auch UV auf null gesetzt. Bei einer Aufgabenumschaltung von einem Anwendungsprogramm zu einem anderen wird UV auf null gesetzt. UV wird nicht zurückgesetzt, wenn vom Anwendungsprogramm zum Hauptsteuerprogramm oder zum selben Anwendungsprogramm zurückgegangen wird.
  • An jeder Zeilenposition ist außerdem eine reale 20-Bit-Adresse (RA) gespeichert. Wenn die virtuelle Adresse eine Übereinstimmung hat, wird die reale Adresse für einen Vergleich an den Cache oder an das Systemausgaberegister gesendet. Wenn das System in der nicht abgebildeten Betriebsart läuft (d. h. ohne virtuelle Adressierung), ist der ÜLB nicht aktiv und die Schutzschaltungen sind unwirksam geschaltet.
  • Der ÜLB reagiert auf die folgenden speicherabgebildeten E/A-Befehle:
    • – Zurücksetzen der ÜLB-Hauptsteuerprogramm-Gültigkeitsbits: Alle Bits SV in dem ÜLB werden zurückgesetzt.
    • – Zurücksetzen der ÜLB-Anwendungsprogramm-Gültigkeitsbits: Alle Bits UV in dem ÜLB werden zurückgesetzt.
    • – Zurücksetzen der Bits D: Alle Dirty-Bits (D) in dem ÜLB werden auf null gesetzt.
    • – Zurücksetzen des Bits R: Alle Referenced-Bits (R) in dem ÜLB werden auf null gesetzt.
    • – Lies oberen Bereich des ÜLB: Der höchstwertige Teil der adressierten ÜLB-Position wird zur CPU ausgelesen.
    • – Lies unteren Bereich des ÜLB: Der niedrigstwertige Teil der adressierten ÜLB-Position wird zur CPU ausgelesen.
    • – Schreibe oberen Bereich des ÜLB: Der höchstwertige Teil der adressierten ÜLB-Position wird von der CPU geschrieben.
    • – Schreibe unteren Bereich des ÜLB: Der niedrigstwertige Teil der adressierten ÜLB-Position wird von der CPU geschrieben.
  • Eine speicherabgebildete Ein-/Ausgabe an die Cache-Speichermanagementeinheit erfolgt mittels der virtuellen Seite 4.
  • Die Systemtags werden von dem System verwendet, um die Cache-Speichermanagement-Strategie für das Schreiben zu wechseln (d. h. Rückkopieren oder Durchschreiben), um die Cache-Speichermanagementeinheit freizugeben und um die E/A zu handhaben. Die Systemtags befinden sich in den Seitentabellen und dem ÜLB.
  • Systemtags
    Figure 00480001
  • Figure 00490001
  • R = Referenced-Bit, D = Dirty-Bit
  • Fünf der Systemtags werden für eine Decodierung durch das System aus der Cache-Speichermanagementeinheit herausgeholt. Das Tag T2 wird verwendet, um zwischen dem Bootstrap-Raum und dem E/A-Raum zuunterscheiden. Das Tag T4 wird verwendet, um zwischen Speicherraum und Boot- oder E/A-Raum zu unterscheiden. Das UNIX-Betriebssystem (z. B. UNIX) kann die Tags T0 und T1 verwenden. Deshalb können T0 und T1 vom Systementwickler nicht verwendet werden, es sei denn, es ist bekannt, dass das Betriebssystem keinen Gebrauch von ihnen macht. Diese vier Tags sind nur gültig, wenn die Cache-Speichermanagementeinheit den Systembus erworben hat. Diese Signale werden zusammen mit Tags von anderen Cache-Speichermanagementeinheiten über den Bus transportiert.
  • ST(001xxxx): gemeinsam, Durchschreiben
  • Wenn die virtuelle Seite 0 in dem ÜLB in der Hauptsteuerprogramm-Betriebsart erfasst wird, wird die Seite 0 des realen Speichers zugeordnet. Diese erste Seite des realen Speichers kann RAM oder ROM sein und Vektoren für Spontanmeldungen und Unterbrechungen enthalten. Diese festverdrahtete Übersetzung erfolgt nur im Hauptsteuerprogrammzustand. Die zwanzig höchstwertigen Bits der realen Adresse sind null.
  • ST(1,X,1,X,X,X,X)
  • Bei einer Adressierung der Seiten 6 und 7 im virtuellen Speicher werden die Systemtags vom festverdrahteten ÜLB ausgegeben. Diese Übersetzung erfolgt nur im Hauptsteuerprogrammzustand. Die Seiten 6 und 7 des virtuellen Speichers werden auf die Seiten 0 und 1 des Boot-Speichers abgebildet.
  • Die neunzehn höchstwertigen Bits der realen Adresse sind null und das Bit 12 ist "1" für die Seite 1 des Boot-Speichers und "0" für die Seite 0.
  • Der reale Boot-Speicherraum befindet sich nicht im realen Speicherraum.
  • ST(1,X,0,X,X,X,X) speicherabgebildete E/A
  • Die Seiten 4 und 5 im virtuellen Raum haben in der Hauptsteuerprogramm-Betriebsart eine festverdrahtete Übersetzung in dem ÜLB. Die neunzehn höchstwertigen Bits der übersetzten realen Adresse sind null. Das E/A-System muss die Systemtags T2 und T4 decodieren, die eine speicherabgebildete E/A anzeigen. Des Weiteren kann ein Decodieren der zwanzig höchstwertigen Bits der realen Adresse für zusätzliche Seiten von E/A-Befehlen verwendet werden. Jede reale Seite hat 1024 Befehle, die durch Auslesen (Wort) und Speichern (Wort) an den entsprechenden Speicherort ausgeführt werden.
  • Wenn diese festverdrahtete Seite in dem ÜLB oder in einem Seitentabelleneintrag erfasst wird, dann wird auf den Lese- oder Schreibbefehl so reagiert, als ob es sich um ein nicht cachefähiges Lesen oder Schreiben handeln würde.
  • Der E/A-Raum wird folgendermaßen verwendet und zugeordnet:
    E/A in der Hauptsteuerprogramm-Betriebsart, abgebildet oder nicht abgebildet, Seiten 4 und 5:
    Die Seiten 4 und 5 des virtuellen Adressraums werden jeweils durch festverdrahtete ÜLB-Einträge auf die Seiten 0 und 1 des E/A-Adressraums abgebildet. Die Seite 4 wird für Befehle an den Cachechip verwendet.
  • E/A in der Hauptsteuerprogramm-Betriebsart, abgebildet, zusätzliche Seiten: E/A-Raum kann auch in der Seitentabelle definiert sein. Der E/A-Befehl ist durch die entsprechenden Tagbits gekennzeichnet. Jede virtuelle Adresse mit Ausnahme der Seiten 0-7 kann auf eine E/A-Seite abgebildet werden, wobei 0 und 1 nicht eingeschlossen sind.
  • E/A-Raum im Cache
  • Eine an den Cachechip gegebene E/A-Adresse sollte wie folgt interpretiert werden:
    Figure 00500001
    Figure 00510001
  • Speicherung Wort
  • ST(0,1,0,X,X,D,R) – privat, Copyback
    • A. LV ist 1 und Treffer: Schreibe Wort in Zeile und setze Zeilen- und Seiten-Dirty-Bit.
    • B. Fehltreffer – zu ersetzende Zeile nicht "dirty": Lies Vierfachwort aus dem Speicher und speichere es in Zeile. Schreibe Wort in neue Zeile und setze Zeilen- und Seiten-Dirty-Bit.
    • C. Fehltreffer – zu ersetzende Zeile "dirty": Schreibe geänderte, aber noch nicht freigegebene (dirty) Zeile in den Speicher zurück. Lies neues Vierfachwort in Zeile aus. Schreibe Wort in neue Zeile und setze Zeilen- und Seiten-Dirty-Bit.
  • ST(0,0,0,X,X,D,R) – privat, Durchschreiben
    • A. LV ist 1 und Treffer: Schreibe Datenwort in Zeile und Speicher. Setze Seiten-Dirty-Bit.
    • B. Fehltreffer: Schreibe Wort in Speicher und setze Seiten-Dirty-Bit.
  • ST(0,0,1,X,X,D,R) – gemeinsam, Durchschreiben
    • A. LV ist 1 und Treffer: Schreibe Datenwort in Zeile und Speicher. Setze Seiten-Dirty-Bit.
    • B. Fehltreffer: Schreibe Wort in Speicher und setze Seiten-Dirty-Bit.
  • ST(0,1,1,X,X, D, R) – nicht cachefähig
    • A. Schreibe Wort in Hauptspeicher. Wenn Treffer, dann bereinige. Speicherung Byte/Halbwort
  • ST(0,1,0,X,X, D, R) – privat, Copyback
    • A. LV ist 1 und Treffer: Schreibe Byte oder Halbwort in Zeile und setze Zeilen- und Seiten-Dirty-Bit.
    • B. Fehltreffer – zu ersetzende Zeile ist nicht "dirty": Lies Vierfachwort aus dem Speicher und speichere es in Zeile. Schreibe Byte oder Halbwort in neue Zeile und setze Zeilen- und Seiten-Dirty-Bit.
    • C. Fehltreffer und zu ersetzende Zeile ist "dirty": Schreibe Zeile in Speicher zurück. Lies neues Vierfachwort in die Zeile aus. Schreibe Byte oder Halbwort in neue Zeile und setze Zeilen- und Seiten-Dirty-Bit.
  • ST(0,0,X,X,D,R) – privat, Durchschreiben
    • A. Treffer: Schreibe Byte oder Halbwort in Zeile. Kopiere modifiziertes Wort aus der Cachezeile in Speicher.
    • B. Fehltreffer: Lies Wort. Modifiziere Byte oder Halbwort. Schreibe modifiziertes Wort aus der Cachezeile in Speicher. (Lese-/Modifiziere-/Schreib-Zyklus) (keine Schreibzuweisung)
  • 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 aus der Cachezeile in Speicher.
    • B. Fehltreffer: Lies Wort. Schreibe Byte oder Halbwort in Zeile. Schreibe modifiziertes Wort aus der Cachezeile in Speicher. (Lese-/Modifiziere-/Schreib-Zyklus; keine Schreibzuweisung)
  • ST(0,1,1,X,X, D, R) – nicht cachefähig
    • A. Lies Wort in Cachechip ein. Aktualisiere entsprechendes Byte/Halbwort und schreibe modifiziertes Wort in den Hauptspeicher zurück.
  • Testen und Setzen
  • ST(0,1,1,X,X,D,R) – nicht cachefähig
  • Lies Hauptspeicherzelle, teste und modifiziere Wort und speichere in dieselbe Speicherzelle zurück. Sende ursprüngliches Wort an die CPU zurück.
  • Der Speicherbus ist dem Cache zugeordnet, bis diese Operation abgeschlossen ist.
  • Bei Auftreten des folgenden Systemtags, während dieser Befehl abgearbeitet wird, wird eine Fehlerbedingung eintreten.
  • 1 X X X X X X (Speicher/Speicher-E/A-Raum oder -Bootraum)
  • Wort/Byte/Halbwort lesen
  • ST(0,1,0,X,X,D,R) – privat, Copyback
    • A. LV ist 1 und Treffer: Lies Wort aus dem Cache an CPU aus.
    • B. Fehltreffer – zu ersetzende Zeile ist nicht "dirty": Lies neues Vierfach-Wort aus dem Speicher in den Cache ein. Lies Wort an CPU aus.
    • C. Fehltreffer – zu ersetzende Zeile ist "dirty": Schreibe Zeile in Speicher zurück. Lies neues Vierfachwort aus dem Speicher in Cache ein. Lies Wort an CPU aus.
  • ST(0,0,X,X,D,R) oder ST(0,0,1,X,X,D,R) – durchschreiben
    • A. LV ist 1 und Treffer: Lies Wort aus dem Cache an CPU aus.
    • B. Fehltreffer: Lies neues Vierfachwort in Zeile ein. Lies Wort in CPU ein.
  • ST(0,1,1,X,X,D,R) – nicht cachefähig
    • A. Lies Wort aus dem Hauptspeicher an CPU aus.
  • Gemeinsames Schreiben vom Cache in den Speicher
  • ST(0,0,1,X,X,D,R) – gemeinsam, Durchschreiben
  • Alle Caches prüfen den Bus, und machen, wenn ein Treffer auftritt, die Zeile in dem Cache ungültig. Tritt kein Treffer auf, wird der Bus nicht beachtet.
  • Wenn ein E/A-System Daten aus dem Cache oder Hauptspeicher ausliest, prüft der Cache die reale Adresse und der folgende Vorgang wird ausgeführt: Es wird nicht auf den ÜLB zugegriffen.
    • A. LV ist 1 und Treffer und LD ist 1: Lies ein Wort oder eine Zeile aus dem Cache in E/A-Verarbeitungseinheit aus.
    • B. Fehltreffer: Lies ein Wort, Vierfachwort oder 16 Wörter aus dem Speicher in E/A-Verarbeitungseinheit aus.
  • Wenn eine Ein-/Ausgabe an den Hauptspeicher erfolgt, prüft der Cache die reale Adresse und der folgende Vorgang wird ausgeführt. Auf den ÜLB wird nicht zugegriffen und deshalb wird das Dirty-Bit in der Seitentabelle oder dem ÜLB nicht geändert.
    • A. LV ist 1 und Treffer: Schreibe ein Wort, Vierfachwort oder 16 Wörter aus der E/A-Verarbeitungseinheit in Speicher. Mache die Zeile oder Zeilen im Cache ungültig.
    • B. Fehltreffer: Schreibe ein Wort, Vierfachwort oder 16 Wörter aus der E/A-Verarbeitungseinheit in Speicher.
  • Systeminformationen, die die Abbildung der virtuellen Adresse auf die reale Adresse betreffen, werden einzig und allein in jeder Zeile jeder der Hälften W und X des Cachespeicheruntersystems gespeichert. Dadurch wird eine äußerst schnelle Übersetzung der virtuellen in reale Adressen erzielt, um das Abbilden des virtuellen in den realen Adressraum zu beschleunigen, so dass die erforderlichen Ein- und Auslagerungsprozeduren mit sekundären Speichersystemen, wie etwa mit der E/A-Verarbeitungseinheit 150 von 1, vereinfacht werden. Die Systeminformationen in jeder Zeile des Speicherinhalts in dem ÜLB-Speicheruntersystem 350 liefern alle erforderlichen Schutz- und Zurückschreibinformationen. Das den Gebrauch anzeigende Bit jeder Untersystemzeile liefert einen Hinweis auf ein Zurückschreiben in die zuletzt gebrauchte Hälfte des Speicheruntersystems. Es könnten andere Ersetzungsstrategien umgesetzt werden.
  • Dort, wo eine Hochgeschwindigkeits-Kommunikationsstruktur vorgesehen ist, wie etwa in einer monolithischen integrierten Cache-Speichermanagementeinheit, verbessert diese Cache-Speichermanagement-Systemarchitektur sehr schnelle Cachesystemoperationen und sorgt für eine große Vielseitigkeit in der Anwendung.
  • Wie in 14 veranschaulicht ist, kann die Vierfachwortgrenze in einer Zeilenregisterarchitektur vorteilhaft verwendet werden. Das Speicherfeld des Cachespeichers 320 von 9 ist mit einem Zeilenregister 400 gekoppelt, das vier Wörter einer wortorganisierten Speicherung innerhalb einer Zeilengrenze enthält. Das Cachespeichersystem 320 gibt pro Cachetrefter gleichzeitig vier Wörter an die Zeilenregister 400 aus, welche die Vierfachwortausgabe vom Cachespeicheruntersystem 320 selektiv speichern und zu dem Cacheausgaberegister wie etwa dem CAR 230 von 8 befördern. Diese Übertragung wird freigegeben, wenn die Komparatorausgabe "Vierergrenze gleich null auftritt. Der Ausgang des Cacheausgaberegisters der Systemschnittstelle des Cache-Speichermanagementsystems wird danach mit dem Adress-/Daten-/Funktionscode-Bus (ADF-Bus) des Prozessor-/Cache-Busses (d. h. Busse 121 oder 131 und Bus 115 von 1) gekoppelt.
  • Das Akkumulatorregister (d. h. 310 von 9) ist ebenfalls mit dem Prozessor-/Cache-Schnittstellenbus gekoppelt, um Adressinformationen von dort zu empfangen. Wenn die Cache-Speichermanagementeinheit als Datencache konfiguriert ist, speichert das Akkumulatorregister die Adresse vom Prozessor-/Cache-Bus zur Verwendung durch das Cachespeicheruntersystem. Wenn sie als Befehlscache konfiguriert ist, dann ist das Akkumulatorregister 310 als Befehlszähler konfiguriert, um Adressinformationen vom Prozessor-/Cache-Schnittstellenbus zu empfangen und sich selbst zu inkrementieren, bis eine neue berechtigte Adresse vom Prozessor-/Cache-Bus empfangen wird.
  • Der Ausgang des Akkumulatorregisters 310 ist mit einem Vierer-Zeilengrenzenregister 410, einem Vierergrenzenkomparator 420 und einer Zustandssteuerlogik 430 gekoppelt. Das Vierfachwort-Zeilengrenzenregister 410 speichert die Anfangsadresse der Vierfachwort-Zeilengrenze für die Wörter, die in dem Zeilenregister 400 gespeichert sind.
  • Der Ausgang des Vierfachwort-Zeilengrenzenregisters 410 ist mit dem Vierfachwort-Zeilengrenzenkomparator 420 gekoppelt. Der Komparator 420 vergleicht die Ausgabe des Registers 410 mit der vom Adressregister (d. h. dem Akkumulatorregister 310) ausgegebenen virtuellen Adresse, um zu ermitteln, ob das angeforderte Wort innerhalb der aktuellen Vierfachwortgrenze für das Zeilenregister 400 ist. Die Zustandssteuerlogik 430 bestimmt dann entweder die Auswahl der Ausgabe des Zeilenregisters 400 oder den Zugriff auf das Cachespeicheruntersystem 320. Die Steuerlogik 430 multiplexiert dann gezielt, um das entsprechende Wort aus den Zeilenregistern auszuwählen.
  • 15 veranschaulicht die Synchronisierung des Ladens für die Cache-Speichermanagementsysteme 120 und 130 von 1. In der bevorzugten Ausführungsform betrifft dies Daten innerhalb von Vierfachwortgrenzen oder Sechzehnfachwortgrenzen. Alternativ kann dies für jede Datenblockgröße gelten. 15 veranschaulicht die vom Datencache 130 ausgeführte Operation des Ladens aus der CPU 110 oder alternativ das vom Befehlscache 120 ausgeführte Laden bei einer Verzweigungsoperation. Das Haupttaktsignal MCLK, das vom Systemtaktgeber 160 von 1 ausgegeben wird, ist im oberen Bereich der 15 mit einem Zeitdiagramm dargestellt, das 0, 30, 60, 90 und 120 Nanosekunden (d. h. ns) als Punkte ab dem Start des Ladezyklus angibt.
  • Zu Beginn dieses Zyklus wird von der CPU eine gültige Adresse in das Akkumulatorregister des entsprechenden Cache-Speichermanagementsystems geladen und es wird ein Funktionscode geliefert, um den Übertragungstyp anzugeben, wie an anderer Stelle ausführlicher erörtert worden ist. Der Punkt 0 ns tritt auf, wenn das Signal ASF gültig ist, das anzeigt, dass gerade eine Adressabtastung ausgeführt wird. Wenn sich das angeforderte Datum auf einer Viererliniengrenze für einen neuen Zugriff befindet, ist das Datum in der Mitte zwischen den Punkten 90 Nanosekunden und 120 Nanosekunden von MCLK verfügbar. Jedoch ist, wenn der Zugriff für eine Anforderung innerhalb einer Vierfachwortgrenze erfolgt, die Datenzugriffzeit viel kürzer (d. h. bei 60 ns), wie durch die gestrichelten Linien des ADF-Signalverlaufs gezeigt ist, die eine Datenübertragung innerhalb einer Viererliniengrenze angeben.
  • In 16 ist die Speicherungsoperation für die Cache-Speichermanagementsysteme 120 und 130 von 1 für das Speichern von der CPU in den Cache in einer Rückkopierbetriebsart und außerdem in den Hauptspeicher 140 für die Durchschreibbetriebsart veranschaulicht. Der vom Systemtaktgeber 160 ausgegebene Haupttakt MCLK ist wie in 15 als eine Bezugslinie dargestellt. Zu einem Zeitpunkt T1 wird das Adressabtastsignal aktiviert, das anzeigt, dass eine gültige Adresse folgt. Zu einem Zeitpunkt T2, ungefähr einen viertel MCLK-Taktzyklus später, werden gültige Adress- und Funktionscodeausgaben auf den entsprechenden Leitungen des Prozessor-/Cache-Schnittstellenbusses, PDF bzw. FC, empfangen. Zu einem Zeitpunkt T3 werden die Adressleitungen in den Dreierzustands-Zustand gezogen (potentialfrei geschaltet) und das Datum wird, je nachdem, in den Cachespeicher und/oder in den Hauptspeicher geschrieben. Es können Mehrfachdatenwörter übertragen werden. Die Einzelwort-, Vierfachwort- oder Sechzehnfachwortbetriebsart ist durch den Funktionscode auf den Leitungen FC bestimmt. Zum Zeitpunkt T4 wird der Antwortcode ausgegeben, um anzuzeigen, dass die Übertragung vollständig ist, und um den Zyklus zu beenden.
  • Sowohl das Zurückkopieren als auch das Durchschreiben als Strategien zur Aktualisierung des Hauptspeichers 140 sind in der Cache-Systemspeichermanagementeinheit verfügbar und können auf Seitenbasis vermischt werden. Steuerbits, die sich in den Seitentabellen befinden, werden in den ÜLB geladen, um zu bestimmen, welche Strategie verwendet wird.
  • Ein Rückkopieren wird im Allgemeinen leistungsfähiger sein. Das Datum wird nur dann in den Hauptspeicher zurückgeschrieben, wenn es aus der Cache- Speichermanagementeinheit entfernt wird. Dieses Schreiben kann mit dem Abrufen von Blöcken in den Cache stark überlappen. Folglich wird das Rückkopieren im Allgemeinen den Busverkehr stückeln und Verzögerungen infolge einer Warteschlangenbildung bei aufeinander folgendem Schreiben minimieren.
  • Das Durchschreiben hat zwei Vorteile. Erstens ist der Hauptspeicher immer auf dem neuesten Stand, die Systemzuverlässigkeit ist verbessert, da ein Cachechip- oder Prozessorfehler nicht den Verlust der Hauptspeicherinhalte zur Folge haben wird. Zweitens vereinfacht das Durchschreiben in einem Mehrprozessorensystem die Aufrechterhaltung der Konsistenz innerhalb des von den Prozessoren gemeinsam benutzten Hauptspeichers.
  • Das Betriebssystem kann diese Tags, die Durchschreiben vs. Rückkopieren festlegen, für die Anwender verfügbar machen, so dass diese eine zweckdienliche Wahl treffen können.
  • Die 17A-B veranschaulichen den Datenfluss von Operationen zwischen der CPU 410, der Cache-Speichermanagementeinheit 412 und dem Hauptspeicher 414. In 17A ist der Datenfluss für eine Rückkopier-Schnellschreiboperation veranschaulicht. Die CPU 410 gibt Daten zur Speicherung in der Cache-Speichermanagementeinheit 412 aus. Dies "verschmutzt" den Inhalt des Cachespeichers an jenem Speicherort. Bei einer Säuberung schreibt die Cache-Speichermanagementeinheit 412 die "schmutzigen Daten" (Dirty-Data) auf die entsprechende private Seite im Hauptspeicher 414 zurück. Der Prozessor 410 kann gleichzeitig neue Daten an die Speicherorte der Cache-Speichermanagementeinheit 412 schreiben, die gerade gesäubert werden. Dies schafft den Vorteil insgesamt schneller Operationen beim Schreiben.
  • In 17B ist die Durchschreibbetriebsart der Operation veranschaulicht. Diese Betriebsart bewahrt die Datenkonsistenz bei einer geringfügigen Verringerung der über Alles gemessenen Schreibgeschwindigkeit. Die CPU 410 schreibt gleichzeitig in den Cachespeicher der Cache-Speichermanagementeinheit 412 und auf die gemeinsam benutzte Seite im Hauptspeicher 414. Dadurch wird sichergestellt, dass das Datum, das an einer bestimmten Position auf einer gemeinsam benutzten Seite gespeichert ist, den aktuellsten Wert hat, wie durch andere Programme auf den neuesten Stand gebracht.
  • In 18 sind die Wechselwirkungen zwischen dem Datenfluss und der Zustandsänderung der CPU 510, des Cachespeicher-Untersystems 512 und des ÜLB/Speicher-Untersystems 514 veranschaulicht. Außerdem ist die Wechselwir kung zwischen der Cache-Speichermanagementeinheit und der CPU einerseits und dem Hauptspeicher 516 andererseits dargestellt, um die DAÜ-Operation für die Betriebsarten Rückkopieren und Durchschreiben sowie die zeitlichen Beziehungen zwischen den Ereignissen zu veranschaulichen.
  • Im Schritt 1 gibt die CPU 510 eine virtuelle Adresse an das ÜLB/Speicheruntersystem 514 aus, das im Schritt 2 eine reale Adresse an das Cachespeicheruntersystem 512 ausgibt. Bei einer Durchschreiboperation oder bei einem Cachefehltreffer wird die reale Adresse auch an den Hauptspeicher 516 geschickt. Bei einer DAÜ-Operation wird im Schritt 2 ein Teil der virtuellen Adresse zusammen mit der Segment-Tabellen-Anfangsadresse zu dem Hauptspeicher gesendet.
  • Für die Speicherungsbetriebsart werden im Schritt 3 Daten aus der CPU 510 sowohl für die Rückkopier- als auch für die Durchschreibbetriebsart zur Speicherung in das Cachespeicheruntersystem 512 geschrieben und für die Durchschreibbetriebsart außerdem zur Speicherung in den Hauptspeicher 516 geschrieben. Für die Ladebetriebsart umfasst der Schritt 3 das Laden von Daten aus dem Cachespeicheruntersystem 512 in die CPU 510. Bei einem Cachefehltreffer werden die Daten im Schritt 3 aus dem Hauptspeicher 516 in das Cachespeicheruntersystem 512 und in die CPU 510 geladen.
  • Bei einem Cachefehltreffer in der Rückkopierbetriebsart gibt das Speicheruntersystem 512 dann, wenn Dirty-Daten im Cachespeicher vorhanden sind (d. h. wenn das Dirty-Bit gesetzt ist), die Dirty-Daten an den Hauptspeicher 516 zurück.
  • In 19 sind der Datenfluss und die Wirkungsweise der DAÜ sowie der ÜLB-Adressübersetzungsprozess veranschaulicht. Wenn eine virtuelle Adresse eine Übersetzung in eine reale Adresse erfordert und es keine der erforderlichen Übersetzung entsprechenden Übersetzungswerte gibt, die in dem Cache-Speichermanagementsystem gespeichert sind, wird die in 19 veranschaulichte Operation ausgeführt. Wenn die abgerufene virtuelle Adresse in dem Register-Akkumulator für virtuelle Adressen "VA" (z. B. 310 von 9) gespeichert ist, steht eine virtuelle Adresse "VA" (z. B. 32 Bits), die eine Übersetzung erfordert, zur Verfügung. Wie mit Bezug auf 7C erörtert worden ist, umfasst die virtuelle Adresse eine virtuelle 10-Bit-Segmentdatenadresse VA<31:22>, eine 10-Bit-Seitenadresse VA<21:12> und eine 12-Bit-Distanzadresse VA<11:0>.
  • Die DAÜ-Logik führt die dynamische Adressübersetzung aus, wenn es einen Fehltreffer im ÜLB gibt. Die DAÜ-Logik wartet, bis das Schreibregister leer ist, und führt dann zwei Lesezugriffe auf den Hauptspeicher aus. Das erste Lesen fügt die Segmentnummer einer Segmenttabellenquelle (STQ) hinzu, wodurch die Adresse der Seitentabelle erhalten wird. Das zweite Lesen fügt die Seitennummer zu der Seitentabellenquelle hinzu, wodurch sowohl die reale Adresse der Seite als auch weitere verwertbare Informationen wie Schutzbits, Rückkopier-/Durchschreibzustand, Dirty-Bits usw. erhalten werden. Für jeden neuen Anwender oder Prozess kann eine neue Segmenttabellenquelle verwendet werden. Das STQ-Register in der DAÜ wird unter CPU-Steuerung geladen. Es gibt zwei STQ-Register, eines für die Anwendungsprogramm-Betriebsart und das andere für die Hauptsteuerprogramm-Betriebsart. Die Hardware wählt automatisch, in Abhängigkeit von der Betriebsart im Prozessorzustandswort (PZW), das richtige Register.
  • Die Zugriffsschutzbits in den Seitentabellen werden von der DAÜ-Logik auf Schutzverletzungen geprüft. Bei ihrem Auftreten wird eine CPU-Spontanmeldung erzeugt. Wenn während einer DAÜ-Operation, während der Hauptspeicher gelesen wird, ein Paritätsfehler auftritt, so dass das Datum nicht korrigiert und daher verdächtig ist, wird eine CPU-Spontanmeldung erzeugt.
  • Ein Bit PF in der Seitentabelle oder der Segmenttabelle bildet den Seitenfehleranzeiger. Das Bit wird durch die Software gesetzt oder zurückgesetzt.
  • Das System kann in einer nicht abgebildeten Betriebsart ohne virtuelle Adressierung sein. In dieser Betriebsart ist die DAÜ-Einrichtung inaktiv und die Schutzbits werden nicht verwendet. Jedoch sollte diese Betriebsart auf Grund der Anfälligkeit des Systems für Programmfehler und eine mutwilligen Zerstörung nur selten benutzt werden.
  • Nachdem die DAÜ-Logik eine Übersetzung abgeschlossen hat, werden die virtuelle Adresse, die reale Adresse und die Systemtags zum ÜLB gesendet, wo sie für eine spätere Verwendung gespeichert werden, bis sie ersetzt werden.
  • Die DAÜ wird auf die folgenden speicherabgebildeten E/A-Befehle reagieren:
    • – Lade Hauptsteuerprogramm-STQ-Register (privilegiert)
    • – Lies Hauptsteuerprogramm-STQ-Register
    • – Lade Anwenderprogramm-STQ-Register (privilegiert)
    • – Lies Anwenderprogramm-STQ-Register
    • – Lies virtuelle Adresse, die den Seitenfehler oder die Schutzverletzung verursacht hat.
  • Dies wird mit Bezug auf 22 genauer erörtert.
  • Wie im Folgenden mit Bezug auf 21 erörtert wird, enthält das Cache-Speichermanagementsystem eine Registerstapelung. Diese Registerstapelung enthält ein Segmenttabellenquellen-Register (d. h. STQ-Register) für jede der Hauptsteuerprogramm- und Anwenderprogrammsegment-Tabellenquellen für das dann aktuelle Hauptsteuerprogramm und Anwendungsprogramm der entsprechenden Cache-Speichermanagementeinheit. Das Segmenttabellenquellen-Register enthält einen 32-Bit-Wert, dessen zwanzig höchstwertige Bits den Wert der Segmenttabellenquelle repräsentieren.
  • Wie in 19 veranschaulicht ist, wird dieser STQ-Wert als höchstwertiger Teil eines Worts in einem STQ-Eintrag-Adressakkumulator mit der 10-Bit-Segmentadresse aus dem virtuellen Adressregister 310 als dem Teil des Worts mit der nächstfolgenden Wertigkeit in dem STQ-Eintrag-Adressakkumulator verkettet. Die resultierende 30-Bit-Adresse bildet einen Zeiger auf eine Segmenttabelle im Hauptspeicher.
  • Der Segmenttabellen-Eintrag-Adressakkumulator (d. h. STOEA-Akkumulator) innerhalb der Cache-Speichermanagementeinheit akkumuliert und verkettet die an den Hauptspeicher auszugebende Adresse, um die Segmenttabelle im Hauptspeicher zu adressieren. Unter Verwendung der zwanzig Bits der Segmenttabellenquelle als Adressbits STOEA<31:12>, unter Verwendung der Bits [VA31:22] des virtuellen Adresssegments als nächste zehn Bits, STOEA<11:2>, der Segmenttabellenadresse und verkettenden Nullen für die Bitpositionen STOEA<1:0> der Segmenttabellenadresse, wird eine 32-Bit-Adresse konstruiert, die vom STOEA-Akkumulator an den Hauptspeicher ausgegeben wird. Die Segmenttabelleneintrag-Adressausgabe vom Segmenttabelleneintrag-Adressakkumulator der Cache-Speichermanagementeinheit wird über den Systembus an den Hauptspeicher ausgegeben. Dies schafft den Zugang zu dem entsprechenden Seitentabelleneintrag (STE) innerhalb der Segmenttabelle im Hauptspeicher entsprechend der Segmenttabelleneintrag-Adressausgabe vom Cache-Speichermanagementsystem. Die zwanzig höchstwertigen Datenbits 31:12 der adressierten Hauptspeicherzelle werden vom Hauptspeicher an die Cache-Speichermanagementeinheit für eine Speicherung in dem Seitentabelleneintrag-Adressakkumulator (d. h. STEA) zurückgeschickt. Diese zwanzig Bits der Seitentabelleneintragadresse werden in dem STEA-Akkumulator als die zwanzig höchstwertigen Bits eines 32-Bit-Worts verkettet. Die in der Wertigkeit folgenden zehn Bits werden mit der Ausgabe des virtuellen Adressregisters 310, den Bits VA<21:12>, welche die Seitenauswahlbits repräsentieren, verknüpft. Die zwei niedrigstwertigen Bits der Seitentabelleneintrag-Adressakkumulatorausgabe sind Nullen. Der Seitentabelleneintrag-Adressakkumulator der Cache-Speichermanagementeinheit gibt eine 32-Bitadresse über den Systembus an den Hauptspeicher aus.
  • Die Adresse des Seitentabelleneintrags wählt die Einsprungstelle in eine Zeile der Seitentabelle im Hauptspeicher. Jede Zeile der Seitentabelle umfasst mehrere Felder, welche die übersetzte reale Adresse, Systemtags, Schutz-, Dirty-, Referenced- und Seitenfehlerwerte für die entsprechende virtuelle Adresse umfassen. Die aus der Seitentabelle ausgewählte Zeile enthält, wie dargestellt ist, zwanzig Bits der realen Adresse "RA", fünf Bits Systemtaginformationen ST, vier Bits Schutzgradinformationen PL, ein Bit Dirty-Informationen D, ein Bit Referenced-Informationen R sowie Seitenfehlerinformationen PF. Diese Felder sind mit Bezug auf die 11A-B genauer erörtert worden.
  • Die aus der Seitentabelle ausgewählte Zeile wird vom Hauptspeicher zu dem ÜLB in der Cache-Speichermanagementeinheit zwecks Speicherung im Speicherfeld des ÜLB zurückübertragen. Als Nächstes werden die zwanzig Bits der realen Adresse vom ÜLB für die soeben bezeichnete Zeile in der Seitentabelle ausgegeben und mit den zwanzig höchstwertigen Bits vom realen Adressakkumulator in der Cache-Speichermanagementeinheit gekoppelt. Diese zwanzig Bits werden in dem realen Adressakkumulator als die zwanzig höchstwertigen Bits mit den zwölf niedrigstwertigen Bits des virtuellen Adressregisters 310 VA<11:0> verkettet, so dass vom realen Adressakkumulator eine reale 32-Bit-Adressausgabe geliefert wird. Diese Ausgabe des realen Adressakkumulators wird dann über den Systembus an den Hauptspeicher geschickt, um die gewünschte reale Adressposition auszuwählen. In Reaktion auf diese Ausgabe einer realen Adresse wird ein Block von Wörtern an das Cachespeichermanagementsystem zur Speicherung in diesem zurückübertragen. Die Cache-Speichermanagementeinheit überträgt dann das anfangs angeforderte Datenwort oder die Datenwörter zur CPU. Die in 19 veranschaulichte Prozedur ist nur erforderlich, wenn die virtuelle Adresse, die in dem Registerakkumulator 310 enthalten ist, keine entsprechenden Übersetzungswerte in dem ÜLB der Cache-Speichermanagementeinheit hat. Folglich sind für alle adressierbaren Speicherorte, die zurzeit in der Cache-Speichermanagementeinheit gespeichert sind, die Übersetzungsdaten schon vorhanden. Dies würde alle Fälle des Zurückschreibens vom Cache in den Hauptspeicher einschließen.
  • In 20 ist ein Blockdiagramm der Cache-Speichermanagementeinheit veranschaulicht. Der Bus vom Prozessor zum Cache, 121 oder 131 von 1, koppelt mit der CPU-Schnittstelle 600. Das Cachespeicheruntersystem 610, das ÜLB-Untersystem 620, der Registerstapel 630, die Systemschnittstelle 640 und die mikroprogrammierte Steuer- und DAÜ-Logik 650 sind alle mit der CPU-Schnittstelle 600 gekoppelt. Ein Bus für virtuelle Adressen (d. h. VA) ist von der CPU-Schnittstelle 600 mit jedem der Cacheuntersysteme 610, dem ÜLB-Untersystem 620 und dem Registerstapel-Untersystem 630 gekoppelt. Ein Datenausgabebus vom Cache-Untersystem 610 zur CPU-Schnittstelle 600 koppelt die Datenausgabe vom Speicheruntersystem des Cachespeicheruntersystems 610, wie als D0[31:00] veranschaulicht ist.
  • Ein bidirektionaler Datenbus, mit nDT[31:00] bezeichnet, sorgt in Abhängigkeit von der Operation, die gerade von der Cache-Speichermanagementeinheit ausgeführt wird, für eine gezielte Kopplung eines Datums, einer virtuellen Adresse, einer realen Adresse oder eines Funktionscodes. Der Bus nDT koppelt mit den Cache-Speichermanagement-Systemelementen 600, 610, 620, 630, 640 und 650. Die Systemschnittstelle 640 koppelt auf der einen Seite mit dem Systembus und auf der Seite im Inneren der Cache-Speichermanagementeinheit mit dem Bus nDT und dem Bus SYRA. Der Bus SYRA liefert eine reale Adresse vom Systembus über die Systemschnittstelle 640 an die ÜLB 620 und das Cacheuntersystem 610. Wie dargestellt ist, werden die zwölf niedrigstwertigen Bits, die den Distanzabschnitt der Adresse repräsentieren, zu dem Cachespeicheruntersystem 610 gekoppelt. Die zwanzig höchstwertigen Bits, SYRA[31:12], werden vom Bus SYRA zum ÜLB-Untersystem 620 gekoppelt. Die Speicher- und DAÜ-Logik 650 koordiniert die Systembusschnittstelle nach einem Fehltreffer im ÜLB 620 oder Cache-Untersystem 610 und steuert die DAÜ-Operationen.
  • In 21 ist ein genaueres Blockdiagramm von 20 gezeigt. Das Cacheausgaberegister 601, das Cacheeingaberegister 603 und das Adresseingaberegister 605 der CPU-Schnittstelle 600 sind mit Bezug auf 8 genauer beschrieben worden. 21 veranschaulicht des Weiteren den Multiplexer 602, die Schreib-Lese-Logik 604 für die Ausführung von Lese-/Modifiziere-/Schreib-Operationen, das Funktionscoderegister 606 und die Programmunterbrechungs-Codiereinrichtung 607.
  • Die Lese-/Modifiziere-/Schreib-Logik 604 koordiniert das Multiplexieren der Ausgabe des Cachespeicheruntersystems über den Multiplexer 614 vom Cachespeicher 611 des Cachespeicheruntersystems 610 und über den Multiplexer 602 der CPU-Schnittstelle 600 für eine selektive Verbindung mit dem Cacheausgaberegister 601 und von dort mit dem Prozessor-/Cache-Bus. Alternativ kann der Multiplexer 602 Daten über den Bus nDT innerhalb des Cache-Speichermanagementsystems von der Systembusschnittstelle 640 oder von der Lese-/Modifiziere-/Schreib-Logik 604 empfangen. Die LMS-Logik 604 hat als Eingabe die Ausgabe des Cacheausgaberegisters 601 sowie die Ausgabe des Cacheeingaberegisters 603. Das Funktionscoderegister 606 und die Codiereinrichtung 607 für den Programmunterbrechungscode sind mit dem Prozessor gekoppelt. Das Funktionscoderegister 606 reagiert auf vom Prozessor empfangene Funktionscodes, um Signale zu anderen Teilen des Cache-Speichermanagementsystems zu liefern. Die Programmunterbrechungslogik 607 reagiert auf Fehler bzw. Störungen innerhalb des Cache-Speichermanagementsystems und liefert in Reaktion auf die Programmunterbrechungslogik für den bestimmten Fehler Ausgaben an den Prozessor.
  • Das Cache-Speicheruntersystem 610 umfasst ein Cachespeicherfeld 611 mit zwei 64-Zeilen-Cacheinhalten, wie mit Bezug auf 9 beschrieben worden ist. Die Vierfachwortausgabe von jeder der Hälften, W und X, des Cachespeicherfelds 611 ist mit den entsprechenden Vierfachwort-Zeilenregistern 612 und 616 gekoppelt. Die Vierfachwortregister 612 und 616 sind jeweils unabhängig mit dem Bus nDT gekoppelt, um über die CPU-Schnittstelle 600 mit dem Prozessor-/Cache-Bus oder über die Systemschnittstelle 640 mit dem Systembus zu koppeln.
  • Die Ausgaben realer Adressen aus den Hälften W und X des Cachespeicherfelds 611 werden jeweils zu einem Eingang jedes der Komparatoren 615 bzw. 617 gekoppelt, wovon jeder für die Ausgabe eines Treffer-/Fehltreffer-Signals sorgt. Die anderen Eingänge der Komparatoren 615 und 617 sind mit dem Ausgang des Multiplexers 618 gekoppelt. Der Multiplexer 618 gibt eine reale Adresse aus. Die realen Adresseingaben werden von der Systembusschnittstelle 640 über den Bus SYRA, von dort aus zum Multiplexer 618 sowie vom Multiplexer 622 des ÜLB-Untersystems 620, das eine übersetzte reale Adresse aus seinem ÜLB-Speicherfeld 621 in Reaktion auf eine physische Adresse liefert, die über die CPU-Schnittstelle 600 vom Prozessor-/Cache-Bus empfangen worden ist, gekoppelt.
  • Die Vierfachwortregister 612 und 616 haben jeweils eigene Ausgänge, die mit dem Multiplexer 614 koppeln. Der Multiplexer 614 gibt zielgerichtet das Wort der ausgewählten Informationen für eine selektive Kopplung zu dem Cacheausga beregister 601 an den Multiplexer 602 aus.
  • Wie mit Bezug auf 9 erörtert worden ist, koppelt der Multiplexer 613 einen niedrigwertigen Abschnitt einer realen Adresse, entweder von der CPU-Schnittstelle 600 oder vom ÜLB 620, für eine selektive Ausgabe zielgerichtet zu dem Multiplexer 613, wobei das Cachespeicherfeld 611 so gekoppelt wird, dass eine Zeile darin ausgewählt wird.
  • Das ÜLB-Speicherfeld 621 liefert in Reaktion entweder auf eine Adresse vom Bus nDT oder auf eine Adresse, die von der CPU-Schnittstelle 600 als Ausgabe über das Adresseingaberegister 605 geliefert wird, gezielt eine Ausgabe aus der in dem Speicherfeld ausgewählten Zeile. Ein Abschnitt der virtuellen Adressausgabe (d. h. die Bits 12 bis 0 des niedrigwertigen Abschnitts) des Adresseingaberegisters 605 wird zu dem ÜLB-Speicheruntersystem 621 gekoppelt, während ein höherwertigerer Abschnitt (d. h. die Bits 31 bis 22) zu jeweils einem Eingang der Komparatoren 623 und 624 der ÜLB 620 gekoppelt wird. Die Ausgabe der übersetzten virtuellen Adresse vom ÜLB-Speicherfelduntersystem 621 für jede der Hälften, W und X, wie mit Bezug auf 9 erörtert worden ist, wird zu den anderen Eingängen der Komparatoren 623 und 624 gekoppelt. Die Komparatoren 623 und 624 liefern jeweils eigene Treffer-/Fehltreffer-Signalausgaben. Der Multiplexer 622 erhält reale Adresseingaben, die als Ausgaben aus den Hälften X und W des ÜLB-Speicheruntersystems 621 dahin koppeln. Der Multiplexer 622 liefert in Reaktion auf die Treffer-/Fehltreffer-Ausgaben der Komparatoren 623 und 624 gezielt die Ausgabe der übersetzten realen Adresse an den Eingang des Multiplexers 618 des Cachespeicheruntersystems 610.
  • Die Adressenschutzlogik 625 sorgt in Reaktion auf Informationen, die zu Anfang aus dem Seitentabelleneintrag geladen worden sind, wie mit Bezug auf 19 erörtert worden ist, für einen gezielten Schutz bestimmter ÜLB-Zeilen gegen Lese- und Schreibzugriffe.
  • Die Registerstapelung 630 sorgt für die Speicherung von Segmenttabellenquellenwerten in zwei Segmenttabellenquellenregistern. Der Registerspeicher 630 enthält Segmenttabellenquellen-Hauptprogramm- und Segmenttabellenquellen-Anwenderregister, ein Fehlerlokalisierungsadressregister F sowie weitere Register, wie etwa ein Fehleradressregister.
  • Die Steuer- und DAÜ-Logik 650 sorgt für eine direkte Adressübersetzungslogik, eine Abruflogik, eine Schreiblogik, eine Leselogik und eine E/A-Befehlsausführungslogik.
  • In 22 ist ein genauerer Blockschaltplan des Steuerlogik-Mikrobausteins 650 von 21 veranschaulicht. Der Mikrosteuerbaustein umfasst einen Nurlesespeicher 700 und ein Mikrosteuerbaustein-Betriebsuntersystem, das einen Befehlszähler 710, einen Stapelzeiger 715, ein Befehlsregister 720, eine Vektorerzeugungseinrichtung 730, eine Bedingungscodesignal-Auswahleinrichtung 740, eine Signalcontroller- und Befehlsdecodiereinrichtung 750 sowie ein Ausgaberegister 760 umfasst.
  • Der Befehlszähler 710 umfasst ein Befehlszähler-Akkumulatorregister 712, einen Multiplexer 713 und eine Inkrementierungslogik 711. Der Multiplexer 713 liefert in Reaktion auf ein Multiplex-Auswahlsignal MUXSLT als Ausgabe von der Signalcontroller-/Befehlsdecodiereinrichtung 750 eine Signalausgabe an das Befehlszähler-Akkumulatorregister 712. Diese trifft eine Auswahl unter den acht Bit umfassenden Vektoradressausgaben von der Vektorerzeugungseinrichtung 730; der Ausgabe der nächstfolgenden Befehlszähleradresse von der Inkrementierungslogik 711 in Reaktion auf ein Befehlszähler-Inkrementierungssignal PCINC als Ausgabe vom Signalcontroller-/Befehlsdecodiereinrichtungssystem 750 oder einer Verzweigungsadresse als Ausgabe vom Verzweigungsadressregister des Befehlsregisters 720. Der Ausgang des Multiplexers 713 ist für eine gezielte Ausgabe aus dem Befehlszähler-Akkumulatorregister 712 als Befehlszähler-Ausgabeadresse PCOUT mit diesem Letzteren gekoppelt. PCOUT wird zur Inkrementierungslogik 711, zum Stapelzeiger 715 und zu den Adressauswahleingängen des Nurlesespeicher-Untersystems 700 gekoppelt.
  • Wie in 22 gezeigt ist, enthält der Speicher 700 256 Zeilen von jeweils 52 Bit, wobei jede Zeile einen an das Befehlsregister 720 und/oder das Ausgaberegister 760 auszugebenden Befehls- und/oder Datenwert aufweist. Die höchstwertigen Bitpositionen (d. h. die Ausgabebits 51 bis 48) werden vom Nurlesespeicher-Untersystem 700 an das Befehlstypregister 723 des Befehlsregisters 720 gekoppelt. Diese Bits geben an, ob die übrigen Bits der Zeile eine Befehls- oder Steuersignalausgabe umfassen. Die übrigen Bits der Zeile (d. h. die Bits 47 bis 0) werden zu dem Ausgaberegister 760 und zu dem Befehlsregister 720 gekoppelt. Diese Bits sind mit dem Verzweigungsadressregister 721 (d. h. Bits 40 bis 47 der Ausgabe des Nurlesespeichers 700) und zu dem Bedingungscoderegister 722 (d. h. Bits 26 bis 0) gekoppelt.
  • Die Ausgabe des Befehlsregisters 723 wird vom Befehlsregister 723 zum Signalcontroller 750 gekoppelt. Das Befehlsregister 723 gibt in Reaktion auf ein CR-Haltesignals als Ausgabe vom Signalcontroller 750 Befehlstypinformationen aus. Beispielweise könnte bei Verwendung der Bits 48 bis 51 der Ausgabe des Nurlesespeichers 700 "000" einen Ausgabebefehl, "001" einen Sprungbefehl, "010" einen Befehl zum Übergang in ein Unterprogramm, "011" einen Wartebefehl, 100 einen Rücksprungbefehl, "101" und "110" Vektoroperationen und "111" einen Nulloperationsbefehl angeben.
  • Der Ausgang des Bedingungscoderegisters 722 ist mit der Bedingungscodesignal-Auswahllogik 740 gekoppelt.
  • Die Bedingungscode-Decodiereinrichtung 740 weist ebenfalls einen Bedingungscode und Zustandseingaben auf, die mit ihr gekoppelt sind. Diese Signale zeigen einen Cache- oder ÜLB-Fehlgriff, einen mitzuteilenden Funktionscode, den Betriebszustand wie etwa Lesen oder Schreiben, Zustands- und Bedingungscode-Informationen usw. an. Die Bedingungscode-Decodiereinrichtung 740 liefert einen Token als Ausgabe an den Signalcontroller 750, um den Zustand anzugeben, und gibt des Weiteren eine Vektorzahl an die Vektorerzeugungseinrichtung 730 aus. Die Kombination aus den Fehltreffer- und/oder Funktionscodeinformationen definiert die Zieladresse für die Vektorverarbeitung.
  • Der Signalcontroller 750 liefert Vektorsignal-Zeitsteuerungsausgaben (d. h. VCTs, VCTc), die zu der Vektorerzeugungseinrichtung 730 gekoppelt werden. Wenn eine Vektoroperation angezeigt ist, wird die Vektoradresse aus der Vektorerzeugungseinrichtung 730 über den Multiplexer 713 in den Befehlszählerakkumulator 712 geladen und der Befehlszähler 710 wird zu Folgebefehlen inkrementiert, bis die Vektorroutine beendet ist.
  • Das Verzweigungsadressregister 721 gibt gezielt Verzweigungsadressensignale an den Befehlszähler 710 zur Verwendung damit in Übereinstimmung mit den Steuersignalen aus, die vom Signalcontroller und der Befehlsdecodiereinrichtung 750 ausgegeben werden. Die Signalausgabe des Ausgaberegisters 760 erfolgt in Reaktion auf die gezielte Ausgabe eines das Ausgaberegister haltenden "ODER-Haltesignals" vom Signalcontroller 750 an das Ausgaberegister 760. Die vom Ausgaberegister 760 ausgegebenen Signale werden zu anderen Bereichen des Cache-Speichermanagementsystems (d. h. Steuersignalen und/oder Daten) zur Verwendung durch die anderen Bereiche des Cache-Speichermanagementsystems gekoppelt.

Claims (20)

  1. Computersystem, das umfaßt: einen Hauptspeicher (140) zum Speichern von Datenseiten; einen Systembus (141), der mit dem Hauptspeicher (140) gekoppelt ist; ein erstes Datenverarbeitungselement, das mit dem Systembus (141) gekoppelt ist, um Daten vom Hauptspeicher (140) zu verarbeiten; ein zweites Datenverarbeitungselement zum Verarbeiten von Daten vom Hauptspeicher (140); und Cachespeicher-Managementmittel (120, 130), die mit dem zweiten Datenverarbeitungselement und mit dem Systembus (141) gekoppelt und versehen sind mit: einem Cachespeicher (320) zum Speichern von Daten von dem Hauptspeicher (140), wobei Daten von dem Hauptspeicher (140), die von dem ersten und/oder dem zweiten Datenverarbeitungselement verarbeitet worden sind, in dem Cachespeicher (320) gespeichert werden können; Systemtag-Mitteln, die ein Systemtag (ST) speichern, das eine von mehreren Cachedaten-Speicherbetriebsarten (W. Thru, Copyback) angibt; und Cachecontroller-Mitteln, die virtuelle Adressen (VA), die von dem zweiten Datenverarbeitungselement empfangen werden, in reale Adressen (RA) übersetzen, um Daten wahlweise in dem Cachespeicher (320) zu speichern und von ihm wiederzugewinnen und um Daten zwischen dem Cachespeicher (320) und dem zweiten Datenverarbeitungselement auszutauschen, wobei die Cachecontroller-Mittel umfassen: Mittel, die über den Systembus (141) wahlweise auf den Hauptspeicher (140) zugreifen, um Seitentabelleneinträge (PTE) zu erhalten, die Informationen bezüglich der Übersetzung von virtuellen in physikalische Adressen und ein Systemtag (ST) für Datenseiten in dem Hauptspeicher (140) enthalten; Cachebetriebsart-Ausführungsmittel, die die Cachedaten-Speicherbetriebsart (W. Thru, Copyback), die durch das Systemtag (ST) angegeben wird, ausführen; Datenkonsistenzmittel, die die Konsistenz von gemeinsam genutzten Daten zwischen dem ersten und dem zweiten Datenverarbeitungselement sicherstellen und Systembus-Überwachungsmittel enthalten, die mit dem Systembus (141) gekoppelt sind, um die Aktivität in Zyklen des Systembusses (141) zu überwachen, um festzustellen, ob Zyklen von einem Typ sind, der die Datenkonsistenz beeinflussen könnte; und Mittel, die feststellen, ob der Cachespeicher (320) gelöscht oder ob sein Inhalt zum Systembus (141) geschickt werden sollte.
  2. Computersystem nach Anspruch 1, bei dem die mehreren Daten-Speicherbetriebsarten (W. Thru, Copyback) umfassen: eine Durchschreibbetriebsart (W. Thru), bei der die Cachespeicher-Managementmittel (120, 130) dann, wenn das zweite Datenverarbeitungselement Daten, die eine virtuelle Adresse (VA) besitzen, die einer Datenseite entspricht, die dieser Betriebsart zugeordnet sind, modifiziert, die modifizierten Daten in dem Hauptspeicher (140) und in dem Cachespeicher (320) speichern; und eine Rückkopier-Betriebsart (Copyback), bei der die Cachespeicher-Managementmittel (120, 130) dann, wenn das zweite Datenverarbeitungselement Daten, die eine virtuelle Adresse (VA) besitzen, die einer Datenseite entspricht, die dieser Betriebsart zugeordnet sind, modifiziert, die modifizierten Daten nur in dem Cachespeicher (320) speichern.
  3. Computersystem nach Anspruch 2, bei dem die Cachespeicher-Managementmittel ferner Hauptspeicher-Steuermittel umfassen, die in Reaktion auf die Systemtags (ST) und die realen Adressen (RA) wahlweise Daten im Hauptspeicher (140) speichern und aus ihm wiedergewinnen.
  4. Computersystem nach Anspruch 3, bei dem vor dem Überschreiben vorhandener modifizierter Daten im Cachespeicher (320) für Seiten, denen eine Rückkopier-Betriebsart (Copyback) zugeordnet ist, die Cache-Managementmittel die modifizierten Daten in dem Hauptspeicher (140) bei den realen Adressen (RA), die den modifizierten Daten zugeordnet sind, speichern.
  5. Computersystem nach Anspruch 3, bei dem die Cachecontroller-Mittel ein Hauptspeicherzugriff-Erfassungsmittel umfassen, das erfaßt, wenn das erste Datenverarbeitungselement auf die Hauptspeichermittel zugreift.
  6. Computersystem nach Anspruch 5, bei dem die Systembusmittel Zyklustypmittel umfassen, die den Typ des Zugriffs auf die Hauptspeichermittel durch das erste Datenverarbeitungselement angeben.
  7. Computersystem nach Anspruch 6, bei dem das Systemtag (ST) zu sätzlich eines von mehreren Adreßraumattributen angibt.
  8. Computersystem nach Anspruch 7, bei dem die mehreren Adreßraumattribute umfassen: ein Attribut bezüglich eines gemeinsam genutzten Adreßraums; und ein Attribut bezüglich eines privaten Adreßraums.
  9. Computersystem nach Anspruch 8, das ferner umfaßt: einen Bootlader-Speicher, der mit dem Systembus (141) gekoppelt ist und in dem Datenseiten gespeichert werden; eine Eingabe/Ausgabe-Vorrichtung, in der Datenseiten gespeichert werden; wobei die mehreren Adreßraumattribute umfassen: ein Attribut bezüglich eines Bootspeicher-Adreßraums, das angibt, daß eine virtuelle Adresse einer in den Bootspeicher gespeicherten Datenseite entspricht; ein Attribut bezüglich eines E/A-Adreßraums, das angibt, daß eine virtuelle Adresse einer in der Eingabe/Ausgabe-Vorrichtung gespeicherten Datenseite entspricht; und ein Attribut bezüglich eines Hauptspeicher-Adreßraums, das angibt, daß eine virtuelle Adresse einer in dem Hauptspeicher gespeicherten Datenseite entspricht.
  10. Verfahren zum Aufrechterhalten der Cache-Kohärenz in einem Computersystem, das einen Cachespeicher (320), einen Cache-Controller, mehrere Cachedaten-Speicherbetriebsarten (W. Thru, Copyback), einen Systembus (141), einen Hauptspeicher (140), ein erstes Datenverarbeitungselement, das mit dem Systembus (141) gekoppelt ist, um Daten von dem Hauptspeicher (140) zu verarbeiten, und ein zweites Datenverarbeitungselement, das Daten von dem Hauptspeicher (140) verarbeitet, enthält, mit den folgenden Schritten: wahlweises Zugreifen auf den Hauptspeicher (140) über den Systembus (141), um einen Seitentabelleneintrag (PTE) zu erhalten, der Daten bezüglich einer Übersetzung von virtuellen Adressen (VA) in reale Adressen (RA) sowie ein Systemtag (ST) für Datenseiten im Hauptspeicher (140) enthält; Speichern von Daten bezüglich der Übersetzung der virtuellen Adressen (VA) in reale Adressen (RA) und Speichern des Systemtags (ST) in einem Übersetzungspuffer; wobei das Systemtag (ST) eine von mehreren Cachedaten-Speicher betriebsarten (W. Thru, Copyback) ist, die umfassen: eine Durchschreib-Betriebsart (W. Thru), bei der dann, wenn das zweite Datenverarbeitungselement Daten, die eine virtuelle Adresse (VA) besitzen, die einer Datenseite entspricht, die dieser Strategie zugeordnet sind, modifiziert, die modifizierten Daten in dem Hauptspeicher (140) und in dem Cachespeicher (320) gespeichert werden; und eine Rückkopier-Betriebsart (Copyback), bei der dann, wenn das zweite Datenverarbeitungselement Daten, die eine virtuelle Adresse (VA) besitzen, die einer Datenseite entspricht, die dieser Strategie zugeordnet sind, modifiziert, die modifizierten Daten in dem Cachespeicher (320) und nicht in dem Hauptspeicher (140) gespeichert werden; Übersetzen virtueller Adressen (VA), die von dem zweiten Datenverarbeitungselement empfangen werden, in reale Adressen (RA); Ausführen der Speicheraktualisierungsstrategie, die durch das Systemtag (ST) angegeben wird, das der Datenseite entspricht, die der Cachedaten-Speicherbetriebsart (W. Thru, Copyback) zugeordnet ist; und Ausführen einer Konsistenz gemeinsam genutzter Daten zwischen dem ersten und dem zweiten Datenverarbeitungselement durch Überwachen der Aktivität in Zyklen des Systembusses (141), um festzustellen, ob Zyklen von dem Typ sind, der die Datenkonsistenz beeinflussen könnte; und Feststellen, ob der Cachespeicher (320) gelöscht oder ob sein Inhalt zum Systembus (141) geschickt werden sollte.
  11. Verfahren nach Anspruch 10, bei dem der Schritt des Ausführens der Konsistenz gemeinsam genutzter Daten ferner den Schritt umfaßt, bei dem erfaßt wird, ob das erste Datenverarbeitungselement auf den Hauptspeicher (140) zugreift.
  12. Verfahren nach Anspruch 10, bei dem der Schritt des Ausführens der Konsistenz gemeinsam genutzter Daten ferner den Schritt umfaßt, bei dem in Reaktion auf den Zyklustyp festgestellt wird, ob ein Speicherplatz im Hauptspeicher (140), auf den zugegriffen wird, Daten entspricht, die im Cachespeicher (320) gespeichert sind.
  13. Verfahren nach Anspruch 12, bei dem der Schritt des Ausführens der Konsistenz gemeinsam genutzter Daten ferner den Schritt umfaßt, bei dem in Reaktion auf den Zyklustyp Daten, die im Cachespeicher (320) gespeichert sind und dem Speicherplatz entsprechen, auf den im Hauptspeicher (140) zugegriffen wird, wahlweise aktualisiert oder ungültig gemacht werden, wenn der Zyklustyp ein Schreibzyklus ist.
  14. Verfahren nach Anspruch 13, bei dem der Schritt des Ausführens der Konsistenz gemeinsam genutzter Daten den Schritt umfaßt, bei dem die im Cachespeicher (320) gespeicherten Daten, die dem Speicherplatz im Hauptspeicher (140) entsprechen, auf den zugegriffen wird, ungültig gemacht werden, wenn die gesamte Cachezeile beschrieben wird.
  15. Verfahren nach Anspruch 14, bei dem der Schritt des Ausführens der Konsistenz gemeinsam genutzter Daten den Schritt umfaßt, bei dem die im Cachespeicher (320) gespeicherten Daten, die dem Speicherplatz im Hauptspeicher (140) entsprechen, auf den zugegriffen wird, aktualisiert werden, wenn in weniger als die gesamte Cachezeile geschrieben wird.
  16. Verfahren nach Anspruch 15, bei dem der Schritt des Ausführens der Konsistenz gemeinsam genutzter Daten den Schritt umfaßt, bei dem in Reaktion auf den Zyklustyp die im Cachespeicher (320) gespeicherten Daten, die dem Speicherplatz im Hauptspeicher (140), auf den zugegriffen wird, entsprechen, mit dem Systembus (141) gekoppelt werden, wenn der Zyklustyp ein Lesezyklus ist.
  17. Verfahren nach Anspruch 16, bei dem der Schritt des Ausführens der Konsistenz gemeinsam genutzter Daten ferner den Schritt umfaßt, bei dem die im Cachespeicher (320) gespeicherten Daten, die dem Speicherplatz im Hauptspeicher (140), auf den zugegriffen wird, entsprechen, mit dem Systembus (141) nur dann gekoppelt werden, wenn die Cachedaten durch das zweite Datenverarbeitungselement modifiziert worden sind, seit die Cachedaten in dem Cachespeicher (320) gespeichert wurden.
  18. Verfahren nach Anspruch 17, bei dem der Schritt des Ausführens der Konsistenz gemeinsam genutzter Daten ferner den Schritt umfaßt, bei dem der Hauptspeicher (140) das Koppeln der Daten in den Systembus (141) unterläßt, wenn der Cachecontroller Daten, die dem Speicherplatz im Hauptspeicher, auf den zugegriffen wird, entsprechen, in den Systembus (141) koppelt.
  19. Verfahren nach Anspruch 10, bei dem die mehreren Cachedaten-Speicherbetriebsarten eine Speicherbetriebsart ohne Cachespeicherung umfassen, in der Daten, die eine virtuelle Adresse (VA) besitzen, die einer Datenseite entspricht, die dieser Speicherbetriebsart zugeordnet ist, nicht im Cachespeicher (320) gespeichert werden.
  20. Verfahren nach Anspruch 19, bei dem der Schritt des Ausführens der Konsistenz gemeinsam genutzter Daten ferner die folgenden Schritte umfaßt: Feststellen, ob Daten im Cachespeicher (320) dem Speicherplatz im Hauptspeicher (140), auf den zugegriffen wird, entsprechen, um auf cachefähigen Speicherraum zuzugreifen; und Unterlassen dieser Feststellung für Zugriffe auf nicht cachefähigen Speicherraum.
DE3650782T 1985-02-22 1986-02-21 Anordnung von Cachespeicherverwaltungseinheiten Expired - Lifetime DE3650782T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US70449785A 1985-02-22 1985-02-22
US704497 1991-05-23

Publications (2)

Publication Number Publication Date
DE3650782D1 DE3650782D1 (de) 2003-09-11
DE3650782T2 true DE3650782T2 (de) 2004-06-17

Family

ID=24829780

Family Applications (2)

Application Number Title Priority Date Filing Date
DE3650584T Expired - Lifetime DE3650584T2 (de) 1985-02-22 1986-02-21 Anordnung von Cachespeicherverwaltungseinheiten
DE3650782T Expired - Lifetime DE3650782T2 (de) 1985-02-22 1986-02-21 Anordnung von Cachespeicherverwaltungseinheiten

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE3650584T Expired - Lifetime DE3650584T2 (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) DE3650584T2 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
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
EP0612013A1 (de) * 1993-01-21 1994-08-24 Advanced Micro Devices, Inc. Kombination von Vorausholungspuffer und Befehlscachespeicher
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)

* Cited by examiner, † Cited by third party
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

Also Published As

Publication number Publication date
EP0732656A3 (de) 1996-11-06
JPS61275946A (ja) 1986-12-06
JPH07117913B2 (ja) 1995-12-18
CA1283220C (en) 1991-04-16
DE3650782D1 (de) 2003-09-11
DE3650584T2 (de) 1997-06-26
CA1272301A (en) 1990-07-31
EP0732656A2 (de) 1996-09-18
EP0196244A3 (de) 1990-04-25
DE3650584D1 (de) 1997-01-23
CA1283219C (en) 1991-04-16
EP0732656B1 (de) 2003-08-06
EP0196244A2 (de) 1986-10-01
EP0196244B1 (de) 1996-12-11

Similar Documents

Publication Publication Date Title
DE68922326T2 (de) Speicherwarteschlange für eine festgekoppelte Mehrprozessorenkonfiguration mit einem zweistufigen Cache-Pufferspeicher.
DE69701078T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedener Prozessoren
DE3587960T2 (de) Datenverarbeitungsanlage mit einem Speicherzugriffssteuergerät.
DE69029173T2 (de) Mikroprozessor
DE69524564T2 (de) Kohärenz- und synchronisationsmechanismus für ein-/ausgangkanalsteuereinheiten in einem datenverarbeitungssystem
DE60203469T2 (de) System mit Schnittstellen und einem Schalter für die Trennung von kohärentem und nichtkohärentem Datenpaketverkehr
DE69323790T2 (de) Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem
DE69331448T2 (de) Dataprozessor mit einem Cachespeicher
DE69519926T2 (de) Verfahren und vorrichtung zum einhalten der transaktionssteuerung und zur unterstützung von verzögerten antworten in einer busbrücke
DE4218003C2 (de) Cache-Steuereinrichtung für ein sekundäres Cache-Speichersystem
DE3587439T2 (de) Gemeinsam benutzter Mehrprozessor-Pipeline-Cachespeicher.
DE68926036T2 (de) Speicherkonfiguration zur Verwendung für Schnittstellenbildung zwischen einer Systemsteuereinheit für ein Multiprozessorsystem und dem Hauptspeicher
DE3750107T2 (de) Cachespeicherkohärenzsteuerung mit einem Speicher, der ein laufendes Lesen anzeigt.
DE68927172T2 (de) Multiprozessorsystem mit cache-speichern
DE69727465T2 (de) Rechnersystem mit Speichersteuerung für Stossbetrieb-Übertragung
DE3782335T2 (de) Speichersteuersystem.
DE69128107T2 (de) Busanordnung für Speicherzugriff
DE3688192T2 (de) Seitenorganisierter cachespeicher mit virtueller adressierung.
DE60219436T2 (de) System mit adressbasierter Intraknotenkohärenz und datenbasierter Interknotenkohärenz
DE3688978T2 (de) Seitenspeicherverwaltungseinheit mit der fähigkeit nach wahl mehrere adressräume zu unterstützen.
DE68926059T2 (de) Organisation einer integrierten Cache-Einheit zur flexiblen Verwendung beim Entwurf von Cache-Systemen
DE69130203T2 (de) Folgerichtiger paketvermittelter Speicherbus für Multiprozessoren mit gemeinsam genutztem Speicher
DE3689226T2 (de) Multiprozessorsystem mit multihierarchischen Ebenen.
DE60211076T2 (de) Datenübertragung zwischen virtuellen Adressen
DE3854369T2 (de) Zentralprozessoreinheit für digitale datenverarbeitungsanordnung mit cache-speicherverwaltungsvorrichtung.

Legal Events

Date Code Title Description
8327 Change in the person/name/address of the patent owner

Owner name: INTERGRAPH HARDWARE TECHNOLOGIES CO., LAS VEGAS, N

8328 Change in the person/name/address of the agent

Representative=s name: SPARING E ROEHL E HENSELER, 40237 DUESSELDORF

8363 Opposition against the patent
8310 Action for declaration of annulment
8313 Request for invalidation rejected/withdrawn