DE3801361A1 - Verfahren und einrichtung zum detektieren und fuer die spezialbehandlung von memory-mapped eingabe/ausgabereferenzen in einem pipelinemikroprozessor - Google Patents
Verfahren und einrichtung zum detektieren und fuer die spezialbehandlung von memory-mapped eingabe/ausgabereferenzen in einem pipelinemikroprozessorInfo
- Publication number
- DE3801361A1 DE3801361A1 DE3801361A DE3801361A DE3801361A1 DE 3801361 A1 DE3801361 A1 DE 3801361A1 DE 3801361 A DE3801361 A DE 3801361A DE 3801361 A DE3801361 A DE 3801361A DE 3801361 A1 DE3801361 A1 DE 3801361A1
- Authority
- DE
- Germany
- Prior art keywords
- read
- instruction
- signal
- cpu
- bus
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Description
Die Erfindung betrifft Datenverarbeitungssysteme und insbesondere
das Detektieren und die Spezialbehandlung von als
Speicher abgebildeten Eingabe/Ausgabereferenzen ("memory-
mapped I/O-Referenzen") in einem Pipelinemikroprozessor.
Bei der herkömmlichen Architektur digitaler Datenverarbeitungssysteme
erfolgt der Zugriff zu peripheren Geräten,
beispielsweise einem Modem, Drucker oder einer Anzeigeeinrichtung,
mittels einer Technik, die als "memory-mapped Input/
Output (I/O)" bezeichnet wird. Gemäß dieser Technik
werden von der Zentraleinheit (CPU) Steuerregister innerhalb
des Peripheriegerätes durch Ausführung der gleichen
Befehle wie für das Lesen und Beschreiben gewöhnlicher
Speicherplätze gelesen und geschrieben. Allerdings sind dem
Lesen und Beschreiben gewisser Peripheriegeräte spezielle
Charakteristiken assoziiert, die sich von denen der Lese-
und Schreibvorgänge im Speicher unterscheiden.
So kann das Lesen eines Steuerregisters in einem peripheren
Gerät den bei der nächsten Referenz des gleichen Registers
oder eines anderen Registers im gleichen Gerät gelesenen Wert
ändern. Auf diese Weise arbeiten serielle Kommunikationskontroller
und First-In-First-Out-Speicher.
In ähnlicher Weise kann durch das Einschreiben in ein Steuerregister
eines peripheren Gerätes der aus einem anderen Register
abgelesene Wert geändert werden. So muß zum Beispiel bei der
Unterbrechungssteuereinheit NS32202 der National Semiconductor
Corporation zunächst der Zählerwert durch Schreiben in
ein anderes Steuerregister gehalten oder eingefroren werden,
ehe der Zählerwert des NS32202 gelesen werden darf.
Diese besonderen Charakteristiken peripherer Geräte verursachen
keine ernsthaften Probleme bei Datenverarbeitungssystemen,
die, wie die gegenwärtig verfügbaren Mikroprozessoren,
so ausgelegt sind, daß sie Anweisungen oder Befehle sequentiell
ausführen.
Komplexere Hochleistungssysteme führen jedoch gleichzeitig
eine Reihe von Befehlen in einer "Pipeline" aus. Bei Systemen
dieser Art müssen spezielle Behandlungsprozeduren bei I/O-
Referenzen beachtet werden, damit sichergestellt ist, daß die
System-Programme korrekt ausgeführt werden. Beispielsweise
kann ein Pipelinecomputer Lesen und Schreiben an verschiedenen
Speicherplätzen in beliebiger Reihenfolge durchführen;
aber Referenzen auf periphere Geräte müssen in der durch das
auszuführende Programm implizierten speziellen Reihenfolge
vorgenommen werden.
Für Datenverarbeitungssysteme sind Architekturen, beispielsweise
die der "Spectrum" Rechnerfamilie von Hewlett-Packard
oder des VAX-11/750-Rechners der Digital Equipment Corporation,
entwickelt werden, welche Pipelinekonstruktionen schaffen,
die memory-mapped I/O-Referenzen detektieren und eine Spezialbehandlung
anwenden. Bei diesen Systemen ist ein Teil des
Speicheradressenraums des Rechners speziell für I/O reserviert,
wodurch die Anordnung peripherer Geräte auf einen festen
Adressenbereich beschränkt ist.
Während die Frage der I/O-Referenzen bei der Architektur von
Minicomputern angesprochen wurde, ist bei gegenwärtig verfügbaren
Mikroprozessorarchitekturen kein dezidierter Speicheradressenraum
für I/O vorgesehen oder auf irgendeine andere
Weise für das Detektieren von memory-mapped I/O-Referenzen gesorgt.
Infolgedessen ist es nötig, eine Architektur zur Unterstützung
von memory-mapped I/O in Hochleistungs-Pipeline-Mikroprozessorkonstruktionen
zu schaffen.
Dabei ist es jedoch nicht annehmbar, daß sich die Mikroprozessorarchitektur
allein auf das oben beschriebene Verfahren
des Reservierens eines Teils des Speicheradressenraums
für I/O verläßt, denn dann wäre der Mikroprozessor
nicht mit bereits entwickelten Systemen kompatibel, bei denen
Peripheriegeräte an beliebigen Stellen angeschlossen sind.
Aufgabe der Erfindung ist es, eine Mikroprozessorarchtitektur
zu schaffen, die ein Verfahren zum Detektieren und Behandeln
von memory-mapped I/O-Referenzen aufweist und dabei
die Anordnung peripherer Geräte an beliebigen Adressen erlaubt.
Aufgabe der Erfindung ist es auch, ein Verfahren zum Detektieren
und Behandeln von memory-mapped I/O-Referenzen zu schaffen,
welches an einem beliebigen Rechner oder Mikroprozessor anwendbar
ist, der eine Pipelinearchitektur benutzt.
Die der Erfindung zugrundeliegende Aufgabe wird durch die
Schaffung eines Mikroprozessors gelöst, der ein neuartiges
Verfahren zur Behandlung von memory-mapped I/O unterstützt.
Das Verfahren gemäß der Erfindung benutzt zwei Signale auf
dem externen Interface des Mikroprozessors. Wenn der Mikroprozessor
einen Lese-Buszyklus generiert, aktiviert er außerdem
ein I/O-Inhibit-Ausgangssignal, wenn die eine oder andere
der beiden folgenden Anforderungen nicht erfüllt ist: Zunächst
kann das Lesen eines peripheren Ports den bei der nächsten
Referenz auf den gleichen Port gelesenen Wert ändern, eine
Eigenschaft, die als "destruktives Lesen" bezeichnet wird.
Da es sich bei dem hier beschriebenen Mikroprozesor um einen
Pipelineprozessor handelt, kann dieser die Source-(Quelle-)
Operanden für einen Befehl bereits lesen, während der vorhergehende
Befehl noch ausgeführt wird. Da der vorhergehende
Befehl einen Trap verursachen kann, eine Unterbrechung erkannt
werden kann oder der Kontrollfluß anderweitig geändert
werden kann, ist es in erster Linie nötig, daß das destruktive
Lesen von Source-Operanden vor dem Durchführen eines
Befehls vermieden wird. Zweitens kann durch das Lesen eines
peripheren Ports der von einem anderen peripheren Port gelesene
Wert geändert werden, eine Eigenschaft, die als "Side-
effect des Schreibens" bezeichnet wird. Wegen der Pipelinearchitektur
kann der Mikroprozessor Source-Operanden für einen
Befehl lesen, ehe er die Ergebnisse vorhergehender Befehle
schreibt, sofen nicht die Adressen eine gegenseitige Abhängigkeit
zwischen Lese- und Schreibreferenzen anzeigen.
Ein zweites Erfordernis besteht deshalb darin, daß Lese-
und Schreibreferenzen an periphere Geräte, die Schreiben-
Side-effects haben, in der Reihenfolge auftreten müssen, in
der Instruktionen ausgeführt werden.
Das I/O-Inhibit-Ausgangssignal zeigt an, daß der laufende
Buszyklus ignoriert werden soll, wenn ein Peripheriegerät
adressiert wird.
Außerdem wird ein I/O-Decode-Eingangssignal dann aktiviert,
wenn ein peripheres Gerät referenziert wird, welches Ports
mit destruktivem Lesen oder Schreiben-Side-effects implementiert.
Das I/O-Decode-Eingangssignal zeigt dem Mikroprozessor
an, daß vom laufenden Buszyklus ein peripheres Gerät adressiert
wird.
Wenn der Mikroprozessor feststellt, daß sowohl das I/O-Decode-
Eingangssignal als auch das I/O-Inhibit-Ausgangssignal aktiv
ist, verwirft er die während des Buszyklus gelesenen Daten
und serialisiert die Ausführung von Instruktionen. Dann generiert
der Mikroprozessor erneut den Lese-Buszyklus, wobei
diesmal die beiden Erfordernisse für I/O und folglich zum
Steuern des I/O-Inhibit-Ausgangssignals auf inaktiv erfüllt
sind.
Im folgenden ist die Erfindung mit weiteren vorteilhaften
Einzelheiten anhand eines schematisch dargestellten Ausführungsbeispiels
näher erläutert. In den Zeichnungen zeigt
Fig. 1 ein Blockschema, das allgemein eine Mikroprozessorarchitektur
illustriert, in der ein Verfahren zum
Detektieren und zur Spezialbehandlung von memory-
mapped I/O gemäß der Erfindung implementiert ist,
Fig. 2 eine schematische Illustration der Interfacesignale
des hier beschriebenen Mikroprozessors,
Fig. 3 ein Blockschaltbild als Illustration der hauptsächlichen
Funktionseinheiten und der Busverbindungen des
hier beschriebenen Mikroprozessors,
Fig. 4 ein Blockschaltbild als Illustration der Struktur
eines Instruktionscaches des hier bechriebenen
Mikroprozessors,
Fig. 5 ein Blockschaltbild als Illustration der Struktur
eines Datencaches des hier beschriebenen Mikroprozessors,
Fig. 6 ein Zeitdiagramm als Illustration der Zeitfolge
für den Zugriff zum Datencache des hier beschriebenen
Mikroprozessors,
Fig. 7 ein Zeitdiagramm als Illustration der Beziehungen
zwischen CLK-Eingabe- und BUSCLK-Ausgabesignalen
des hier beschriebenen Mikroprozessors,
Fig. 8 ein Zeitdiagramm als Illustration des Lese-Grundzyklus
des hier beschriebenen Mikroprozessors,
Fig. 9 ein Zeitdiagramm als Illustration des Schreibgrundzyklus
des hier beschriebenen Mikroprozessors,
Fig. 10 ein Zeitdiagramm als Illustration eines Lesezyklus,
der mit zwei Wartezyklen verlängert ist,
Fig. 11 ein Zeitdiagramm zur Erläuterung eines Burst-Lesezyklus
mit drei Transfers, der mit dem hier beschriebenen
Mikroprozessor terminiert wird,
Fig. 12 ein Zeitdiagramm als Illustration eines Burst-Lesezyklus,
der mit dem hier beschriebenen Mikroprozessor
terminiert wird und zwei Transfers hat, von
denen der zweite Transfer um einen Wartezustand
verlängert ist,
Fig. 13 ein Schema als Illustration der allgemeinen Struktur
der vierstufigen Instruktions-Pipeline des hier
beschriebenen Mikroprozessors,
Fig. 14 ein Zeitdiagramm als Illustration einer Pipelinezeitsteuerung
für einen internen Datencache-Treffer,
Fig. 15 ein Zeitdiagramm als Illustration einer Pipelinezeitsteuerung
für einen internen Datencache-Fehltreffer,
Fig. 16 ein Zeitdiagramm als Illustration der Wirkung eines
Adressen-Register-Interlock bei der Instruktionspipelinezeitsteuerung,
Fig. 17 ein Zeitdiagramm als Illustration der Auswirkung der
korrekten Vorhersage eines Verzweigungsbefehls, der
beim Betrieb des hier beschriebenen Mikroprozessors
vorgenommen werden soll,
Fig. 18 ein Zeitdiagramm als Illustration der Auswirkung der
unrichtigen Vorhersage der Auflösung eines Verzweigungsbefehls
beim Betrieb des hier beschriebenen Mikroprozessors.
Fig. 1 zeigt die allgemeine Architektur eines Mikroprozessors
(CPU) 10, der ein Verfahren zum Detektieren und zur Behandlung
von memory-mapped Input/Output (I/O)-Referenzen in einer Pipelinearchitektur
implementiert, wobei die Flexibilität für den
Anschluß von Peripheriegeräten an beliebigen Stellen erhalten
ist.
Die Zentraleinheit (CPU) 10 initiiert Buszyklen zur Kommunikation
mit einem externen Speicher und sonstigen Geräten im
Computercluster, um Instruktionen oder Befehle abzurufen, Daten
zu lesen und zu schreiben, Gleitpunktoperationen durchzuführen
und auf Ausnahmeanforderungen anzusprechen.
Zu der CPU 10 gehört eine vierstufige Instruktions-Pipeline
12, die bei 20 MHz bis zu 10 MIPS (Millionen Instruktionen pro
Sekunde) ausführen kann. Auf dem gleichen Chip wie die Pipeline
12 sind weiterhin drei Speicherpuffer integriert, die der
massiven Nachfrage der Pipeline 12 nach Befehlen und Daten gewachsen
sind. Zu den Speicherpuffern gehört ein 512-Byte
Instruktionscache 14, ein 1024-Byte Datencache 16 sowie ein
Übersetzungspuffer mit 64 Eingängen. der innerhalb einer Memory-
Management-Einheit (MMU) 18 enthalten ist. Die Hauptfunktionen
der MMU 18 bestehen in der Arbitrage von Anforderungen an Speicherreferenzen
und im Übersetzen von virtuellen Adressen in
physikalische Adressen. Buszyklen für externe Referenzen werden
von einer integrierten Bus-Interface-Einheit (BIU) 20 gesteuert.
Durch die Anordnung der Cache- und Speicher-Management-Funktionen
auf dem gleichen Chip wie die Instruktions-Pipeline 12 wird ein
ausgezeichnetes Kosten/Leistungsvehältnis durch verbesserte
Speicherzugriffszeit und -bandbreite bei allen Anwendungsfällen
erzielt.
Außerdem ist die CPU 10 mit verfügbaren peripheren Geräten,
beispielsweise der Interrupt-Control-Einheit (ICU) 24 (zum
Beispiel NS32202) kompatibel. Da das Interface zwischen der
ICU 24 und der CPU 10 vollkommen asynchron ist, kann die ICU 24
mit niedrigeren Frequenzen als die CPU 10 betrieben werden.
Die CPU 10 enthält ihren eigenen Taktgenerator. Deshalb ist
keine Zeitsteuerungseinheit nötig.
Ferner stützt die CPU 10 sowohl einen externen Cachespeicher
25 als auch einen "Busbeobachter" 26, der dazu beiträgt,
die Datenkohärenz im Instruktionscache 14 und Datencache
16 aufrechtzuerhalten.
Die CPU 10 hat, wie Fig. 2 zeigt, 114 Interfacesignale für
die Buszeitsteuerung und Kontrolle, Cachekontrolle, Ausnahmeanforderungen
und sonstige Funktionen. In der nachfolgenden
Liste sind die Interfacesignalfunktionen der CPU 10 zusammengefaßt.
Burst Acknowledge (Burstbestätigung)
(Aktiv Niedrig).
Wenn als Antwort auf eine Burstanforderung aktiv, zeigt dies an, daß der Speicher Burstzyklen unterstützt.
Wenn als Antwort auf eine Burstanforderung aktiv, zeigt dies an, daß der Speicher Burstzyklen unterstützt.
Bus Error (Busfehler) (Aktiv Niedrig).
Zeigt der CPU 10 an, daß ein Fehler während des laufenden Buszyklus detektiert wurde.
Zeigt der CPU 10 an, daß ein Fehler während des laufenden Buszyklus detektiert wurde.
Bus Retry (Buswiederholung) (Aktiv Niedrig).
Zeit an, daß CPU 10 den laufenden Buszyklus erneut durchführen muß.
Zeit an, daß CPU 10 den laufenden Buszyklus erneut durchführen muß.
BW0-BW1Bus Width (Busbreite) (zwei codierte Leitungen).
Diese Leitungen definieren die Busbreite (8, 16 oder 32 Bits) für jeden Datentransfer, wie aus Tabelle 1 hervorgeht. Tabelle 1
Diese Leitungen definieren die Busbreite (8, 16 oder 32 Bits) für jeden Datentransfer, wie aus Tabelle 1 hervorgeht. Tabelle 1
CIA0-CIA6Cache Invalidation Address (Cacheinvalidationsadresse)
(7 codierte Leitungen).
Die Cacheinvalidationsadresse wird auf dem CIA-Bus präsentiert. Tabelle 2 zeigt die CIA-Leitungen, die für jeden der internen Caches der CPU 10 relevant sind. Tabelle 2 CIA (0 : 4) Adresse im DC und IC (Setzen)
CIA (5 : 6) reserviert
Die Cacheinvalidationsadresse wird auf dem CIA-Bus präsentiert. Tabelle 2 zeigt die CIA-Leitungen, die für jeden der internen Caches der CPU 10 relevant sind. Tabelle 2 CIA (0 : 4) Adresse im DC und IC (Setzen)
CIA (5 : 6) reserviert
CIICache Inhibit In (Cache Sperren Ein)
(Aktiv Hoch).
Zeigt der CPU 10 an, daß die Speicherreferenz des laufenden Buszyklus nicht cachefähig ist. Cache Invalidation Enable (Cacheinvalidationsaktivierung).
Eingabe, die festlegt, ob die externen Cacheinvalidationsoptionen oder die Testmodusoperation gewählt wurde. CLKClock (Takt).
Der zur Ableitung der gesamten Zeitsteuerung der CPU 10 benutzte Eingabetakt. Debug Trap Request (Fehlerbeseitigung-Trap-Anforderung ) (fallende Flanke: aktivieren).
Übergang von hoch zu niedrig bei diesem Signal verursacht Trap (DBG). Hold Request (Halte-Anforderung) (Aktiv Niedrig).
Fordert die CPU 10 auf, den Bus für DMA- oder Multiprozessorzwecke freizugeben. Interrupt (Unterbrechen) (Aktiv Niedrig).
Maskierbare Unterbrechungsanforderung. Invalidate Set (Satz Invalidieren) (Aktiv Niedrig).
Wenn niedrig, wird nur ein Satz in den Caches auf dem Chip invalidiert; wenn hoch, wird das gesamte Cache invalidiert. Invalidate Data Cache (Datencache Invalidieren) (Aktiv Niedrig).
Wenn niedrig, erfolgt ein Invalidieren im Datencache. Invalidate Instruction Cache (Instruktionscache Invalidieren) (Aktiv Niedrig).
Wenn niedrig, erfolgt ein Invalidieren im Instruktionscache. I/O-Decode (I/O-Decodieren) (Aktiv Niedrig).
Zeigt der CPU 10 an, daß ein Peripheriegerät vom laufenden Buszyklus adressiert wird. Nonmaskable Interrupt (Nichtmaskierbares Unterbrechen) (aktiviert durch fallende Kante).
Ein Übergang von hoch zu niedrig bei diesem Signal fordert ein nichtmaskierbares Unterbrechen an. RDYReady (Bereit) (Aktiv Hoch).
Wenn dies Signal inaktiv ist, verlängert die CPU 10 den laufenden Buszyklus, um einen langsamen Speicher oder ein langsames Peripheriegerät zu untestützen. Reset (Rücksetzen) (Aktiv Niedrig).
Erzeugt Rücksetzausnahmen zum Initialisieren der CPU 10. Slave Done (Slave erledigt) (Aktiv Niedrig).
Zeigt der CPU 10 an, daß ein Slave-Prozessor die Ausführung eines Befehls beendet hat. Slave Trap (Aktiv Niedrig).
Zeit der CPU 10 an, daß ein Slave-Prozessor beim Ausführen eines Befehls eine Trapbedingung detektiert hat.
Zeigt der CPU 10 an, daß die Speicherreferenz des laufenden Buszyklus nicht cachefähig ist. Cache Invalidation Enable (Cacheinvalidationsaktivierung).
Eingabe, die festlegt, ob die externen Cacheinvalidationsoptionen oder die Testmodusoperation gewählt wurde. CLKClock (Takt).
Der zur Ableitung der gesamten Zeitsteuerung der CPU 10 benutzte Eingabetakt. Debug Trap Request (Fehlerbeseitigung-Trap-Anforderung ) (fallende Flanke: aktivieren).
Übergang von hoch zu niedrig bei diesem Signal verursacht Trap (DBG). Hold Request (Halte-Anforderung) (Aktiv Niedrig).
Fordert die CPU 10 auf, den Bus für DMA- oder Multiprozessorzwecke freizugeben. Interrupt (Unterbrechen) (Aktiv Niedrig).
Maskierbare Unterbrechungsanforderung. Invalidate Set (Satz Invalidieren) (Aktiv Niedrig).
Wenn niedrig, wird nur ein Satz in den Caches auf dem Chip invalidiert; wenn hoch, wird das gesamte Cache invalidiert. Invalidate Data Cache (Datencache Invalidieren) (Aktiv Niedrig).
Wenn niedrig, erfolgt ein Invalidieren im Datencache. Invalidate Instruction Cache (Instruktionscache Invalidieren) (Aktiv Niedrig).
Wenn niedrig, erfolgt ein Invalidieren im Instruktionscache. I/O-Decode (I/O-Decodieren) (Aktiv Niedrig).
Zeigt der CPU 10 an, daß ein Peripheriegerät vom laufenden Buszyklus adressiert wird. Nonmaskable Interrupt (Nichtmaskierbares Unterbrechen) (aktiviert durch fallende Kante).
Ein Übergang von hoch zu niedrig bei diesem Signal fordert ein nichtmaskierbares Unterbrechen an. RDYReady (Bereit) (Aktiv Hoch).
Wenn dies Signal inaktiv ist, verlängert die CPU 10 den laufenden Buszyklus, um einen langsamen Speicher oder ein langsames Peripheriegerät zu untestützen. Reset (Rücksetzen) (Aktiv Niedrig).
Erzeugt Rücksetzausnahmen zum Initialisieren der CPU 10. Slave Done (Slave erledigt) (Aktiv Niedrig).
Zeigt der CPU 10 an, daß ein Slave-Prozessor die Ausführung eines Befehls beendet hat. Slave Trap (Aktiv Niedrig).
Zeit der CPU 10 an, daß ein Slave-Prozessor beim Ausführen eines Befehls eine Trapbedingung detektiert hat.
A0-A31Adress Bus (Adressenbus) (3 Zustände,
32 Leitungen).
Überträgt während eines Buszyklus die 32-Bitadresse. A0 überträgt das am wenigsten signifikante Bit. Adress Strobe (Aktiv Niedrig, 3 Zustände).
Zeigt an, daß ein Buszyklus begonnen hat und auf dem Adressenbus eine gültige Adresse vorhanden ist. -Byte Enables (Byte Aktivierungen) (Aktiv Niedrig, 3 Zustände, 4 Leitungen).
Signale, die einen Transfer auf jedem Byte des Datenbus ermöglichen, wie in Tabelle 3 gezeigt. Tabelle 3
Überträgt während eines Buszyklus die 32-Bitadresse. A0 überträgt das am wenigsten signifikante Bit. Adress Strobe (Aktiv Niedrig, 3 Zustände).
Zeigt an, daß ein Buszyklus begonnen hat und auf dem Adressenbus eine gültige Adresse vorhanden ist. -Byte Enables (Byte Aktivierungen) (Aktiv Niedrig, 3 Zustände, 4 Leitungen).
Signale, die einen Transfer auf jedem Byte des Datenbus ermöglichen, wie in Tabelle 3 gezeigt. Tabelle 3
Begin Memory Transaction (Speichertransaktion
Beginnen) (Aktiv Niedrig,
3 Zustände).Zeigt an, daß der laufende
Buszyklus gültig ist, das heißt, daß
der Buszyklus nicht gelöscht wurde.
Früher im Buszyklus verfügbar als .Break Point (bedingter Stop, Haltepunkt)
(Aktiv Niedrig).
Zeigt an, daß die CPU 10 eine Fehlerbeseitigungsbedingung festgestellt hat.Burst Request (Burst Anfordern) (Aktiv Niedrig, 3 Zustände).
Die CPU 10 auffordert, Burstzyklen durchzuführen. BUSCLKBus Clock (Bustakt). Ausgangstakt für Buszeitsteuerung. CASECCache Section (Cache-Bereich) (3 Zustände).
Für cachefähige Datenlese-Buszyklen; zeigt den Bereich des Datencache 18 auf dem Chip an, in den die Daten gebracht werden. CIOCache Inhibit (Cache Inhibieren) (Aktiv Hoch).
Anzeige durch die CPU 10, daß die Speicherreferenz des laufenden Buszyklus nicht cachefähig ist; gesteuert vom CI-Bit im Tabelleneintrag der zweiten Aufrufebene (level-2 Page Table Entry). Confirm Bus Cycle (Buszyklus Bestätigen) (Aktiv Niedrig, 3 Zustände).
Zeigt an, daß ein mit ADS initiierter Buszyklus gültig ist; das heißt, der Buszyklus ist nicht gelöscht worden. Data Direction In (Datenrichtung Ein) (Aktiv Niedrig, 3 Zustände).
Zeigt die Richtung von Übertragungen auf dem Datenbus an; wenn während eines Buszyklus niedrig, zeigt dies an, daß die CPU 10 Daten liest; wenn während eines Buszyklus hoch, zeigt dies an, daß die CPU 10 Daten schreibt. Hold Acknowledge (Halten Bestätigen) (Aktiv Niedrig).Aktiviert durch die CPU als Antwort auf den 1--Eingang um anzuzeigen, daß die CPU 10 den Bus freigegeben hat. Interlocked Bus Cycle (Verriegelter Buszyklus) (Aktiv Niedrig).
Zeigt an, daß eine Folge von Buszyklen mit Schutzverriegelung in Bearbeitung ist. I/O-Inhibit (I/O-Inhibieren) (Aktiv Niedrig).
Zeigt an, daß der laufende Buszyklus ignoriert werden soll, falls ein Peripheriegerät adressiert ist. Internal Sequential Fetch (Internes sequentielles Abrufen).
Zeigt gemeinsam mit an, daß die beginnende Befehlsausführung sequentiell (ISF=Niedrig) oder nichtsequentiell (=Hoch) ist. Program Flow Status (Programmfluß-Status) (Aktiv Niedrig).
Ein Impuls in diesem Signal zeigt den Beginn der Ausführung für jeden Befehl an. Slave Processor Control (Slave Prozessorsteuerung) (Aktiv Niedrig).
Datenstrobe für Buszyklen des Slave-Prozessors. ST0-ST4Status (Zustand) (5 codierte Leitungen).
Statuscode des Buszyklus; ST0 ist das am wenigsten signifikante Bit. Das Codieren ist in Tabelle 4 gezeigt.
Zeigt an, daß die CPU 10 eine Fehlerbeseitigungsbedingung festgestellt hat.Burst Request (Burst Anfordern) (Aktiv Niedrig, 3 Zustände).
Die CPU 10 auffordert, Burstzyklen durchzuführen. BUSCLKBus Clock (Bustakt). Ausgangstakt für Buszeitsteuerung. CASECCache Section (Cache-Bereich) (3 Zustände).
Für cachefähige Datenlese-Buszyklen; zeigt den Bereich des Datencache 18 auf dem Chip an, in den die Daten gebracht werden. CIOCache Inhibit (Cache Inhibieren) (Aktiv Hoch).
Anzeige durch die CPU 10, daß die Speicherreferenz des laufenden Buszyklus nicht cachefähig ist; gesteuert vom CI-Bit im Tabelleneintrag der zweiten Aufrufebene (level-2 Page Table Entry). Confirm Bus Cycle (Buszyklus Bestätigen) (Aktiv Niedrig, 3 Zustände).
Zeigt an, daß ein mit ADS initiierter Buszyklus gültig ist; das heißt, der Buszyklus ist nicht gelöscht worden. Data Direction In (Datenrichtung Ein) (Aktiv Niedrig, 3 Zustände).
Zeigt die Richtung von Übertragungen auf dem Datenbus an; wenn während eines Buszyklus niedrig, zeigt dies an, daß die CPU 10 Daten liest; wenn während eines Buszyklus hoch, zeigt dies an, daß die CPU 10 Daten schreibt. Hold Acknowledge (Halten Bestätigen) (Aktiv Niedrig).Aktiviert durch die CPU als Antwort auf den 1--Eingang um anzuzeigen, daß die CPU 10 den Bus freigegeben hat. Interlocked Bus Cycle (Verriegelter Buszyklus) (Aktiv Niedrig).
Zeigt an, daß eine Folge von Buszyklen mit Schutzverriegelung in Bearbeitung ist. I/O-Inhibit (I/O-Inhibieren) (Aktiv Niedrig).
Zeigt an, daß der laufende Buszyklus ignoriert werden soll, falls ein Peripheriegerät adressiert ist. Internal Sequential Fetch (Internes sequentielles Abrufen).
Zeigt gemeinsam mit an, daß die beginnende Befehlsausführung sequentiell (ISF=Niedrig) oder nichtsequentiell (=Hoch) ist. Program Flow Status (Programmfluß-Status) (Aktiv Niedrig).
Ein Impuls in diesem Signal zeigt den Beginn der Ausführung für jeden Befehl an. Slave Processor Control (Slave Prozessorsteuerung) (Aktiv Niedrig).
Datenstrobe für Buszyklen des Slave-Prozessors. ST0-ST4Status (Zustand) (5 codierte Leitungen).
Statuscode des Buszyklus; ST0 ist das am wenigsten signifikante Bit. Das Codieren ist in Tabelle 4 gezeigt.
U/User/Supervisor (Benutzer/Überwacher)
(3 Zustände).
Gibt den Benutzermodus (U/=Hoch) oder Überwachermodus (U/=Niedrig) an.
Gibt den Benutzermodus (U/=Hoch) oder Überwachermodus (U/=Niedrig) an.
D0-D31Data Bus (Datenbus) (3 Zustände, 32 Leitungen).
8, 16 beziehungsweise 32 Daten Bits werden während eines Buszyklus übertragen; D0 überträgt das am wenigsten signifikante Bit.
8, 16 beziehungsweise 32 Daten Bits werden während eines Buszyklus übertragen; D0 überträgt das am wenigsten signifikante Bit.
Wie aus Fig. 3 hervorgeht, ist die Zentraleinheit (CPU) 10
intern in acht Haupt-Funktionseinheiten organisiert, die
parallel arbeiten, um folgende
Operationen zur Ausführung von Befehlen durchzuführen:
Vorabrufen, Decodieren, effektive Adressen berechnen und
Sourceoperanden lesen, Ergebnisse errechnen und in Register
einspeichern, Ergebnisse in Speicher einspeichern.
Ein Lader 28 ruft Befehle vorab und decodiert sie für die
Benutzung in einer Adresseneinheit 30 und einer Exekutionseinheit
32. Der Lader 28 überträgt die vom Instruktionscache
14 auf dem IBUS-Bus empfangenen Befehle in eine 8-Byte
Befehlswarteschlange. Der Lader 28 kann ein Befehlsfeld in
jedem Zyklus extrahieren, wobei ein "Feld" entweder einen
Opcode (1 bis 3 Bytes einschließlich Adressiermodusspezifizierer),
einen Versatz- oder einen Direktwert bedeutet. Der Opcode
wird vom Lader 28 decodiert, um die ursprüngliche Mikrocodeadresse
zu erzeugen, die auf dem LADR-Bus an die Exekutionseinheit
32 weitergeleitet wird. Die decodierten allgemeinen
Adressiermodi werden auf dem ADMS-Bus an die Adresseneinheit
30 gegeben. Versatzwerte gelangen über den
DISP-Bus zur Adresseneinheit 30. Direktwerte stehen auf dem
GCBUS-Bus zur Verfügung.
In der Adresseneinheit 30 werden effektive Adressen unter
Verwendung eines dedizierten 32-Bitaddierers berechnet und
Sourceoperanden für die Exekutionseinheit 32 gelesen.
Die Adresseneinheit 30 steuert einen Port von einer
Registerdatei 34 zum GCBUS, über den sie Basis- und Indexwerte
an den Adressenaddierer und Datenwerte an die Exekutionseinheit
32 überträgt. Effektive Adressen für Operandenreferenzen
werden an die MMU 18 und das Datencache 16
über den GVA-Bus übertragen, nämlich dem Bus für virtuelle
Adressen.
Zur Exekutionseinheit 32 gehört der Datenpfad und die mikrocodierte
Steuerung zum Ausführen von Befehlen und Verarbeiten
von Ausnahmen. Der Datenpfad weist eine 32-Bit
Arithmetik-Logik-Einheit (ALU), einen 32-Bit Barrelshifter,
einen 8-Bit Prioritätscodierer sowie eine Anzahl von Zählern
auf. In die Exekutionseinheit 32 eingeschlossene Hardware
für Sonderzwecke unterstützt Multiplikation, wobei
pro Zyklus ein Bit zurückgegeben wird unter Optimierung für
Multiplikatoren mit kleinen Absolutwerten.
Die Exekutionseinheit 32 steuert einen Port zur Registerdatei
34 vom GNA-Bus, auf dem sie Ergebnisse speichert.
Der GNA-Bus wird von der Exekutionseinheit 32 auch zum Lesen
von Werten dedizierter Register, beispielsweise der
Konfigurations- und Unterbrechungsbasisregister benutzt,
die in der Registerdatei 34 enthalten sind. Ein Datenpuffer
mit zwei Eingängen ermöglicht es der Exekutionseinheit 32,
die Ausführung eines Befehls mit der Speicherung von Ergebnissen
im Speicher für frühere Befehle überlappt durchzuführen.
Der GVA-Bus wird von der Exekutionseinheit 32 zum
Durchführen von Speicherreferenzen für komplexe Instruktionen
benutzt (zum Beispiel Stringoperationen) sowie für Ausnahmebearbeitung.
Die Registerdatei 34 hat Dualports und erlaubt damit den
Lesezugriff durch die Adresseneinheit 30 über die GCBUS sowie
den Lese/Schreib-Zugriff durch die Exekutionseinheit 32
über den GNA-Bus. Die Registerdatei 34 enthält die Register
für Allgemeinzwecke, dedizierte Register sowie Programmzählerwerte
für die Adresseneinheit 30 und die Exekutionseinheit
32.
Die MMU 18 ist mit den Speichermanagementfunktionen der CPU
10 kompatibel. Anforderungen an die MMU 18 für Speicherreferenzen
kommen vom Instruktionscache 14, von der Adresseneinheit
30 sowie von der Exekutionseinheit 32. Die MMU 18
entscheidet über die Anforderungen (arbitrage) und gewährt Zugriff
zur Übertragung einer virtuellen Adresse auf dem GVA-Bus. Die
MMU 18 übersetzt die auf dem GVA-Bus empfangene virtuelle
Adresse in die entsprechende physikalische Adresse und benutzt
dabei ihren internen Übersetzungspuffer. Die physikalische
Adresse wird von der MMU 18 über den MPA-Bus entweder
an das Instruktionscache 14 oder das Datencache 16 übertragen,
je nachdem, ob es sich um eine Befehls- oder eine Datenreferenz
handelt. Für einen externen Buszyklus wird die physikalische
Adresse auch an die BIU 20 übertragen.
Die BIU 20 steuert die Buszyklen für Referenzen von dem
Instruktionscache 14, der Adresseneinheit 30 und der Exekutionseinheit
32. Für externe Referenzen enthält die BIU 20
einen 3-Eingang Puffer. So kann die BIU 20 beispielsweise
einen Buszyklus für eine Befehlsabrufung durchführen, während
sie die Informationen für einen weiteren Buszyklus zum Schreiben
in den Speicher hält und gleichzeitig die nächsten gelesenen
Daten aufnimmt.
Das in Fig. 4 gezeigte Instruktionscache 14 speichert 512
Bytes in einer Direkt-Abbild-Organisation. Die Bits 4 bis
einschließlich 8 einer referenzierten Befehlsadresse wählen
einen von 32 Sätzen aus. Jeder Satz enthält 16 Bytes, also
vier Doppelwörter, Code und ein Log, das Adressenkennzeichen
hält, welche die 23 signifikantesten Bits der physikalischen
Adresse für die in diesem Satz gespeicherten Orte aufweist.
Jedem Doppelwort ist ein Validierungs-Bit zugeordnet.
Das Instruktionscache 14 enthält auch einen 16-Byte Instruktionspuffer,
von dem es 32 Bits Code pro Zyklus auf
dem IBUS zum Lader 28 übertragen kann. Wenn der gewünschte
Befehl im Instruktionscache 14 aufgefunden wird ("Treffer"),
wird der Instruktionspuffer vom ausgewählten Satz des
Instruktionscaches 14 geladen. Für den Fall eines Fehltreffers
überträgt das Instruktionscache 14 die Adresse
des fehlenden Doppelwortes auf dem GVA-Bus zur MMU 18, die
die Adresse für die BIU 20 übersetzt. Die BIU 20 initiiert
einen Burstlesezyklus, der noch näher beschrieben wird, um
den Instruktionspuffer über den GBDI-Bus vom externen Speicher
zu laden. Dann wird der Instruktionspuffer auf einen
der Sätze des Instruktionscaches 14 geschrieben.
Das Instruktionscache 14 hält Zähler sowohl für die virtuellen
als auch für die physikalischen Adressen, aus denen
das nächste Doppelwort des Instruktionsstromes vorabgerufen
wird. Wenn das Instruktionscache 14 mit dem Vorabruf von
einem neuen Befehlsstrom beginnen muß, wird die virtuelle
Adresse für den neuen Strom vom Lader 28 auf den JBUS übertragen.
Beim Übergang auf eine neue Aufruf-Seite (page)
überträgt das Instruktionscache 14 die virtuelle Adresse auf
dem GVA-Bus und die MMU 18 und erhält die physikalische
Adresse auf dem MPA-Bus zurück.
Das Instruktionscache 14 unterstützt auch eine Betriebsweise
zum Verrasten seines Inhalts auf feste Orte. Dies
Merkmal wird ermöglicht durch das Setzen eines LIC (Sperrbefehlscache)-
Bits im Konfigurationsregister. Dies ist in
Echtzeitsystemen anwendbar, um zu den kritischsten Routinen
einen raschen Zugriff, auf dem Chip, zu ermöglichen. Das
Instruktionscache 14 kann dadurch aktiviert werden, daß
ein IC (Instruktionscacheaktivierungs)-Bit im Konfigurationsregister
gesetzt wird.
Im Datencache 16 sind 1024 Bytes Daten in einer assoziativen
Zweiwege-Satz-Organisation gespeichert, wie in Fig. 5 gezeigt.
Jeder Satz hat zwei 16 Bytes enthaltende Einträge
und zwei Identifizierungskennzeichen, welche die 23 signifikantesten
Bits der physikalischen Adresse für die in den
beiden Einträgen gespeicherten Orte halten. Jedem Doppelwort
ist ein Validierungs-Bit zugeordnet.
Die Zeitsteuerung zum Zugriff auf das Datencache 16 ist in
Fig. 6 gezeigt. Zunächst werden die virtuellen Adressen-Bits
4 bis einschließlich 8 auf dem GVA-Bus zur Auswahl des
entsprechenden Satzes innerhalb des Datencaches 16 zum Lesen
der beiden Eingänge benutzt. Gleichzeitig übersetzt die
MMU 18 die virtuelle Adresse und überträgt die physikalische
Adresse an das Datencache 16 und die BIU 20 auf den
MPA-Bus. Danach vergleicht das Datencache 16 die beiden
Adressenkennzeichen mit der physikalischen Adresse, während
die BIU 20 einen externen Buszyklus auslöst, um die Daten
aus dem externen Speicher zu lesen. Wenn die Referenz ein
Treffer ist, werden die ausgewählten Daten vom Datencache
16 ausgerichtet und auf dem GDATA-Bus an die Exekutionseinheit
32 übertragen, und die BIU 20 löscht den externen Buszyklus
dadurch, daß sie die BMT- und -Signale nicht
geltend macht. Ist die Referenz ein Fehltreffer, dann führt
die BIU 20 den externen Buszyklus komplett durch und überträgt
Daten vom äußeren Speicher zur Exekutionseinheit 32
und zum Datencache 16, welches dadurch seinen Cacheeingang
aktualisiert. Das Datencache 16 kann für Referenzen, die
treffen, einen Durchsatz von einem Doppelwort pro Zyklus
mit einer Latenz von 1,5 Zyklen aushalten.
Wie das Instruktionscache 14 ist auch das Datencache 16 ein
Durchschreibecache. Im Fall von Speicherschreibreferenzen
prüft das Datencache 16, ob die Referenz ein Treffer ist.
Ist das der Fall, dann wird der Inhalt des Caches aktualisiert.
Bei einem Treffer oder einem Fehltreffer werden die
Daten von der BIU 20 zum externen Speicher durchgeschrieben.
Das Datencache 16 stützt einen Operationsmodus
zum Verrasten seines Inhalts auf feste Orte. Dies wird ermöglicht
durch das Setzen eines LDC (Sperrdatencache)-Bits im
Konfigurationsregister. Dies Merkmal ist in Echtzeitsystemen
verwendbar, um zu den kritischsten Datenorten einen
raschen Zugriff, auf dem Chip, zu ermöglichen.
Das Datencache 16 kann durch Setzen eines DC (Datencacheaktivierungs)-
Bits im Konfigurationsregister aktiviert werden.
Die Zentraleinheit CPU 10 empfängt einen einphasigen Eingangstakt
CLK, dessen Frequenz doppelt so groß ist wie die
der Betriebsrate der CPU 10. Wenn beispielsweise die CPU 10
mit 20 MHz arbeitet, ist die Frequenz des Eingangstaktes 40 MHz.
Die CPU 10 teilt den CLK-Eingang durch zwei, um einen
internen Takt zu erhalten, der aus zwei nichtüberlappenden
Phasen PHI1 und PHI2 besteht. Die PHI1 wird von der CPU 10
auf das BUSCLK-Ausgangssignal gesteuert.
In Fig. 7 ist das Verhältnis zwischen dem CLK-Eingang und
den BUSCLK-Ausgangssignalen dargestellt.
Jede ansteigende Flanke des BUSCLK-Ausgangssignals definiert,
wie Fig. 8 zeigt, einen Übergang im Zeitsteuerzustand ("T-
Zustand") der CPU 10. Buszyklen treten während einer Folge
von T-Zuständen auf, die mit T1, T2 und T2B in den zugehörigen
Zeitdiagrammen bezeichnet sind. Zwischen Buszyklen
können Leerlauf-T-Zustände (Ti) auftreten. Die Phasenbeziehung
zwischen dem BUSCLK-Ausgangssignal und dem CLK-Eingangssignal
kann beim Rückstellen hergestellt werden.
Die Bus-Grundzyklen, die die CPU 10 zum Lesen und Schreiben
in einen externen Hauptspeicher und periphere Geräte ausführt,
treten in zwei Zyklen des Bustaktes auf, die mit T1
und T2 bezeichnet sind. Diese Bus-Grundzyklen können aus
zwei Gründen über zwei Taktzyklen hinaus verlängert werden.
Zunächst können zusätzliche T2-Zyklen hinzugefügt werden,
um auf langsame Speicher und Peripheriegeräte zu warten.
Zweitens können beim Lesen aus einem externen Speicher Burstzyklen
(die mit "T2B" bezeichnet sind) benutzt werden, um
mehrere Doppelwörter von aufeinanderfolgenden Orten zu übertragen.
In Fig. 8 beziehungsweise 9 ist die Zeitsteuerung für die
grundlegenden Lese- und Schreib-Grund-Buszyklen ohne "Warte"-
Zustände dargestellt. Sowohl für den Lese- als auch den
Schreibbuszyklus macht die CPU 10 Address Strobe während
der ersten Hälfte von T1 geltend, was den Beginn des
Buszyklus anzeigt. Ab dem Beginn von T1 bis zur Beendigung
des Buszyklus steuert die CPU 10 den Adressenbus und Steuersignale
an für die Signale ST0-ST4, BE0-BE3, , CIO,
sowie CASEC.
Wenn der Buszyklus nicht gelöscht ist, das heißt, wenn T2
beim nächsten Takt folgt, macht die CPU 10 während T1 das
Signal geltend und macht von der Mitte von T1 bis zur
Beendigung des Buszyklus das Signal geltend, welches
zu dem zuletzt genannten Zeitpunkt negiert wird.
Am Ende von T2 tastet die CPU 10 ab, ob das Signal RDY aktiv
ist, was anzeigt, daß der Buszyklus vollständig durchgeführt
wurde; das bedeutet, daß keine zusätzlichen T2-Zustände
hinzugefügt werden sollten. Auf T2 folgt entweder T1
für den nächsten Buszyklus oder Ti, wenn die CPU 10 keine
Buszyklen durchzuführen hat.
Wie aus Fig. 10 hervorgeht, können die zuvor beschriebenen
Lese- und Schreib-Grund-Buszyklen verlängert werden, um
längere Zugriffszeiten zu unterstützen. Wie schon gesagt,
tastet die CPU 10 am Ende jedes T2-Zustandes RDY ab. Ist
RDY inaktiv, dann wird der Buszyklus durch Wiederholen von
T2 um einen weiteren Takt verlängert. Die zusätzlichen T2-
Zustände nach dem ersten werden als "Warte-Zustände" bezeichnet.
Fig. 10 zeigt die Verlängerung eines Lesebuszyklus
unter Hinzufügung von zwei Wartezuständen.
Gemäß Fig. 11 können die Lesegrundzyklen auch verlängert
werden, um Burstübertragungen von bis zu vier Doppelwörtern
aus aufeinanderfolgenden Speicherplätzen zu unterstützen.
Während eines Burstlesezyklus wird das anfängliche
Doppelwort während einer Folge von T1- und T2-Zuständen
übertragen, wie bei einem Lesegrundzyklus. Nachfolgende
Doppelwörter werden während "T2B" genannter Zustände
übertragen. Burstzyklen werden nur zum Lesen aus
32 Bit breiten Speichern benutzt.
Die Transferanzahl in einem Burstlesezyklus wird durch
einen "Handshake" zwischen einem -Ausgangssignal und
einem -Eingangssignal während eines T2- oder T2B-Zustandes
kontrolliert um anzuzeigen, daß eine weitere Übertragung
im Anschluß an die laufende Übertragung angefordert wird.
Der Speicher macht das -Signal geltend um anzuzeigen, daß
er eine weitere Übertragung stützen kann. Fig. 11 zeigt
einen Burstlesezyklus von drei Transfers, bei dem die CPU
10 die Folge durch Negieren des -Signals nach dem zweiten
Transfer beendet. In Fig. 12 ist ein Burstzyklus von
zwei Transfers gezeigt, der von dem System beendet wird,
wenn während des zweiten Transfers das -Signal inaktiv
war.
Für jeden Transfer nach dem ersten in der Burstfolge inkrementiert
die CPU 10 die Adressenbits 2 und 3, um das nächste
Doppelwort auszuwählen. Wie in Fig. 12 für den zweiten
Transfer gezeigt, tastet die CPU 10 am Ende jedes T2B-Zustands
RDY ab und dehnt die Zugriffszeit für den Bursttransfer
aus, wenn RDY inaktiv ist.
Die CPU 10 enthält eine Reihe von Mechanismen, um die Kohärenz
zwischen den beiden Caches auf dem Chip, nämlich dem
Instruktionscache 14 und dem Datencache 16 und dem externen
Speicher aufrechtzuerhalten. Diese Techniken sind in der
folgenden Tabelle 5 zusammengefaßt.
Die Kohärenz zwischen den beiden Caches auf dem Chip und
dem externen Speicher kann durch die Anordnung einer in Fig.
1 gezeigten externen Busbeobachtungsschaltung 26 sichergestellt
werden. Diese Schaltung bildet jeweils ein Interface
mit den folgenden Bussen:
- 1. Dem Adressenbus der CPU 10 und dem CASEC-Ausgang, um Informationen darüber zu erhalten, welche der internen Cacheeingänge (Identifizierungskennzeichen) modifiziert sind, und um aktualisierte Kopien interner Cachekennzeichen der CPU 10 aufrechtzuerhalten;
- 2. dem System Bus um festzustellen, welche internen Speicheradressen modifiziert sind; und
- 3. dem Cacheinvalidierungsbus der CPU 10, der aus den Signalen , , und CIA0-CIA6 besteht.
Der Busbeobachter 26 unterhält Kennzeichenkopien der Einträge
des Instruktionscache 14 und des Datencache 16. Wenn
die Adresse eines Speicherschreibzyklus auf dem System Bus
zu einem der Kennzeichen im Busbeobachter 26 paßt, wird vom
Busbeobachter 26 an die CPU 10 über den Cacheinvalidierungsbus
ein Befehl ausgegeben, um den entsprechenden Eintrag
im zugehörigen internen Cache ungültig zu machen. Das
Ungültigmachen des internen Cacheeintrags durch die CPU 10
erfordert nur einen Taktzyklus und stört den laufenden Buszyklus
der CPU 10 nicht. In Datencache 16 werden jeweils
auf einmal 32 Bytes ungültig gemacht, während im Instruktionscache
14 jeweils 16 Bytes auf einmal invalidiert werden.
Um einen Befehl auszuführen, ruft die CPU 10 zunächst denjenigen
Befehl ab, dessen Adresse im Programmzähler enthalten
ist, und führt dann die Operationen für diese spezielle
Anweisung durch. Nach der Erledigung dieser Anweisung wird
der Programmzähler auf eine von zwei Weisen aktualisiert,
um die Adresse des nächsten auszuführenden Befehls zu enthalten:
entweder lädt die laufende Instruktion ausdrücklich
den Programmzähler (beispielsweise JUMP)
oder er wird um die Länge der laufenden Instruktion inkrementiert.
Wie schon gesagt, kann die CPU 10 Operationen überlappt
durchführen, um mehrere Anweisungen gleichzeitig in der
vierstufigen Instruktions-Pipeline 12 auszuführen. Die allgemeine
Struktur der Pipeline 12 geht aus Fig. 13 hervor.
Während die Exekutionseinheit 32 die Ergebnisse für eine
Anweisung berechnet, kann die Adresseneinheit 30 die effektiven
Adressen berechnen und die Sourceoperanden für den
folgenden Befehl lesen, und der Lader 28 kann einen dritten
Befehl decodieren und einen vierten Befehl in seine 8-Byte-
Warteschlange vorabrufen.
Die Auswirkungen der überlappten Ausführung von Befehlen
können sich unter Umständen von denen der streng sequentiellen
Befehlsausführung unterscheiden. Genauer gesagt,
die Reihenfolge der von der CPU 10 vorgenommenen Speicherreferenzen
kann unterschiedlich erscheinen, wie im einzelnen
noch erläutert wird.
Die Zentraleinheit CPU 10 kann während der Ausführung eines
Befehls einige der Sourceoperanden für den folgenden Befehl
aus dem Speicher lesen, ehe sie den Befehl komplett abruft.
Allerdings beendet die CPU 10 immer das Abrufen eines Befehls
und das Lesen der Sourceoperanden desselben, ehe sie
dessen Ergebnisse schreibt. Wenn mehr als ein Sourceoperand
aus dem Speicher gelesen werden muß, um einen Befehl auszuführen,
können die Operanden in beliebiger Reihenfolge gelesen
werden. Ähnlich können, wenn mehr als ein Resultat-
Operand in den Speicher geschrieben wird, um einen Befehl
auszuführen, diese Operanden in beliebiger Reihenfolge geschrieben
werden.
Die CPU 10 beginnt mit dem Abruf eines Befehls erst, wenn
alle vorhergehenden Befehle vollständig abgerufen sind.
Allerdings kann die CPU 10 mit dem Abruf eines Befehls beginnen,
ehe für vorhergehende Befehle alle Sourceoperanden
gelesen und Ergebnisse geschrieben sind.
Die CPU 10 beginnt mit dem Lesen der Sourceoperanden für
einen Befehl erst, nachdem alle vorhergehenden Befehle abgerufen
und ihre Sourceoperanden gelesen worden sind. Der
Sourceoperand für einen Befehl kann gelesen werden, ehe
alle Ergebnisse des vorhergehenden Befehls geschrieben wurden,
es sei denn, daß der Wert des Sourceoperanden von dem noch
nicht geschriebenen Ergebnis abhängt. Die CPU 10 vergleicht
die physikalische Adresse und die Länge des Sourceoperanden
mit denen der noch nicht geschriebenen Ergebnisse und verzögert
das Lesen des Sourceoperanden, bis alle Ergebnisse,
von denen der Sourceoperand abhängt, geschrieben worden sind.
Zusätzlich identifiziert die CPU 10 Sourceoperanden, die
sich in memory-mapped Peripherie-Ports befinden und verzögert
das Lesen solcher Operanden, bis alle vorhergehenden
Ergebnisse, die für memory-mapped Peripherieports bestimmt
sind, geschrieben wurden. Wie noch beschrieben wird, gewährleisten
gemäß der Erfindung besondere Behandlungsverfahren,
daß Lese- und Schreibreferenzen an memory-mapped
I/O-Ports immer in der im Programm implizierten Reihenfolge
durchgeführt werden.
Die CPU 10 beginnt mit dem Schreiben der Resultat-Operanden
eines Befehls erst, nachdem die Ergebnisse aller vorhergehenden
Befehle geschrieben worden sind.
Wegen der Überlappung von Operationen für mehrere Befehle
kann die CPU 10 einen Befehl abrufen und dessen Sourceoperanden
lesen, auch wenn der Befehl nicht ausgeführt
wird (beispielsweise, wenn die vorhergehende Anweisung ein
Trap verursacht). Wenn die CPU 10 aber feststellt, daß ein
Sourceoperand für einen Befehl sich in einem memory-mapped
Peripherie-Port befindet, liest sie den Sourceoperanden nur,
wenn der Befehl ausgeführt wird.
Die CPU 10 prüft nicht auf gegenseitige Abhängigkeiten zwischen
dem Abrufen eines Befehls und dem Schreiben von Ergebnissen
voraufgegangener Befehle. Ein selbstmodifizierender
Code muß also besonders behandelt werden, um ausgeführt
zu werden wie beabsichtigt.
Wie schon gesagt, erfordern die Eigenschaften gewisser peripherer
Geräte und die Überlappung der Ausführung von Befehlen
in der Pipeline 12 der CPU 10, daß bei memory-mapped
I/O-Referenzen eine Spezialbehandlung angewandt wird. I/O-
Referenzen unterscheiden sich von Speicherreferenzen auf
zweierlei wichtige Weise, was folgende Erfordernisse aufzwingt:
1. Durch das Lesen aus einem Peripherie-Port kann der
bei der nächsten Referenz auf den gleichen Port gelesene
Wert geändert werden, eine Eigenschaft, die als "destruktives
Lesen" bezeichnet wird. In dieser Weise arbeiten
zum Beispiel serielle Steuergeräte für die Datenübertragung
und FIFO-Speicher. Wie schon erwähnt, kann die CPU 10 die
Sourceoperanden für einen Befehl lesen, während der voraufgegangene
Befehl ausgeführt wird. Da die vorhergehende
Instruktion ein Trap verursachen kann, eine Unterbrechnung
erkannt oder der Kontrollfluß auf andere Weise geändert
werden kann, ist es erforderlich, destruktives Lesen von
Sourceoperanden vor dem Ausführen eines Befehls zu vermeiden.
2. Durch das Einschreiben in einen Peripherie-Port kann
der von einem anderen peripheren Port gelesene Wert geändert
werden, eine Eigenschaft, die als "Side-Effekt des Schreibens"
bezeichnet wird. Ehe zum Beispiel der Zählerwert aus
der ICU 24 gelesen wird, muß er zunächst durch Schreiben in
ein anderes Steuerregister eingefroren oder gehalten werden.
Wie gesagt, kann aber die CPU 10 die Soruceoperanden
für einen Befehl lesen, ehe sie die Ergebnisse vorheriger
Befehle schreibt, es sei denn, daß die Adressen eine
Abhängigkeit zwischen den Lese- und Schreibreferenzen erkennen
lassen. Folglich ist es erforderlich, daß Lese- und
Schreibreferenzen an Peripheriegeräte, die "Side-Effects" beim
Schreiben zeigen, in der gleichen Reihenfolge auftreten, in
der Befehle ausgeführt werden.
Die CPU 10 stützt zwei Methoden der Behandlung von memory-
mapped I/O. Die erste Methode, nämlich das erfindungsgemäße
Verfahren, erfüllt die beiden obengenannten Erfordernisse
und erlegt dem Ort von memory-mapped Peripheriegeräten keinerlei
Einschränkung auf. Das zweite Verfahren erfüllt nur
das Erfordernis nach Side Effects beim Schreiben und
schränkt den Platz von memory-mapped I/O-Geräten ein,
ist jedoch wirkungsvoller für Geräte, die keine Ports für
destruktives Lesen haben.
Das Verfahren gemäß der Erfindung zur Behandlung von memory-
mapped I/O benutzt zwei Signale am Systeminterface.
Wenn die CPU 10 einen Lesebuszyklus erzeugt, aktiviert sie
ein IOINH-Ausgangssignal zum Inhibieren der Eingabe/Ausgabe,
wenn das eine oder andere der obengenannten I/O-Erfordernisse
nicht erfüllt ist. Mit anderen Worten, die CPU
10 aktiviert das IOINH-Signal, wenn das Lesen entweder vor
dem Ausführen des Befehls oder dann erfolgt, wenn das
Schreiben von einem vorhergehenden Befehl ansteht. Ferner
wird ein IODEC-Eingangssignal zur I/O-Decodierung aktiviert,
wenn die Referenz an ein Peripheriegerät geht, das
Ports mit destruktivem Lesen oder "Side Effect" des Schreibens
implementiert. Wenn die CPU 10 feststellt, daß das IOPEC-Eingangssignal
aktiv ist, während auch das IOINH-Ausgangssignal
aktiviert ist, verwirft sie die während des Buszyklus
gelesenen Daten und bringt serialisiert die Ausführung des
Befehls. Wie noch im einzelnen beschrieben wird.
Dann erzeugt die CPU 10 erneut den Lesebuszyklus, wobei
diesmal die Erfordernisse für I/O erfüllt sind und das
IOINH-Ausgangssignal inaktiv gesteuert wird.
Für die zweite Methode der Behandlung von memory-mapped I/O
wird ein dedizierter Bereich eines virtuellen Speichers benutzt.
Die CPU 10 erkennt, daß virtuelle Adressen zwischen
FF000000 (hex) und FFFFFFFF (hex) einschließlich für memory-
mapped I/O bestimmt sind. Während das Schreiben an
einem Platz ansteht, der als memory-mapped I/O erkannt ist,
verzögert die CPU 10 das Lesen von einem Platz, der gleichzeitig
als memory-mapped I/O erkannt ist. Allerdings kann
die CPU von gewöhnlichen Speicherplätzen lesen, das heißt
von denen, deren Adresse kleiner ist als F000000 (hex),
während das Schreiben an einen memory-mapped I/O-Platz ansteht.
Ähnlich kann die CPU 10 von einem memory-mapped I/O-
Platz lesen, während Schreiben an einen gewöhnlichen
Speicherplatz ansteht.
Unter bestimmten Umständen, wenn beispielsweise sowohl das
IODEC-Eingangssignal als auch das IOINH-Ausgangssignal aktiv
ist, serialisiert die CPU 10, wie schon gesagt, die
Ausführung eines Befehls. Serialisierte Ausführung eines
Befehls bedeutet, daß die CPU 10 das Schreiben der Ergebnisse
aller vorhergehenden Befehle in den Speicher beendet
und dann mit dem Abrufen und Ausführen der nächsten
Anweisung beginnt. Wenn also durch das Ausführen eines entsprechenden
Befehls ein neuer Wert in das Programmstatusregister
geladen wird, bestimmt dieser neue Registerwert den
zum Abrufen und Ausführen des nächsten Befehls benutzten
Privilegzustand.
Die Adresseneinheit 30 beziehungsweise die Exekutionseinheit
32 kann Befehle mit einer Spitzenrate von zwei Zyklen
pro Befehl verarbeiten. Der Lader 28 kann Befehle mit einer
Spitzenrate von einem Zyklus pro Befehl verarbeiten, so daß
er typischerweise einen ständigen Vorrat an Befehlen an die
Adresseneinheit 30 und die Exekutionseinheit 32 unterhält.
Der Lader 28 unterbricht den Durchsatz durch die Instruktions-
Pipeline 12 nur, wenn eine Lücke im Befehlsstrom aufgrund
eines Sprungbefehls oder eines Instruktionscache-
Fehltreffers auftritt.
In Fig. 14 ist die Ausführung von zwei Befehlen Speicher-
an-Register mittels der Adresseneinheit 30 und der Exekutionseinheit
32 dargestellt. Die CPU 10 kann eine Ausführungsrate
von zwei Zyklen bei den meisten üblichen Befehlen durchhalten
und zeigt typischerweise nur in folgenden Fällen Verzögerungen:
- 1. Speicherverzögerungen aufgrund von Fehltreffern des Caches und Übersetzungspuffers und nicht ausgerichteten Referenzen;
- 2. Betriebsmittelwettstreit zwischen Stufen der Instruktions- Pipeline 12;
- 3. Verzweigungsbefehl und sonstiges nichtsequentielles Befehlsabrufen;
- 4. komplexe Adressierweise, wie skalierter Index und komplexe Operationen, wie Division.
Fig. 15 zeigt die Auswirkung eines Fehltreffers im Datencache
16 bei der Zeitsteuerung der Pipeline 12. Die Exekutionseinheit
32 wird um zwei Zyklen verzögert, bis die BIU 20
die Buszyklen zum Lesen von Daten abschließt.
Fig. 16 zeigt die Wirkung einer Adressen-Register-Verriegelung
auf die Zeitsteuerung der Pipeline 12. Ein Befehl modifiziert
ein Register, während der nächste Befehl jenes
Register für eine Adressenberechnung benutzt. Die Adresseneinheit
30 wird um drei Zyklen verzögert, bis die Exekutionseinheit
32 die Aktualisierung des Registers abschließt.
Es sei noch erwähnt, daß für den Fall, daß der zweite Befehl
das Register für einen Datenwert statt für eine Adressenkalkulation
benutzt hat (zum Beispiel ADDD, R0, R1),
eine Bypass-Schaltung in der Exekutionseinheit 32 dafür
sorgen würde, eine Verzögerung an die Pipeline 12 zu vermeiden.
Der Lader 28 weist eine Spezialschaltung zur Behandlung
von Verzweigungsbefehlen auf. Wenn ein Verzweigungsbefehl
decodiert wird, berechnet der Lader 28 die Zieladresse und
wählt zwischen dem sequentiellen und dem nichtsequentiellen
Befehlsstrom aus. Die Auswahl beruht auf dem Zustand und der
Richtung des Verzweigungsbefehls. Wenn der Lader 28 vorhersagt,
daß der Verzweigungsbefehl genommen wird, dann wird
die Zieladresse auf dem JBUS ins Instruktionscache 14 transferiert.
Unabhängig davon, ob vom Verzweigungsbefehl vorhergesagt
wird, daß er genommen wird oder nicht, bewahrt der Lader
28 die Adresse des alternativen Befehlsstroms auf.
Später erreicht der Verzweigungsbefehl die Exekutionseinheit
32, wo die Bedingung aufgelöst wird. Die Exekutionseinheit
32 signalisiert dem Lader 28, ob der Verzweigungsbefehl
befolgt wurde oder nicht. Wenn der Verzweigungsbefehl
unrichtigerweise vorhergesagt war, wird die Pipeline 12
gespült; und das Instruktionscache 14 beginnt mit dem Vorabruf
von Befehlen aus dem richtigen Strom.
Fig. 17 zeigt die Auswirkung der richtigen Vorhersage eines
zu befolgenden Verzweigungsbefehls. Beim Decodieren von Befehlen
durch den Lader 28 tritt eine Lücke von zwei Zyklen
auf. Diese Lücke ganz oben an der Pipeline 12 läßt sich oft
schließen, weil ein vollständig decodierter Befehl zwischen
dem Lader 28 und der Adresseneinheit 30 zwischengespeichert
ist und weil weitere Verzögerungen gleichzeitig auf späteren
Stufen in der Pipeline 12 auftreten können.
Fig. 18 zeigt die Auswirkung einer unrichtigen Vorhersage
der Auflösung eines Verzweigungsbefehls. Dabei tritt in der
Exekutionseinheit 32 eine Lücke von vier Zyklen auf.
Claims (5)
1. Datenverarbeitungssystem, in welchem die Befehlsverarbeitung
in Pipeline implementiert ist, gekennzeichnet
durch Einrichtungen zum Detektieren und zur Behandlung von
Eingabe/Ausgabe-Lesereferenzen an periphere Geräte, durch
die ein erstes Signal aktiviert wird um anzuzeigen, daß
das Lesen entweder erfolgte vor dem Ausführen eines Befehls
oder während ein Schreiben für einen vorausgegangenen Befehl
ansteht, und ein zweites Signal aktiviert wird um anzuzeigen,
daß das periphere Gerät Ports entweder mit destruktivem
Lesen oder Schreib-side-effects implementiert, wobei
der laufende Buszyklus ignoriert wird, wenn sowohl das erste
Signal als auch das zweite Signal aktiviert ist.
2. Datenverarbeitungssystem nach Anspruch 1, gekennzeichnet durch eine Einrichtung,
die während des Buszyklus gelesene Daten verwirft
und die Befehlsausführung serialisiert.
3. Datenverarbeitungssystem nach Anspruch 2, gekennzeichnet durch eine
Einrichtung zum Regenerieren des Lesebuszyklus, während
das zweite Signal inaktiv ist, so daß Daten aus dem referenzierten
Peripheriegerät gelesen werden.
4. Verfahren zum Detektieren und zur Behandlung von Eingabe/
Ausgabe-Lesereferenzen an periphere Geräte in einem
Datenverarbeitungssystem, in welchem Pipelinebefehlsverarbeitung
implementiert ist, dadurch gekennzeichnet, daß
- - ein erstes Signal aktiviert wird, wenn das Lesen entweder vor dem Ausführen eines Befehls erfolgte oder während ein Schreiben für einen vorausgegangenen Befehl ansteht;
- - ein zweites Signal aktiviert wird, wenn das referenzierte periphere Gerät Ports entweder mit destruktivem Lesen oder Schreib-side-effects implementiert;
- - der laufende Buszyklus ignoriert wird, wenn sowohl das erste Signal als auch das zweite Signal aktiviert ist.
5. Verfahren zum Detektieren und zur Behandlung von memory-
mapped I/O in einem Pipeline-Datenverarbeitungssystem,
dadurch gekennzeichnet, daß
- (a) in Antwort auf einen von dem Datenverarbeitungssystem erzeugten Lesebuszyklus ein Ausgangssignal erzeugt wird, wenn das Lesen entweder vor dem Ausführen eines Befehls oder dann erfolgt, wenn ein Schreiben für einen vorausgegangenen Befehl ansteht;
- (b) ein Eingangssignal aktiviert wird, wenn die Referenz von der Zentraleinheit an ein peripheres Gerät gerichtet ist, welches entweder destruktives Lesen oder Schreib-side-effects vorweist;
- (c) detektiert wird, wenn sowohl das Eingangssignal als auch das Ausgangssignal aktiv ist;
- (d) während des Buszyklus gelesene Daten verworfen werden;
- (e) die Befehlsausführung serialisiert wird; und
- (f) der Lesebuszyklus regeneriert wird, während die Erfordernisse, daß destruktives Lesen von Sourceoperanden vor dem Ausführen eines Befehls nicht erfolgt und Lese- und Schreibreferenzen an periphere Geräte, die Schreib-side-effects vorweisen, nur in der Reihenfolge auftreten, in der Befehle ausgeführt werden, so daß das Ausgangssignal auf inaktiv gesteuert wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/006,012 US4802085A (en) | 1987-01-22 | 1987-01-22 | Apparatus and method for detecting and handling memory-mapped I/O by a pipelined microprocessor |
Publications (1)
Publication Number | Publication Date |
---|---|
DE3801361A1 true DE3801361A1 (de) | 1988-08-04 |
Family
ID=21718849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3801361A Withdrawn DE3801361A1 (de) | 1987-01-22 | 1988-01-19 | Verfahren und einrichtung zum detektieren und fuer die spezialbehandlung von memory-mapped eingabe/ausgabereferenzen in einem pipelinemikroprozessor |
Country Status (4)
Country | Link |
---|---|
US (1) | US4802085A (de) |
JP (1) | JPS63193253A (de) |
DE (1) | DE3801361A1 (de) |
GB (1) | GB2200484B (de) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1993007571A1 (fr) * | 1991-10-10 | 1993-04-15 | Ion Minca | Structure de reseau pour le traitement parallele des logiciels |
GB2406265A (en) * | 2003-09-23 | 2005-03-30 | Richard Taylor | A buoyant keyring or key fob |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63240650A (ja) * | 1987-03-28 | 1988-10-06 | Toshiba Corp | キヤツシユメモリ装置 |
US5155822A (en) * | 1987-08-13 | 1992-10-13 | Digital Equipment Corporation | High performance graphics workstation |
US5029124A (en) * | 1988-05-17 | 1991-07-02 | Digital Equipment Corporation | Method and apparatus for providing high speed parallel transfer of bursts of data |
US5073969A (en) * | 1988-08-01 | 1991-12-17 | Intel Corporation | Microprocessor bus interface unit which changes scheduled data transfer indications upon sensing change in enable signals before receiving ready signal |
US5101341A (en) * | 1988-08-25 | 1992-03-31 | Edgcore Technology, Inc. | Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO |
US5123097A (en) * | 1989-01-05 | 1992-06-16 | Bull Hn Information Systems Inc. | Apparatus and method for simultaneous execution of a write instruction and a succeeding read instruction in a data processing system with a store through cache strategy |
CA1325288C (en) * | 1989-02-03 | 1993-12-14 | Ricky C. Hetherington | Method and apparatus for controlling the conversion of virtual to physical memory addresses in a digital computer system |
US5060144A (en) * | 1989-03-16 | 1991-10-22 | Unisys Corporation | Locking control with validity status indication for a multi-host processor system that utilizes a record lock processor and a cache memory for each host processor |
US5146582A (en) * | 1989-06-19 | 1992-09-08 | International Business Machines Corp. | Data processing system with means to convert burst operations into memory pipelined operations |
US5185694A (en) * | 1989-06-26 | 1993-02-09 | Motorola, Inc. | Data processing system utilizes block move instruction for burst transferring blocks of data entries where width of data blocks varies |
WO1991003786A1 (en) * | 1989-09-08 | 1991-03-21 | Auspex Systems, Inc. | Enhanced vmebus protocol utilizing pseudosynchronous handshaking and block mode data transfer |
JP2509344B2 (ja) * | 1989-09-19 | 1996-06-19 | 富士通株式会社 | デ―タ処理装置 |
US5253353A (en) * | 1990-01-02 | 1993-10-12 | Digital Equipment Corporation | System and method for efficiently supporting access to I/O devices through large direct-mapped data caches |
EP0440456B1 (de) * | 1990-01-31 | 1997-01-08 | Hewlett-Packard Company | Stossbetrieb für Mikroprozessor mit externem Systemspeicher |
JPH03248244A (ja) * | 1990-02-27 | 1991-11-06 | Toshiba Corp | キャッシュメモリを備えたプロセッサ |
EP0449369B1 (de) * | 1990-03-27 | 1998-07-29 | Koninklijke Philips Electronics N.V. | Datenverarbeitungssystem mit einem leistungsverbessernden Befehlscachespeicher |
US5249286A (en) * | 1990-05-29 | 1993-09-28 | National Semiconductor Corporation | Selectively locking memory locations within a microprocessor's on-chip cache |
US5355469A (en) * | 1990-07-30 | 1994-10-11 | Delphi Data, A Division Of Sparks Industries, Inc. | Method for detecting program errors |
JP2708943B2 (ja) * | 1990-08-08 | 1998-02-04 | 三菱電機株式会社 | キャッシュメモリ制御装置 |
IE860318L (en) * | 1990-10-01 | 1986-08-05 | Digital Equipment Corp | System bus for a multi-cache data processing system |
US5276852A (en) * | 1990-10-01 | 1994-01-04 | Digital Equipment Corporation | Method and apparatus for controlling a processor bus used by multiple processor components during writeback cache transactions |
US5412787A (en) * | 1990-11-21 | 1995-05-02 | Hewlett-Packard Company | Two-level TLB having the second level TLB implemented in cache tag RAMs |
JP2646854B2 (ja) * | 1990-12-18 | 1997-08-27 | 三菱電機株式会社 | マイクロプロセッサ |
GB2256512B (en) * | 1991-06-04 | 1995-03-15 | Intel Corp | Second level cache controller unit and system |
US5392417A (en) * | 1991-06-05 | 1995-02-21 | Intel Corporation | Processor cycle tracking in a controller for two-way set associative cache |
US5319760A (en) * | 1991-06-28 | 1994-06-07 | Digital Equipment Corporation | Translation buffer for virtual machines with address space match |
US5465342A (en) * | 1992-12-22 | 1995-11-07 | International Business Machines Corporation | Dynamically adaptive set associativity for cache memories |
JP3454294B2 (ja) * | 1994-06-20 | 2003-10-06 | インターナショナル・ビジネス・マシーンズ・コーポレーション | マルチプル・バス情報処理システム及びブリッジ回路 |
US5649137A (en) * | 1994-10-20 | 1997-07-15 | Advanced Micro Devices, Inc. | Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency |
US5948912A (en) * | 1995-02-15 | 1999-09-07 | Neurogen Corporation | Certain bridged 4-phenyl-2-aminomethylimidazoles; new dopamine receptor subtype specific ligands |
EP0809641A1 (de) * | 1995-02-15 | 1997-12-03 | Neurogen Corporation | Verbrückte 4-phenyl-2-aminomethylimidazole: neue dopaminrezeptorsubtyp-spezifische liganden |
US5911151A (en) * | 1996-04-10 | 1999-06-08 | Motorola, Inc. | Optimizing block-sized operand movement utilizing standard instructions |
US6336158B1 (en) * | 1998-10-30 | 2002-01-01 | Intel Corporation | Memory based I/O decode arrangement, and system and method using the same |
US6463521B1 (en) * | 1999-06-23 | 2002-10-08 | Sun Microsystems, Inc. | Opcode numbering for meta-data encoding |
US6836828B2 (en) * | 2002-04-03 | 2004-12-28 | Faraday Technology Corp. | Instruction cache apparatus and method capable of increasing a instruction hit rate and improving instruction access efficiency |
US7965771B2 (en) * | 2006-02-27 | 2011-06-21 | Cisco Technology, Inc. | Method and apparatus for immediate display of multicast IPTV over a bandwidth constrained network |
US8218654B2 (en) * | 2006-03-08 | 2012-07-10 | Cisco Technology, Inc. | Method for reducing channel change startup delays for multicast digital video streams |
US8031701B2 (en) | 2006-09-11 | 2011-10-04 | Cisco Technology, Inc. | Retransmission-based stream repair and stream join |
US7873770B2 (en) | 2006-11-13 | 2011-01-18 | Globalfoundries Inc. | Filtering and remapping interrupts |
US7849287B2 (en) | 2006-11-13 | 2010-12-07 | Advanced Micro Devices, Inc. | Efficiently controlling special memory mapped system accesses |
US7937531B2 (en) * | 2007-02-01 | 2011-05-03 | Cisco Technology, Inc. | Regularly occurring write back scheme for cache soft error reduction |
US8769591B2 (en) * | 2007-02-12 | 2014-07-01 | Cisco Technology, Inc. | Fast channel change on a bandwidth constrained network |
US7940644B2 (en) * | 2007-03-14 | 2011-05-10 | Cisco Technology, Inc. | Unified transmission scheme for media stream redundancy |
US20080253369A1 (en) | 2007-04-16 | 2008-10-16 | Cisco Technology, Inc. | Monitoring and correcting upstream packet loss |
US8787153B2 (en) * | 2008-02-10 | 2014-07-22 | Cisco Technology, Inc. | Forward error correction based data recovery with path diversity |
US20110063749A1 (en) * | 2009-09-14 | 2011-03-17 | Tzu-Chen Liu | Dual-port hard-disk storage device |
US9168946B2 (en) * | 2010-03-19 | 2015-10-27 | Javad Gnss, Inc. | Method for generating offset paths for ground vehicles |
US8631212B2 (en) | 2011-09-25 | 2014-01-14 | Advanced Micro Devices, Inc. | Input/output memory management unit with protection mode for preventing memory access by I/O devices |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5440537A (en) * | 1977-09-07 | 1979-03-30 | Hitachi Ltd | Pipeline control system |
US4371927A (en) * | 1977-11-22 | 1983-02-01 | Honeywell Information Systems Inc. | Data processing system programmable pre-read capability |
US4305124A (en) * | 1978-06-09 | 1981-12-08 | Ncr Corporation | Pipelined computer |
JPS5858653A (ja) * | 1981-10-02 | 1983-04-07 | Hitachi Ltd | デ−タ処理装置 |
JPS593774A (ja) * | 1982-06-30 | 1984-01-10 | Fujitsu Ltd | アクセス処理方式 |
US4498136A (en) * | 1982-12-15 | 1985-02-05 | Ibm Corporation | Interrupt processor |
-
1987
- 1987-01-22 US US07/006,012 patent/US4802085A/en not_active Expired - Lifetime
- 1987-12-16 GB GB8729327A patent/GB2200484B/en not_active Expired - Fee Related
-
1988
- 1988-01-19 DE DE3801361A patent/DE3801361A1/de not_active Withdrawn
- 1988-01-21 JP JP63011831A patent/JPS63193253A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1993007571A1 (fr) * | 1991-10-10 | 1993-04-15 | Ion Minca | Structure de reseau pour le traitement parallele des logiciels |
US5465369A (en) * | 1991-10-10 | 1995-11-07 | Minca; Ion | Network structure for parallel software processing |
GB2406265A (en) * | 2003-09-23 | 2005-03-30 | Richard Taylor | A buoyant keyring or key fob |
Also Published As
Publication number | Publication date |
---|---|
GB8729327D0 (en) | 1988-01-27 |
GB2200484B (en) | 1991-06-26 |
GB2200484A (en) | 1988-08-03 |
US4802085A (en) | 1989-01-31 |
JPS63193253A (ja) | 1988-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3801361A1 (de) | Verfahren und einrichtung zum detektieren und fuer die spezialbehandlung von memory-mapped eingabe/ausgabereferenzen in einem pipelinemikroprozessor | |
DE69724771T2 (de) | Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle | |
DE69631778T2 (de) | Flexible implementierung eines systemverwaltungsmodus in einem prozessor | |
DE69929936T2 (de) | Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem | |
DE10296989B4 (de) | Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms | |
DE68929483T2 (de) | Datenprozessor mit einer Befehlseinheit, die einen Cachespeicher und einen ROM aufweist. | |
DE69737423T2 (de) | Verfahren und gerät zum replizieren von datenspeicherung in einem fortgeschrittenen mikroprozessor | |
DE69932066T2 (de) | Mechanismus zur "store-to-load forwarding" | |
DE102010053088A1 (de) | Sammeln und Streuen mehrerer Datenelemente | |
DE112007003801B3 (de) | Vorrichtung mit einer speichereinheit und einer logik zur bereitstellung eines effizienten mechanismus‘ für transaktionalspeicherausführungen in out-of-order-prozessoren | |
DE69332663T2 (de) | Datenprozessor mit einem Cachespeicher | |
DE112005003874B3 (de) | Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung | |
DE69636861T2 (de) | Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern | |
DE112011101364B4 (de) | Fehlerbehebung in Multithread-Code | |
DE69233493T2 (de) | RISC-Prozessor mit erweiterbarer Architektur | |
DE60005860T2 (de) | Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle | |
DE60102017T2 (de) | Räumungsfilter für adressenübersetzungspuffer | |
DE60036960T2 (de) | Unterscheidung von feinkorntranslation | |
DE4335475A1 (de) | Datenverarbeitungseinrichtung mit Cache-Speicher | |
DE4311441C2 (de) | Verfahren zum Betreiben eines Mikroprozessors mit einem externen Anschluß | |
DE60115976T2 (de) | Rechnersystem und Interruptvorgang | |
DE19506435C2 (de) | Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten | |
US5263153A (en) | Monitoring control flow in a microprocessor | |
DE112010004322T5 (de) | Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge | |
DE69908175T2 (de) | Verbesserte befehlsdekodierung durch paralleldekodierungsalgorithmus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8128 | New person/name/address of the agent |
Representative=s name: BLUMBACH, P., DIPL.-ING., 6200 WIESBADEN WESER, W. |
|
8141 | Disposal/no request for examination |