-
HINTERGRUND DER ERFINDUNG
-
1. Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft integrierte Schaltkreise, die eine
Zentralverarbeitungseinheit und eine Anzahl von peripheren Schaltungsfunktionen
enthalten, und insbesondere solche integrierten Schaltkreise, in
denen die Zentralverarbeitungseinheit und die peripheren Schaltungsfunktionen
sowohl untereinander als auch mit externen Schaltungsfunktionen
kommunizieren.
-
2. Beschreibung des Standes
der Technik
-
Aufgrund
des Bedarfs für
eine Abwärtskompatibilität mit älteren Generationen
ist der x86 einer der komplexesten Befehlssatz-Architektur-(CISC)Mikroprozessoren.
Der große
und komplexe i486 weist beispielsweise über 400 Befehle auf, die implementiert
werden müssen,
um die Abwärtskompatibilität mit den x86-Prozessoren
der älteren
Generationen aufrechtzuerhalten. Eine solche Komplexität hat zu
wenig kompatiblen Prozessoren oder Steuereinheiten geführt, die
zur Verwendung in eingebetteten Steueranwendungen geeignet sind,
z. B. einfach in der Konstruktion, klein in der Größe und niedrig
in den Kosten. Folglich wäre
es erwünscht,
einen Prozessor oder eine Steuereinheit zu haben, der bzw. die x86-kompatibel
und dennoch für kostengünstige eingebettete
Steueranwendungen geeignet ist.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Ein
integrierter Schaltkreis gemäß der vorliegenden
Erfindung umfasst mehrere Schaltungen und Funktionen, die mehrere
interne Signalbusse gemäß einem
verteilten Buszugriff und einer Steuerentscheidung gemeinsam nutzen.
Dies sorgt für
das Erzielen einer maximalen Leistung von den Schaltungsfunktionen,
sowohl innerhalb als auch außerhalb
eines solchen integrierten Schaltkreises, auf die am häufigsten
zugegriffen wird, während
dennoch für
das Erzielen einer hohen Leistung von internen und externen Schaltungsfunktionen gesorgt
wird, auf die weniger häufig
zugegriffen wird.
-
Ein
integrierter Schaltkreis (IC) mit mehreren Schaltungsfunktionen
und Signalbussen gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung umfasst drei Signalbusse, einen Satz
von Hauptsteuereinheiten und zwei Sätze von Peripherieschaltungen.
Der erste Signalbus dient zum Übertragen
eines ersten Satzes von Bussignalen innerhalb des IC, der zweite
Signalbus dient zum Übertragen
eines zweiten Satzes von Bussignalen innerhalb des IC und der dritte
Signalbus dient zum Koppeln mit einer externen Schaltung und zum Übertragen
eines dritten Satzes von Bussignalen zwischen dem IC und einer solchen
externen Schaltung. Die Hauptsteuereinheiten sind mit dem ersten
Signalbus gekoppelt und dienen zum selektiven Zugreifen auf den ersten
Signalbus und zum Steuern der Übertragung
des ersten Satzes von Bussignalen. Ein Satz von Peripherieschaltungen
ist mit dem ersten, dem zweiten und dem dritten Signalbus gekoppelt
und dient zum selektiven Kommunizieren mit den Hauptsteuereinheiten über den
ersten Signalbus und den ersten Satz von Bussignalen, zum selektiven
Zugreifen auf den zweiten Signalbus und zum Steuern der Übertragung
des zweiten Satzes von Bussignalen und zum selektiven Zugreifen
auf den dritten Signalbus und zum Steuern der Übertragung des dritten Satzes
von Bussignalen. Der andere Satz von Peripherieschaltungen ist mit
dem zweiten Signalbus gekoppelt und dient zum selektiven Kommunizieren
mit dem ersten Satz von Peripherieschaltungen über den zweiten Signalbus und
den zweiten Satz von Bussignalen.
-
Ein
integrierter Schaltkreis (IC) mit mehreren Schaltungsfunktionen,
die durch mehrere Signalbusse miteinander verbunden sind und diese
gemäß einem
verteilten Buszugriff und einer Steuerentscheidung gemeinsam nutzen,
gemäß einem
weiteren Ausführungsbeispiel
der vorliegenden Erfindung umfasst einen Satz von Signalbussen,
einen Satz von Hauptsteuereinheiten und zwei Sätze von Peripherieschaltungen.
Die Signalbusse dienen zum Übertragen
eines Satzes von Bussignalen. Die Hauptsteuereinheiten sind mit
einer ersten Teilmenge der Signalbusse gekoppelt und dienen zum
Kommunizieren miteinander und dementsprechend zum Feststellen, welcher
von diesen zu einem Hauptbus mit Zugriff auf einen und Steuerung
eines ersten der Signalbusse wird, und dementsprechend zum Steuern
der Übertragung
einer ersten Teilmenge der Bussignale. Ein Satz von Peripherieschaltungen
ist mit der ersten Teilmenge und einer zweiten Teilmenge der Signalbusse
gekoppelt. Diese Peripherieschaltungen dienen zum Kommunizieren
miteinander und dementsprechend zum Feststellen, welche von diesen
mit dem Hauptbus kommuniziert und Zugriff auf einen und die Steuerung
eines zweiten der Signalbusse erlangt, und dementsprechend zum Kommunizieren
mit dem Hauptbus und zum Steuern der Übertragung einer zweiten Teilmenge
der Bussignale. Der andere Satz von Peripherieschaltungen ist mit
einer dritten Teilmenge der Signalbusse gekoppelt. Diese anderen
Peripherieschaltungen dienen zum Kommunizieren miteinander und dementsprechend
zum Feststellen, welche von diesen Zugriff auf einen dritten der
Signalbusse erlangt, und dementsprechend zum Übertragen einer dritten Teilmenge der
Bussignale.
-
Ein
Mikroprozessor, der Befehle zum Verarbeiten von Daten gemäß periodischen
Zyklen eines Mikroprozessor-Systemtakts ausführt, umfasst eine Ausführungsstufe,
eine Decodierstufe und eine Einspeicherstufe. Die Ausführungsstufe
nimmt auf Befehle und Operanden Bezug, die beim Ausführen von
Befehlen verwendet werden, führt
die Befehle aus, um Ergebnisse zu erzeugen, und berechnet Speicheradressen,
die beim Abrufen der Befehle und Operanden aus dem Speicher und
beim Schreiben von Ergebnissen in den Speicher verwendet werden.
Die Decodierstufe ruft Befehle ab, auf die durch die Ausführungsstufe
Bezug genommen wird, decodiert die abgerufenen Befehle in eine Form,
die von der Ausführungsstufe
verwendet werden kann, und liefert die decodierten Befehle zur Ausführungsstufe.
Die Einspeicherstufe schreibt die Ergebnisse in den Speicher an
den Speicheradressen, die von der Ausführungseinheit berechnet werden.
-
In
einem weiteren Ausführungsbeispiel
umfasst ein Mikroprozessor, der Befehle zum Verarbeiten von Daten
gemäß periodischen
Zyklen eines Mikroprozessor-Systemtakts ausführt, eine Ausführungsstufe,
eine Decodierstufe und eine Einspeicherstufe. Die Ausführungsstufe
umfasst eine Ausführungseinheit,
die Mikrocodebefehle und Operanden verwendet, um Rechen- und logische
Operationen durchzuführen,
um Ergebnisse zu erzeugen, und die Speicheradressen berechnet, die
beim Abrufen der Befehle und Operanden und beim Schreiben der Ergebnisse
in den Speicher verwendet werden. Die Ausführungsstufe umfasst ferner
eine Registerdatei, die Operanden speichert, die von der Ausführungseinheit
verwendet werden, und die auf festgelegte Speicherleseadressen reagiert,
indem sie einen Operanden aus einer Registerdatei-Speicherstelle
entsprechend der festgelegten Speicherleseadresse liefert, und die
auf eine festgelegte Speicherschreibadresse reagiert, indem sie
einen Operanden in einer Registerdatei-Speicherstelle entsprechend der festgelegten
Speicherschreibadresse speichert. Die Decodierstufe umfasst eine
Vorabrufeinheit, die Befehle aus dem Speicher abruft, eine Decodiereinheit,
die die abgerufenen Befehle in eine Form decodiert, die von der
Ausführungseinheit
verwendet werden kann, und eine Mikroprogrammsteuerbaustein-Einheit,
die eine Folge von einem oder mehreren Mikrocodebefehlen entsprechend
einem Decodierbefehl liefert. Die Einspeicherstufe umfasst eine Busschnittstelleneinheit,
die auf eine externe Speicherleseadresse reagiert, indem sie entweder
einen Befehl oder einen Operanden entsprechend der externen Speicherleseadresse
aus einem Speicher außerhalb
des Mikroprozessors abruft, und die auf eine externe Speicherschreibadresse
reagiert, indem sie ein Ergebnis entsprechend der externen Speicherschreibadresse
in einem Speicher außerhalb
des Mikroprozessors speichert.
-
Diese
und weitere Merkmale und Vorteile der vorliegenden Erfindung werden
nach Betrachten der folgenden ausführlichen Beschreibung der Erfindung
und der zugehörigen
Zeichnungen verstanden.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist ein Funktionsblockdiagramm eines
integrierten Schaltkreises, der eine Schaltungsarchitektur gemäß der vorliegenden
Erfindung implementiert.
-
2A ist
ein Funktionsblockdiagramm der Architektur eines integrierten Schaltkreises
gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung.
-
2B ist
ein ausführlicheres
Funktionsblockdiagramm der Architektur von 2A, wie
in dem integrierten Schaltkreis von 1 implementiert.
-
3A und 3B stellen
zusammen einen Ablaufplan einer verteilten Entscheidung unter der
Zentralverarbeitungseinheit, der DMA-Steuereinheit, der DRAM-Steuereinheit,
der Busschnittstelleneinheit und der PCMCIA-Steuereinheit von 1 zum Steuern von Transaktionen auf den
Bussen gemäß einem
weiteren Ausführungsbeispiel
der vorliegenden Erfindung dar.
-
4 ist ein Funktionsblockdiagramm der Architekturimplementierung
für die
Zentralverarbeitungseinheit des integrierten Schaltkreises von 1.
-
5 ist
ein Funktionsblockdiagramm der logischen Implementierung für die Zentralverarbeitungseinheit
des integrierten Schaltkreises von 1.
-
6 ist
ein Ablaufdiagramm, das die ALS-Signalwellenform
darstellt.
-
7 ist
ein Ablaufdiagramm, das die Beziehung zwischen der NSF-Anzeige und
den IXSTAT- und IXQUAL-Zustandssignalen darstellt, wenn ein Befehl
springt.
-
8 ist
eine schematische Darstellung der Installation eines Emulatorprozessorchips
als Aufsteckelement über
einem Produktionszielbauelement.
-
9 ist
ein Ablaufdiagramm, das die Deaktivierung eines montierten Prozessors
bei vorhandener ICE darstellt.
-
AUSFÜHRLICHE
BESCHREIBUNG DER ERFINDUNG
-
Mit
Bezug auf 1 enthält ein IC 10, in dem
die vorliegende Erfindung implementiert wurde, eine Anzahl von in
diesen integrierten Funktionen, einschließlich einer Zentralverarbeitungseinheit
(CPU) 12, einer Direktspeicherzugriffs-(DMA)Steuereinheit 14,
einer Steuereinheit 16 für einen dynamischen Direktzugriffsspeicher
(DRAM), einer Busschnittstelleneinheit (BIU) 18, einer
PCMCIA-Steuereinheit 20,
einem parallelen ECP-Anschluss 22 und einer Flüssigkristallanzeigen-(LCD)Steuereinheit 24 plus
einer Anzahl von anderen Peripherieschaltungen, wie gezeigt. Wie
nachstehend genauer erörtert,
kommunizieren solche Funktionselemente 12, 14, 16, 18, 20, 22, 24 über einen
oder mehrere Signalbusse 50, 52, 54 untereinander
und mit externen Funktionselementen (nicht dargestellt), die mit
den externen Anschlüssen
des IC 10 verbunden sind.
-
Mit
Bezug auf 2A kann eine Schaltungsarchitektur
gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung folgendermaßen zusammengefasst werden.
Die Architektur wird um eine Struktur mit drei Bussen gegründet. Die
Hauptgeräte
steuern alle den Bus mit höchster
Leistung an (lokaler CPU-Bus).
Nur die Peripheriegeräte,
auf die am häufigsten
zugegriffen wird und die am häufigsten
verwendet werden, sind mit diesem Bus verbunden. Dies ermöglicht,
dass die Verwendung solcher Peripheriegeräte optimiert wird und die Leistung
des Systems maximiert wird. Unter Verwendung dieser Struktur mit
drei Bussen kann die Gesamtleistung des IC in dem System optimiert
werden, während
dem Systementwickler die Flexibilität des Hinzufügens von
zusätzlichen
externen Peripheriegeräten
für eine
größere Systemfunktionalität gestattet
wird.
-
Ein
zweiter interner peripherer Bus mit hoher Leistung ist auch vorgesehen,
um Peripheriegeräte
im IC, auf die am nächsthäufigsten
zugegriffen wird und die am nächsthäufigsten
verwendet werden, zu unterstützen.
Auf diese Peripheriegeräte
am internen peripheren Bus wird mit geringfügig langsameren Geschwindigkeiten
als auf die Peripheriegeräte
am lokalen CPU-Bus zugegriffen. Da auf diese internen Peripheriegeräte des peripheren
Busses weniger häufig
zugegriffen wird als auf jene am lokalen CPU-Bus, bleibt die Gesamtleistung
des Systems hoch, indem die Peripheriegeräte mit höchster Leistung auf den lokalen
CPU-Bus mit äußerst hoher
Leistung und alle anderen internen Peripheriegeräte auf den internen peripheren
Bus mit hoher Leistung abgesondert werden.
-
Der
dritte Bus in der Architektur ist der externe periphere Bus mit
mittlerer Leistung. Dieser Bus unterstützt (ein) externe(s) Peripheriegerät(e), das
(die) vom Systementwickler hinzugefügt wird (werden). Dieser Bus
ermöglicht
einem Systementwickler die Flexibilität, externe Peripheriegeräte hinzuzufügen, wenn
auch die Zugriffe auf solche Peripheriegeräte mit mäßigeren Geschwindigkeiten stattfinden.
-
Wie
nachstehend genauer erörtert,
umfasst die Architektur drei physikalische Busse, die fünf logischen
Bussen entsprechen. Die Architektur verteilt auch die Entscheidungs-
und Zyklussteuerlogik in fünf
separate Blöcke
innerhalb der Konstruktion. Die Entscheidungs- und Zyklussteuerlogik
in jedem der separaten Blöcke
führt eindeutige
Aufgaben durch, die, wenn sie zusammen arbeiten, effizient das Hauptgerät, das den Buszugriff
durchführt,
die Art des Zugriffs, der angefordert wird, und den physikalischen
(und logischen) Bus, auf dem der Zyklus ablaufen soll, festlegen.
-
Mit
Bezug auf 2B ist für die vorstehend erörterte Schaltungsarchitektur,
wie in dem IC 10 von 1 implementiert,
der erste physikalische (und logische) Bus der synchrone lokale
CPU-Bus 50 für
mehrere Hauptgeräte
mit äußerst hoher
Leistung. Von einem Architekturgesichtspunkt kann der lokale CPU-Bus 50 durch
eine beliebige Anzahl von Bushauptgeräten angesteuert werden (was
diesen Bus zu einem Mehrfachhauptbus macht). Vor dem Ansteuern des
lokalen CPU-Busses 50 muss
zuerst ein Bushauptgerät
sich für
den lokalen CPU-Bus 50 entscheiden und dessen Steuerung
erlangen. In dem IC 10 von 1 befinden
sich zwei Bushauptgeräte,
nämlich
die CPU 12 und die DMA-Steuereinheit 14. Die CPU 12 ist
das Standardbushauptgerät
und behält
die Steuerung des lokalen CPU-Busses 50 jederzeit, außer wenn
die DMA-Steuereinheit 14 die Steuerung anfordert, woraufhin
die CPU 12 der DMA-Steuereinheit 14 bei ihrer
ersten vernünftigen
Gelegenheit, z. B. nach Beendung der Ausführung der aktuellen CPU-Bustransaktionssequenz,
die Steuerung des lokalen CPU-Busses 50 gewährt. Nach
dem Erlangen der Steuerung des lokalen CPU-Busses 50 behält die DMA-Steuereinheit 14 die
Steuerung bis zu einem solchen Zeitpunkt, zu dem sie ihre Anforderung
für fortgesetzte
Herrschaft aufhebt, woraufhin die CPU 12 ihre Steuerung
des lokalen CPU-Busses 50 wieder aufnimmt.
-
Die
CPU 12 kann als "primäres Hauptgerät" des lokalen CPU-Busses 50 und
die DMA-Steuereinheit 14 als "alternatives Hauptgerät" betrachtet werden.
Die Architektur unterstützt
ein "primäres Hauptgerät" und eine unbegrenzte
Anzahl von "alternativen
Hauptgeräten".
-
Der
lokale CPU-Bus 50 ist synchron, was bedeutet, dass alle
Signale auf dem Bus als nur in Bezug auf das Taktsignal des Busses
gültig
betrachtet werden. In dem IC 10 von 1 sind
alle Signale nur in bezug auf die steigende Flanke des Takts für den lokalen
CPU-Bus 50 gültig.
Ferner wird der lokale CPU-Bus 50 als mit einer äußerst hohen
Leistung arbeitend betrachtet, da der Bus in der Lage ist, einen
Zugriff pro Taktperiode durchzuführen,
was der theoretischen maximalen Leistung eines synchronen Busses
entspricht.
-
Um
die Betriebsfrequenz des lokalen CPU-Busses 50 zu maximieren,
ist nur eine geringe Anzahl der synchronen Peripheriegeräte mit höchster Leistung
mit diesem verbunden. Diese zwei Peripheriegeräte sind die DRAM-Steuereinheit 16 und
die BIU 18. Die DRAM-Steuereinheit 16 führt alle
Zugriffe auf den stark genutzten DRAM-Systemspeicher (nicht dargestellt) durch,
während
die BIU 18 einen internen, asynchronen, peripheren Bus 52 mit
hoher Leistung und einen externen, asynchronen, peripheren Bus 54 mit
mäßiger Leistung bereitstellt.
-
Sowohl
die DRAM-Steuereinheit 16 als auch die BIU 18 empfangen
einen Zugriff auf den lokalen CPU-Bus 50 gleichzeitig und
beide Blöcke 16, 18 beginnen,
die Art des Zyklus und sein Ziel festzustellen. Architektonisch
muss entweder die DRAM-Steuereinheit 16 oder die BIU 18 oder
beide die letztliche Feststellung durchführen, welcher der zwei Blöcke 16, 18 den
Zugriff durchführt.
In dem IC 10 von 1 nimmt
die DRAM-Steuereinheit 16 den Zyklus entweder an oder weist
ihn zurück.
Die BIU 18 nimmt alle von der DRAM-Steuereinheit 16 zurückgewiesenen
Zyklen an und weist alle von der DRAM-Steuereinheit 16 angenommenen
Zyklen zurück.
-
Wenn
die DRAM-Steuereinheit 16 den Zugriff, der auf dem lokalen
CPU-Bus 50 angefordert wird, durchführt, tut sie dies durch Zugreifen
auf einen externen DRAM (nicht dargestellt), der mit dem IC 10 über die
Stifte des gemeinsam genutzten externen Busses 54 gekoppelt
ist. Diese Stifte des gemeinsam genutzten externen Busses 54 bilden
den zweiten physikalischen Bus, aber, wie der Name andeutet, werden
diese Stifte von mehreren logischen Bussen gemeinsam genutzt. Wenn
die DRAM-Steuereinheit 16 diese Stifte des gemeinsam genutzten
externen Busses 54 steuert, ist der logische Bus zu diesem
Zeitpunkt der externe DRAM-Schnittstellenbus.
-
Wie
vorstehend angemerkt, nimmt die BIU 18 alle Zugriffe auf
den lokalen CPU-Bus 50 an, die von der DRRM-Steuereinheit 16 zurückgewiesen
werden. Wenn die PCMCIA-Steuereinheit 20 aktiviert
wird, sendet die BIU 18 den Zugriff zur PCMCIA-Steuereinheit 20,
bevor versucht wird, irgendeinen anderen Zugriff durchzuführen. Wenn
die PCMCIA-Steuereinheit 20 den
Zugriff annimmt, dann vollendet die PCMCIA-Steuereinheit 20 den
Zugriff durch Erzeugen der entsprechenden Signale an den Stiften
des gemeinsam genutzten externen Busses 54. Dies ist der
zweite logische Bus (PCMCIA-Kartenschnittstellenbus), der in den
einzelnen physikalischen Satz von Stiften des gemeinsam genutzten
externen Busses 54 multiplexiert wird.
-
Wenn
die PCMCIA-Steuereinheit 20 den Zugriff zurückweist
oder wenn die PCMCIA-Steuereinheit 20 nicht aktiviert wird,
dann stellt die BIU 18 fest, ob der Zugriff auf ein internes
Peripheriegerät
oder ein externes Peripheriegerät
vorliegt. Die BIU 18 führt
diese Feststellung auf der Basis dessen durch, welche internen Peripheriegeräte zur Aktivierung
programmiert wurden, der Adresse(n), an der (denen) sich solche
aktivierten internen Peripheriegeräte befinden, und der Adresse
des aktuellen Zugriffs.
-
Wenn
die BIU 18 feststellt, dass der Zugriff auf ein internes
Peripheriegerät
stattfindet, erzeugt die BIU 18 einen Zugriff auf den asynchronen,
internen peripheren Bus 52, um den Zugriff durchzuführen. Der
asynchrone, interne, periphere Bus 52 mit hoher Leistung
bildet den dritten physikalischen Bus der Architektur und den vierten
logischen Bus der Architektur.
-
Wenn
die BIU 18 andererseits feststellt, dass ein Zugriff auf
den externen peripheren Bus 54 stattfindet, führt die
BIU 18 diesen Zugriff durch Erzeugen der entsprechenden
Signale an den Stiften des gemeinsam genutzten externen Busses 54 durch.
Dies ist der fünfte
logische Bus, der der Architektur zugeordnet ist. Zugriffe, die
nicht auf irgendwelche der chipinternen Peripheriegeräte stattfinden,
führen
immer zu einem Zugriff auf den externen peripheren Bus an den Stiften
des gemeinsam genutzten externen Busses 54.
-
Um
effizientere Datenübertragungen
durchzuführen,
führt die
DMA-Steuereinheit 14 schließlich Systemspeicherzugriffe über den
lokalen CPU-Bus 50 (wie vorstehend beschrieben) durch,
während
auch der Beginn und das Ende dieser Zugriffe mit Zugriffen mit den
die DMA anfordernden Bauelementen über eine direkte Verbindung
mit und in Zusammenarbeit mit der BIU 18 überlappen.
Die die DMA anfordernden Bauelemente können sich entweder am internen
peripheren Bus 52 (wie z. B. die ECP-Steuereinheit 22 oder
die LCD-Steuereinheit 24) oder am externen peripheren Bus 54 befinden.
-
Mit
Bezug auf 3A und 3B zusammen
kann die verteilte Entscheidung unter der CPU 12, der DMA-Steuereinheit 14,
der DRAM-Steuereinheit 16, der BIU 18 und der
PCMCIA-Steuereinheit 20 besser
verstanden werden. Während
des anfänglichen
Systemzustands 200, z. B. nach dem Systemhochfahren oder -rücksetzen,
wird die CPU 12 initialisiert und Leerlaufzyklen werden
auf dem lokalen CPU-Bus 50 durchgeführt. Die nächste Operation 202 ist
eine Entscheidung hinsichtlich dessen, ob eine CPU-Zugriffssequenz in
Gang ist. Wenn nicht, ist die nächste
Operation 204 eine Feststellung, ob die DMA-Steuereinheit 14 angefordert
hat, ein Bushauptgerät
zu sein. Wenn nicht, ist die nächste
Operation 206 eine Entscheidung, ob ein CPU-Buszyklus ansteht.
Wenn nicht, besteht die nächste
Operation 208 darin, einen weiteren Leerlaufzyklus auf
dem lokalen CPU-Bus 50 mit der CPU 12 in der Steuerung
zu verarbeiten. Diese Leerlaufzyklusoperation 208 wird solange
wiederholt, wie keine Anforderung von der DMA-Steuereinheit 14 für die Steuerung
des Busses 50 empfangen wird und kein CPU-Buszyklus ansteht.
-
Wenn
eine CPU-Zugriffssequenz in Gang war, tritt das System in einen
Zustand 210 ein, in dem die CPU 12 die Steuerung
des lokalen CPU-Busses 50 hat. Wenn eine DMA-Bushauptgeräteanforderung
von der DMA-Steuereinheit 14 von der CPU 12 empfangen
wurde, wird ebenso eine Operation 212 durchgeführt, in der
die CPU 12 die Steuerung des lokalen CPU-Busses 50 der
DMA-Steuereinheit 14 gewährt und das System in einen
Zustand 214 eintritt, in dem nun die DMR-Steuereinheit 14 die
Steuerung des lokalen CPU-Busses 50 hat.
-
Die
nächste
Operation 216 ist eine Entscheidung, die von der DRAM-Steuereinheit 16 durchgeführt wird,
ob der Zyklus ein DRAM-Zyklus ist. wenn ja, besteht die nächste Operation 218 darin,
eine DRAM-Zugriffssequenz an den Stiften des gemeinsam genutzten
externen Busses 54 durchzuführen. Wenn nicht, ist die nächste Operation 220 eine
Entscheidung, die in Zusammenarbeit von der BIU 18 und
der PCMCIA-Steuereinheit 20 durchgeführt wird,
ob der Zyklus ein PCMCIA-Zyklus ist. Wenn ja, besteht die nächste Operation 222 darin,
eine PCMCIA-Zugriffssequenz an den Stiften des gemeinsam genutzten
externen Busses 54 durchzuführen. Wenn nicht, ist die nächste Operation 224 eine
Entscheidung von der BIU 18, ob der Zyklus ein interner
Zyklus ist. Wenn ja, besteht die nächste Operation 226 darin,
eine Zugriffssequenz auf den internen peripheren Bus durchzuführen, während ein
Leerlaufzyklus an den Stiften des gemeinsam genutzten externen Busses 54 durchgeführt wird.
Wenn nicht, besteht die nächste
Operation 228 darin, einen Zugriff auf den externen peripheren
Bus 54 an den Stiften des gemeinsam genutzten externen
Busses 54 durchzuführen.
-
Nach
jeder dieser Zugriffsoperationen 218, 222, 226, 228 ist
die nächste
Operation 230 eine Entscheidung, ob die CPU 12 die
Steuerung des lokalen CPU-Busses 50 hat. Wenn ja, wird
der vorangehende Prozess beginnend mit der Operation 202,
die feststellt, ob eine CPU-Zugriffssequenz in Gang ist, wiederholt.
Wenn nicht, besteht die nächste
Operation 232 darin, festzustellen, ob mehr DMA-Zyklen
abgearbeitet werden sollen. Wenn ja, fährt das System mit dem Zustand 214 fort
oder tritt erneut in diesen ein, in dem der lokale CPU-Bus 50 von
der DMA-Steuereinheit 14 gesteuert wird. Wenn nicht, besteht
die nächste
Operation 208 darin, einen Leerlaufzyklus auf dem lokalen
CPU-Bus 50 mit der CPU 12 in der Steuerung durchzuführen.
-
Daher
demonstriert die Basisarchitektur des IC 10 eine Steuerkonstruktion
mit verteilter Entscheidung und verteiltem Zugriff für mehrere
Bushauptgeräte
für den
Zweck, die Leistung von den Peripheriegeräten, auf die am häufigsten
zugegriffen wird, zu maximieren, während dennoch eine hohe Leistung
von den chipinternen Peripheriegeräten, auf die weniger häufig zugegriffen
wird, bereitgestellt wird und eine mäßige Leistung für einen
Zugriff auf chipexterne Peripheriegeräte aufrechterhalten wird.
-
Wie
nachstehend genauer erörtert,
ist die CPU 12 ein 32-Bit-Prozessor
mit einem Befehlssatz, der mit dem Standard-Intel486-Prozessor kompatibel ist. Seine
Leistung ist hauptsächlich
durch die Taktgeschwindigkeit, die Anzahl von Taktzyklen pro Befehl
und die Anzahl von ausgeführten
Befehlen festgelegt. Die Zieltaktfrequenz war in einem großen Ausmaß durch
Herstellungseinschränkungen,
typische Anwendungsanforderungen und die Implementierungsstrategie
vorbestimmt, dazu war die Anzahl von ausgeführten Befehlen durch die Verwendung
der x86-Befehlssatzarchitektur (ISA) eingeschränkt. Der Fokus zum Erhöhen der
Leistung war daher die Anzahl an Taktzyklen, die im Durchschnitt
für jeden
Befehl erforderlich waren, d. h. Takte pro Befehl (CPI).
-
Folglich
war die CPU-Architektur dazu ausgelegt, Befehle in der geringsten
Anzahl von Taktzyklen auszuführen.
Eine dreistufige Pipeline wird verwendet, die die Anzahl von Überbrückungen,
Sperren und die Chipgröße verringert.
Dies verringert auch den Sprungnachteil, wenn ein bedingter Sprung
durchgeführt
wird. Die Takte pro Befehl für
alle Befehle, deren Optimierung angestrebt wird, wurden dann auf
der Basis dieser Architektur abgeschätzt und eine zusätzliche
Logik wurde in der Architektur ausgeführt, um diese Zahlen zu erhalten.
-
Mit
Bezug auf 4 verwendet die Architektur
der CPU 12 eine dreistufige Pipeline unter Verwendung einer
mikroprogrammierten Steuerung. Die drei primären Stufen der Pipeline sind
die Decodier- 70, die Ausführungs- 72 und die
Einspeicher- 74 Stufe. Die Einspeicherstufe 74 ist
ferner in zwei Unterstufen 74a, 74b unterteilt.
Die zweite Unterstufe 74b wird nur für einige der Speicherzugriffe
verwendet. Für
Operationen von Register zu Register sind nur drei Stufen erforderlich.
Daher funktioniert die Pipeline hauptsächlich mit diesen drei Stufen 70, 72, 74.
-
Die
Decodierstufe 70 enthält
nominal die Decodiereinheit 100, fungiert jedoch als mehr
als nur der Befehlsdecodierer. Diese Stufe 70 umfasst auch
den Vorabrufpuffer 102, den Befehlscache 104 und
den Mikroprogrammsteuerbaustein 106. Der Vorabrufpuffer 102 ist
16 Bytes breit und ist als Zwei-Etagen-Einheit 102a, 102b ausgelegt.
Die Vorabrufeinheit 102 versucht, den Befehlsdecodierer 100 mit
allen Bytes des Befehls, den er derzeit decodiert, welcher bis zu
15 Bytes lang sein kann, vollständig
beliefert zu halten. Die Vorabrufeinheit 102 koppelt mit
dem Befehlscache 104. Die Vorabrufeinheit 102 versucht,
vor dem Decodierer 100 abzurufen. Dieser Vorgriffsmechanismus
verbessert die Leistung signifikant.
-
Der
Befehlscache 104 enthält
1K Bytes, die als direkt abgebildet mit einer Zeilengröße von acht
Bytes organisiert sind. Der Befehlscache 104 horcht auf
dem Bus, um veraltete Daten aufgrund eines selbstmodifizierenden
Codes zu vermeiden. (Dies ist ein weiteres Beispiel der durch Leistung
gesteuerten Methode für
die Konstruktion der CPU 12.) Da das meiste des Zielanwendungscodes
klein ist, ergibt ein Cache von 1K eine signifikante Leistungsverbesserung
und das Implementieren eines größeren Caches
war nicht wesentlich. Dies verringert die Fläche und daher die Kosten des
Chips 10. Da viele der Zielanwendungen von einem Festwertspeicher
(ROM) aus ablaufen, wird auch eine signifikante Leistungssteigerung
erhalten.
-
Der
Decodierer 100 ist in der Lage, die einfachen Befehle in
einem einzelnen Zyklus zu decodieren. Präfixe und komplexe Befehle brauchen
mehr als einen Zyklus zum Decodieren. Der Mikroprogrammsteuerbaustein 106 übernimmt
dann und durchschreitet den Mikrocode für die Befehle. Das meiste des
Mikrocodes ist ein einzelner Zyklus, abgesehen von den komplexen
Befehlen, einschließlich
derjenigen, die den Schutzmechanismus des i486 unterstützen. Sowohl
der Decodierer 100 als auch der Mikroprogrammsteuerbaustein 106 verwenden
Logikkonstruktionen, die Leistung und Fläche sparen.
-
Die
Ausführungsstufe 72 ruft
nicht nur Operanden ab und führt
die Befehle aus, sondern berechnet auch die Speicheradressen. Die
x86-Architektur weist einen segmentierten Adressenraum mit vielen
komplexen Adressierungsbetriebsarten auf, um auf diesen Adressierungsraum
zuzugreifen. Der segmentierte Speicherplatz bedeutet, dass, um die
physikalische Adresse zu erhalten, die tatsächlich auf dem Bus läuft, mindestens eine
Addition durchgeführt
werden muss, jene der Segmentbasis und des Versatzes innerhalb eines
solchen Segments. Dies wird durch die Berechnung des Segmentversatzes,
der bis zu drei weitere Teile aufweisen kann: Basis; Index; und
Verschiebung, weiter verkompliziert. Da die Berechnung der gesamten
Adresse, die aus allen diesen Teilen besteht, in einem einzelnen
Zyklus aufwändig
wäre, wurden
die vorherrschenden Fälle
optimiert, d. h. diejenigen mit nur einem skalierten Index und einer
Verschiebung oder einer Basis und einer Verschiebung. Die Ausführungseinheit 108 ist
in der Lage, die gesamte Adressenberechnung in einem einzelnen Zyklus
durchzuführen,
d. h. sie kann zwei Adressenadditionen in demselben Zyklus durchführen. Auch
eine Segmentgrenzprüfung
wird an diesem Punkt durchgeführt,
um Segmentüberläufe zu verhindern. Die
so berechnete lineare Adresse (dies ist auch die physikalische Adresse)
wird zu einer Buseinheit (nachstehend genauer erörtert) für die Verteilung an die externe
Welt gesandt. Diese Konstruktion ermöglicht die Ausführung von
häufig
verwendeten Lade-, Speicher-, Einspeicher- und Entnahmebefehlen
in einem einzelnen Zyklus.
-
Die
Ausführungsstufe 72 beinhaltet
auch die Architekturregisterdatei 110 und die Schutzlogikmechanismen 112.
Die Registerdatei 110 löst
die Quellen- und Zielinformation für alle Operationen in der Ausführungsstufe 72 auf.
Sie ermöglicht
auch das Überbrücken von
Ergebnissen entweder von der Ausgabe der Arithmetik- und Logikeinheit
(ALU) 114 oder von einer Ladeoperation aus dem Speicher.
Dies hilft, Pipelineblasen aufgrund von Datenabhängigkeiten zu verringern. Der
volle i486-Schutzmechanismus wurde abgesehen von der Unterstützung der
Virtual86-Betriebsart implementiert und die meisten der i486-Ausnahmen
wurden abgesehen von jenen implementiert, die als bedeutungslos
für die
Zielanwendungen erachtet wurden.
-
Die
Einspeicherstufe 74 umfasst eine Buseinheit 116,
eine Fehlersucheinheit 118 und eine Register-Einspeicherlogik 120.
In dieser Stufe 74 wird der Speicherzugriff eingeleitet
und beendet und die Registerdatei 110 wird aktualisiert.
Die zweite Einspeicherunterstufe 74b ermöglicht,
dass eine unabhängige
Registeroperation außerhalb
der Reihenfolge vollendet wird, während ein Speicherschreibzugriff
noch ansteht. Der Speicherzugriff wird pipelineverarbeitet, was
ermöglicht,
dass bei jedem Zyklus eine neue Lese/Schreib-Operation eingeleitet
wird. (Bei einer anfänglichen
Implementierung mit 25 MHz ergibt dies einen Speicherzugriff in
einem einzelnen Zyklus; daher verbessert ein Datencache die Leistung
nicht signifikant.) Mit Bezug auf 5 ist die
CPU 12 in 11 Blöcke
unterteilt, um die Komplexität
der Konstruktion zu verringern: Vorabrufeinheit 102; Decodiereinheit 100;
Mikroprogrammsteuerbaustein 106; Registerdateieinheit 110;
Ausführungseinheit 108;
Schutzlogikeinheit 112; Ausnahmelogikeinheit 130;
Fehlersuchlogikeinheit 118; Buseinheit 116; globale Steuereinheit 132;
und Befehlscache 104.
-
Die
Vorabrufeinheit 102 besteht aus zwei 8-Byte-Registern 102a, 102b (4), die entweder vom Befehlscache 104 oder
direkt vom Speicher gefüllt
werden. Die Decodiereinheit 100 erhält den Befehl von der Vorabrufeinheit 102 und
verarbeitet sie, um die Eintragsmicrocodeadresse für den Befehl,
die Registeradressen, unmittelbare Werte, Verschiebungswerte und
eine Segmentinformation zu erzeugen. Der Decodierer 100 erzeugt
auch eine Information für
einige der Ausnahmen und wird auch verwendet, um den Fall der nicht-implementierten
Befehle zu bearbeiten, d. h. x86-Befehle, die nicht in der CPU 12 implementiert
werden.
-
Der
Mikroprogrammsteuerbaustein 106 steuert das Durchschreiten
des Befehlsmikrocodes. Er erzeugt die nächste Mikrocodeadresse und
konsultiert den Mikrocode-ROM. Die Mikro-ROM-Adresse kann von verschiedenen
Stellen kommen: vom Decodierer 100, wenn ein neuer Befehl
gestartet wird; vom Mikrocode, wenn der derzeitige Befehl nicht
beendet ist; oder von der Ausnahmelogik 130 im Fall von
Ausnahmen.
-
Die
Registerdateieinheit 110 liest die Operanden, löst die Überbrückungen
auf, erzeugt Konstanten und richtet Operanden aus. Die Architekturregister
und die Selektoren (d. h. die Segmentnachschlageregister) werden
in diesem Block implementiert. Die Architekturregisterdatei weist
doppelte Lese- und Schreibanschlüsse
auf. Da auf die Register entweder als einzelnes Byte, als Wort (zwei
Bytes) oder als Doppelwort (vier Bytes) zugegriffen werden kann,
sind die doppelten Lese- und Schreibanschlüsse in dieser Registerdatei 110 komplex.
Die doppelten Schreibanschlüsse
optimieren Ladebefehle und die gleichzeitige Durchführung von
Befehlen.
-
Die
Ausführungseinheit 108 weist
zwei Hauptfunktionen auf. Eine besteht darin, alle Rechen- und Logikoperationen
durchzuführen.
Für diese
Funktion weist die Ausführungseinheit 108 eine
Arithmetik- und Logikeinheit 114 (4)
und einen Bitstellenverschieber auf. Die zweite Funktion ist die
Adressenberechnung (Erzeugung linearer Adressen) und die Grenzprüfung. Diese
Einheit 108 berechnet den Adressenversatz und die lineare
Adresse und führt
die Grenzprüfung
in einem einzelnen Zyklus durch.
-
Die
Buseinheit 116 ist die Schnittstelle für die CPU 12 zum lokalen
CPU-Bus 50. Sie implementiert einen 32-Bit-Adressenbus und aufgrund
von Gehäuseanschlussstift-Begrenzungen einen
16-Bit-Datenbus. (Dies ist kein ernsthafter Engpass, da die Zielbetriebssysteme
und -anwendungen 16 Bit sind.) Ein wichtiges Merkmal dieser Einheit 116 ist
die Fähigkeit,
einen Pipelinespeicherzugriff zu unterstützen, wenn ein Speicherzugriff
eingeleitet wird, bevor der vorherige beendet ist. In dieser Betriebsart
ist der externe DRAM in Seiten unterteilt, die typischerweise 4K
Bytes lang sind. Solange der Zugriff innerhalb einer Seite im DRAM
stattfindet, kann Lesen und Schreiben aus dem bzw. in den Speicher
in einem einzelnen Zyklus aufrechterhalten werden. wenn ein Seitenverfehlen
stattfindet, werden drei Zyklen durchgeführt, um diesen Zugriff durchzuführen. Zugriffe
auf einen statistischen Direktzugriffsspeicher (SRAM) und ROM werden
auch mit Wartezuständen
und Nicht-Pipeline-Speicherzugriffen
unterstützt.
-
Die
globale Steuereinheit 132 ist die Überwachungseinrichtung der
gesamten Architektur. Diese Einheit 132 steuert das Durchschreiten
der Befehlspipeline. Sperren, die Steuerung der Ausnahmeverarbeitung und
das Prozessorabschalten werden auch von dieser Einheit 132 bearbeitet.
Die Ausnahmelogik 130 priorisiert und löst alle Ausnahmen und externen
Unterbrechungen auf. Dies umfasst die Softwareunterbrechungen, arithmetischen
Ausnahmen, Ausnahmen der geschützten
Betriebsart und alle anderen Fehler und Programmunterbrechungen.
Die Schutzlogikeinheit 112 ist für den in der Intel486-Implementierung
definierten Schutzmechanismus verantwortlich. Die Implementierung
der vier Ebenen des Schutzes und der Unterstützung für alle von diesem Mechanismus 112 erzeugten
Ausnahmen wird bereitgestellt. Diese Einheit 112 ist für die Implementierung
der segmentierten Speicherarchitektur des i486 erforderlich.
-
Die
Fehlersuchlogik 118 umfasst alle Fehlersuchregister und
implementiert die Befehls- und Datenunterbrechungspunkte. Die Fehlersuchlogik 118 implementiert
zusammen mit der Buseinheit 116 auch die Anforderungen
für die
Unterstützung
einer externen schaltungsinternen Emulation (ICE).
-
Der
vorstehend beschriebene integrierte Schaltkreis kann auch mit einem
Prozessorkern versehen sein, der Merkmale umfasst, die eine schaltungsinterne
Emulation (ICE) unterstützen.
In der Erörterung,
die folgt, hinsichtlich der wahlweisen ICE-Merkmale des Prozessors
wird die folgende Terminologie verwendet:
-
Takt:
Der Takt, auf den in dieser ganzen Beschreibung Bezug genommen wird,
ist zum Systemtakt-Ausgangssignal SYSCLK logisch äquivalent,
von dem wiederum angenommen wird, dass es zum chipinternen "CPU-Takt"-Signal funktional äquivalent
ist. Die chipinterne Implementierung kann aus Gründen der Laufzeitverzögerung ein
anderes Signal verwenden.
-
ICE-Betriebsart
gegen normale Betriebsart: Dies ist die Unterscheidung zwischen
einem Bauelement, das ein Teil eines ICE-Systems ist, und einem,
das ein Teil eines Anwendungssystems ist. Ein Bauelement in der
ICE-Betriebsart
stellt mehr Eingangs/Ausgangs-Signalstifte bereit.
-
ICE-Ausnahmebetriebsart
gegen normale Ausnahmebetriebsart: Wenn sich ein Bauelement in der ICE-Betriebsart
befindet, kann der Fehlersuchregistersatz in die ICE-Ausnahmebetriebsart
gesetzt werden, indem ein IM-Bit gesetzt wird. Dies ermöglicht die
Verwendung der Fehlersuchregister und des ICEBP-Befehls, um zur
ICE-Systemüberwachungseinrichtung
zu springen.
-
Unterbrechungsbetriebsart
gegen Laufbetriebsart: Dies ist die Unterscheidung zwischen dem
Abarbeiten eines ICE-Überwachungsprogramms
und einem Laufcode, der zur Anwendung gehört. In die Unterbrechungsbetriebsart
wird nur durch die ICE-Ausnahme und nicht durch die Unterbrechung
1 (die Fehlersuch-Programmunterbrechung) eingetreten.
-
ICE-Abbildung
gegen Benutzerabbildung: Diese Abbildungen sind identisch. Die ICE-Überwachungseinrichtung
läuft in
demselben Adressierungsraum wie der Benutzercode, aber in einem
Bereich (80000000 -- 83FFFFFF), der nur für die ICE-Verwendung reserviert ist.
-
Überlagerungs-
gegen Zielspeicher: Der für
den Benutzer sichtbare Speicher kann entweder im Zielschaltungsspeicher
physikalisch vorhanden sein oder kann innerhalb des ICE-Systems emuliert
werden (Überlagerung).
Aufgrund der Tatsache, dass die DRAM-Steuereinheit immer aktiv ist,
muss der Überlagerungsspeicher
einen Seitenmodus-DRAM emulieren, wenn er in den Adressierungsraum
des DRAM abgebildet wird.
-
Ein
schaltungsinterner Emulatorprozessor gemäß der vorliegenden Erfindung
wird vorzugsweise monolithisch gepackt und stellt ICE-zweckorientierte
Signalstifte bereit, die im vorstehend beschriebenen Prozessor nicht
vorgesehen sind, welchen die ICE emulieren soll. Der Chip des Emulatorprozessors
ist jedoch vorzugsweise zum Zielprozessor identisch.
-
Tabelle
1 beschreibt die Signale, die während
der "Emulatorbetriebsart" des schaltungsinternen
Emulatorprozessors geliefert werden. Wie in Tabelle 1 beschrieben,
wird die Emulatorbetriebsart durch Aktivieren eines Signals am ICEMODE-Eingangssignalstift
beim Systemzurücksetzen
ausgewählt.
Wenn nicht ein Signal am ICEMODE-Eingangssignalstift beim Systemrücksetzen
aktiviert wird, sind Signale, die an den zweckorientierten ICE-Ausgangssignalstiften
geliefert werden, unbestimmt und alle ICE-Merkmale auf dem Chip
werden deaktiviert. Die ausgewählte
Betriebsart bleibt bis zum nächsten
Mal, wenn das Bauelement zurückgesetzt wird,
in Kraft.
-
TABELLE
1: EMULATOR-ZWECKORIENTIERTE SIGNALSTIFTE
-
-
-
-
-
-
-
TABELLE
2: AUFGEZÄHLTE
BUSSTATUSZUSTÄNDE
-
Zwei
Bits werden zu den Fehlersuchregistern des Prozessors hinzugefügt, um ICE-Umgebungen
zu unterstützen:
IM
Bit 12 des Registers DR7
BI Bit 12 des Registers DR6
-
Das
Setzen des IM-Bits des Fehlersuchregisters verursacht, dass Unterbrechungspunkte
vielmehr die ICE-Ausnahme (d. h. Überwachungscode) als eine Unterbrechung,
die von einem vom Benutzer gelieferten Code abgearbeitet wird, auslösen. Während IM
= 1, löst
auch der ICEBP-Befehl (ein Software-TRAP-Befehl) die ICE-Ausnahme anstelle
einer Unterbrechung, die von einem vom Benutzer gelieferten Code
abgearbeitet wird, aus.
-
Das
IM-Bit wird durch ein Chiprücksetzen
auf Null zurückgesetzt,
ungeachtet dessen, ob die ICE-Betriebsart oder die normale Betriebsart
für das
ganze Bauelement ausgewählt
ist. Es muss durch eine Softwarehandlung auf eine "1" gesetzt werden.
-
Das
BI-Bit wird in der ICE-Betriebsart durch die Hardware gesetzt, sobald
ein extern erzeugter Unterbrechungspunkt (am BPREQ-Stift signalisiert)
eine der Ursachen für
eine ICE-Ausnahme ist. Das BI-Bit wird durch eine Softwarehandlung
gelöscht.
-
6 stellt
den Zeitablauf des ALS-Signals dar. Wie in 6 gezeigt,
ist ALS ein auf einen hohen Pegel gehender Impuls, der sich zum
Zwischenspeichern von Adressen an seiner steigenden Flanke eignet.
Die abfallende Flanke sollte normalerweise nicht verwendet werden,
da sich die Adresse simultan mit dieser ändern kann. ALS wird synchron
mit allen gültigen
Adressen auf dem chipexternen Bus präsentiert.
-
Der
Hauptzweck der NSF-, IXSTAT- und IXQUAL-Signale besteht darin, zu
ermöglichen,
dass die chipexterne Hardware der linearen Adresse folgt, auf die
durch den aktuellen EIP-(Befehlszeiger)Wert
verwiesen wird, während
die Ausführung
vor sich geht. Dies wird in der aggressiven Verfolgungsbetriebsart
durch Laden eines chipexternen linearen EIP-("LEIP")Registers
vom Adressenbus, sobald eine nicht-sequentielle Abruf anzeige (NSF)
gegeben wird, und durch Hinzufügen
des Inhalts des IXQUAL-Werts zum LEIP-Register in einem beliebigen Taktzyklus,
wenn sich IXSTAT auf einem hohen Pegel befindet, durchgeführt. Bei
Sprungbefehlen und in Ausnahmedienst-Mikrocodesequenzen ist jedoch
eine IXSTAT-Anzeige vorhanden, die anders bearbeitet werden muss.
-
Das
in 7 bereitgestellte Ablaufdiagramm stellt die Beziehung
zwischen der NSF-Anzeige und den IXSTAT- und IXQUAL-Zustandssignalen
dar, wenn ein Befehl springt. Man beachte, dass die NSF-Rnzeige
zu oder vor dem Zeitpunkt auftritt, zu dem der Sprungbefehl anzeigt,
dass er austritt (IXSTAT = 1). Wenn eine NSF-Anzeige zu sehen ist,
muss nicht zugelassen werden, dass die zugehörige Anzeige IXSTAT = 1 den
LEIP inkrementiert. Das Inkrementieren des LEIP zu diesem Zeitpunkt
würde einen
schlechten Wert erzeugen, indem die Länge des Sprungbefehls zur Zieladresse
addiert wird. Im Fall des Ausnahmedienstes ist der Längenwert,
der präsentiert
wird, wenn IXSTAT = 1, undefiniert.
-
Trotz
der Tatsache, dass das IXSTAT-Signal unter diesem Umstand nicht
verwendet werden sollte, um den LEIP-Wert zu inkrementieren, liefert
es dennoch eine wertvolle Information. Es ist möglich, dass einige Sprungbefehle
fehlerbehaftet sind, nachdem sie eine NSF signalisiert haben. In
diesem Fall ist die Anwesenheit oder Abwesenheit des Zustands IXQUAL
= 1 eine zuverlässige
Anzeige dessen, ob der Befehl beendet wurde, bevor die Ausnahme
ergriffen wird.
-
Der BHE-Stift folgt allen Adressen
ungeachtet der adressierten Stellen. Dies stellt keine Änderung
zwischen der ICE-Betriebsart und der normalen Betriebsart dar.
-
Die IOR- und IOW-Freigabesignale werden für alle E/A-Zugriffe, interne
sowie externe, aktiviert.
-
Es
wird zugelassen, dass die Eingangssignale ICEMODE und BPREQ mit
einer Haltezeit von null relativ zur Zwischenspeicherflanke von
SYSCLK präsentiert
werden.
-
Der
Emulatorunterstützungsprozessor
wird in der Benutzerhardware (z. B. einer Produktionsplatine) mittels
einer Klemme über
einem existierenden, montierten Chip installiert, wie in 8 schematisch
dargestellt. Dieser Chip wird deaktiviert, wobei alle Stifte schweben,
so dass der Emulatorunterstützungsprozessor in
der ICE das System ansteuern kann. wie in 9 gezeigt,
wird dies durch Ansteuern von zwei Stiften während des Rücksetzens durchgeführt: die
Signale TEST und SA0. Der normale Rücksetzzustand von SA0 ist niedrig;
wenn jedoch der TEST-Stift
auf niedrig gesetzt wird, während
das PWGOOD-Signal auf einem niedrigen Pegel liegt (d. h. während sich
der Chip im Rücksetzzustand
befindet), versucht der Chip, SA0 mit einem schwachen Bauelement
auf einen hohen Pegel zu bringen. Wenn SA0 extern auf einem niedrigen
Pegel gehalten wird (durch den entsprechenden Stift des ICE-Bauelements),
schweben alle anderen Stifte sofort. Nach dem Ende des Rücksetzens
(wobei PWGOOD auf hoch schaltet), wird der schwebende Zustand dauerhaft
gemacht und der schwache Treiber an SA0 wird auch abgeschaltet,
was bewirkt, dass er ebenso schwebt. Dieser Zustand bleibt bis zum
nächsten
Rücksetzen
in Kraft. (Dieses Schema impliziert, dass in irgendeiner anderen Testbetriebsart
die Ausgangssignale zwischen dem Zeitpunkt, zu dem TEST auf einen
niedrigen Pegel gebracht wird, und dem Zeitpunkt, zu dem SA0 ansteigt,
kurz schweben.
-
In
einem beliebigen System, das das Anfügen eines ICE-Systems ermöglicht,
wird auch nicht zugelassen, den TEST-Stift direkt mit Vcc zu verbinden.
-
Die
dokumentierten Merkmale der Fehlersuchregister, wie für die '486-Architektur definiert,
sind vollständig
im Emulatorprozessor implementiert.
-
Es
besteht keine Absicht, irgendwelche frei laufenden Zeitgeber durch
eine Hardwarewirkung beim Auftreten der ICE-Ausnahme zu stoppen.
Die Zeitüberwachung
wird durch eine Sperre an NMI unterstützt.
-
Der
ICE-abgebildete Raum soll nicht vom normalen benutzerabgebildeten
Raum getrennt sein. Der ICE-abgebildete
Speicher belegt alle Adressen, die aus 100000 (binär) in den
höchstwertigen
6 Bits der 32-Bit-Adresse (Adressen 80000000-83FFFFFF hex) bestehen.
Die benutzerprogrammierbaren Chipansteuerungen müssen niemals so programmiert
werden, dass sie auf diesen Adressenbereich reagieren, aber es befindet
sich keine Hardware auf dem Chip, um zu verhindern, dass dies passiert.
Es ist die Verantwortung der Entwicklungssoftware, hier niemals
Speicher zuzuweisen. Es ist die Verantwortung des ICE-Systems, den Versuch
eines Benutzers zu erkennen, auf diesen Raum zuzugreifen, anders
als durch Auslösen
der ICE-Ausnahme.
-
Es
wird auch angenommen, dass der ICE-abgebildete Raum 16 Bit
breit ist, wenn die ICE-Betriebsart aktiviert ist. Das CS16-Signal
wird für
Zugriffe innerhalb dieses Raums ignoriert. Während Zugriffen auf Stellen im
ICE-Abbild wird die ISA-artige Speicherzeitsteuerung verwendet.
wenn sich das Bauelement in der ICE-Betriebsart befindet, kann die
Software auf ein Register an der E/A-Adresse EF5Fh zugreifen, welches
ICE-Betriebsart-Zeitsteuerregister genannt wird. Wenn sich das Bauelement
nicht in der ICE-Betriebsart
befindet, hat dieses Register keine Wirkung und kann nicht gelesen
oder beschrieben werden.
-
Das
folgende sind die Definitionen der Bits innerhalb des Betriebsart-Zeitsteuerregisters:
I_CD | Bit
3. ICE-Befehlsverzögerung,
dieses Bit legt fest, ob eine Befehlsverzögerung Zugriffen auf den ICE-Speicheradressenbereich
(80000000h-83FFFFFFh)
zugeordnet ist. Rücksetzzustand
ist "1". |
I_WS2-0 | Bits
2-0. ICE-Wartezustandsbits 2-0, diese Bits legen die Anzahl von
Wartezuständen
fest, die Zugriffen auf den ICE-Speicheradressenbereich (80000000h-83FFFFFFh) zugeordnet
sind. Rücksetzzustand
ist "111" (7 Wartezustände). |
Reserviert | Bits
4-7. Reserviert: keine Änderungen
an diesen Bits vornehmen. |
-
Wenn
der DRAM für
den RAM im ICE-Abbildraum verwendet wird, dann ist eine chipexterne DRAM-Steuereinheit
erforderlich.
-
Zwei
Betriebsarten sind zum Erfassen des Ablaufs der Programmausführung definiert:
Aggressive und nicht-aggressive
Betriebsart.
-
In
der aggressiven Betriebsart wird jedes Mal, wenn ein Sprung durchgeführt wird,
die Zieladresse (an SA25--SA1 und ODD) zum Bus in Verbindung mit
dem NSF-Signal und dem ALS-Freigabeimpuls
gesandt. Jedes Mal, wenn ein Befehl die Ausführung beendet, zeigen außerdem die
Signale IXSTAT und IXQUAL an, um wie viele Bytes die Ausführungsadresse
vorzuschieben ist. Durch Betrachten dieser Signale kann das ICE-System
eine Protokollierung in fast Echtzeit durchführen. Diese Betriebsart wird "aggressives Protokoll" genannt, da sie
die höchstmögliche Zuverlässigkeit
der Protokollmeldung mit geringem Aufwand in Echtzeitleistung garantiert:
wenn ein Befehl zu einer cachegespeicherten Adresse springt, muss
er warten, bis der chipexterne Bus verfügbar wird, so dass die Zieladresse
gemeldet werden kann. Außerhalb
einer ICE-Umgebung würde
er nicht warten.
-
Um
in tatsächlicher
Echtzeit zu laufen, kann die nicht-aggressive Protokollierungsbetriebsart
ausgewählt
werden: in dieser Betriebsart wartet die NSF-Anzeige nicht, bis
der Bus bei einem Befehlscachetreffer verfügbar wird und somit wird nicht
garantiert, dass Sprünge
die Zieladresse an den SA-Stiften präsentieren.
-
Um
den ICE-Überwachungscode
im ICE-abgebildeten Speicher auszuführen, ist es erforderlich,
eine ICE-Ausnahme zu erhalten. Die ICE-Ausnahme ist die Ausnahme
mit höchster
Priorität.
Sie wird ausgelöst, wenn
sich das Bauelement in der ICE-Betriebsart befindet und der BPREQ-Stift
aktiviert ist. (Ansonsten hat die Aktivierung des BPREQ-Stifts keine
Wirkung.) Wenn sich die Fehlersuchregister in der ICE-Ausnahmebetriebsart
befinden (DR7-Bit IM = 1), verursacht außerdem die Ausführung des
ICEBP-Befehls (Operationscode F1 hex) oder irgendeines durch die
Fehlersuchregister ausgelösten
Unterbrechungspunkts oder die einstufige Programmunterbrechung (vom
TF-Bit im EFLAGS-Register) eine ICE-Ausnahme.
-
Wenn
die Fehlersuchregister nicht für
die ICE-Ausnahmebetriebsart
konfiguriert sind, lösen
der ICEBP-Befehl
und die Fehlersuchregister die Fehlersuch-Programmunterbrechung aus: Unterbrechung
1. Der Zustand des Bits 12 des DR6-Registers zeigt an, ob das BPREQ-Signal
die Ursache für
die ICE-Ausnahme ist.
-
Das
IM-Bit beeinflusst den Befehl INT 1 mit zwei Bytes nicht (welcher
in allen Fällen
die Unterbrechung 1 auslöst),
und beeinflusst auch keinen der anderen INT-Befehle, einschließlich "INT 3" (der ein Software-"Programmunterbrechungs"-Befehl ist). Es
beeinflusst auch nicht die Funktion des BPREQ-Stifts, der in allen
Fällen
die ICE-Ausnahme erzeugt.
-
Von
dem Punkt an, an dem der Emulator beginnt, die ICE-Ausnahme abzuarbeiten,
bis zu dem Zeitpunkt, zu dem das ICE-Überwachungsprogramm die Programmsteuerung
an den Benutzercode (RSM, nachstehend) zurückgibt, wird weder eine andere
ICE-Ausnahme noch irgendeine nicht-maskierbare Unterbrechung (NMI)
erkannt. Irgendeine NMI-Anforderung wird intern anstehend gehalten
und wird beim Austritt in die Laufbetriebsart abgearbeitet. Irgendwelche
zusätzlichen
BPREQ-Anforderungen sollen durch eine chipexterne Schaltung anstehend
gehalten werden, bis eine BPREQ-Bestätigung (von der ICE-Überwachungseinrichtung)
zu sehen ist; dies tritt auch nicht bis zum Austritt zum Benutzercode
auf.
-
Vorzugsweise
deaktiviert das ICE-Überwachungsprogramm
das Zeitüberwachungsmerkmal
beim Eintritt und reaktiviert die Zeitüberwachung vor der Rückkehr in
die Laufbetriebsart und arbeitet diese ab. Dadurch sind Zeitüberwachungsereignisse
nicht wahrscheinlicher als in einer Nicht-ICE-Umgebung.
-
Beim
Auftreten der ICE-Ausnahme wird der gesamte Maschinenzustand in
einer ICE-Speicherauszugstabelle beginnend mit der Adresse 80000000
hex gespeichert. Man beachte, dass eine Information zuerst beginnend
mit der Adresse 80000100 zwischengespeichert wird und dann zu 80000000
zurückkommt.
Werte werden in Einheiten von 32-Bit-Doppelworten gespeichert und werden
mit Nullfüllung
rechtsbündig
gemacht, wenn sie nicht das ganze Doppelwort belegen. Der Inhalt
von Schattenregistern wird in zwei Dworten gespeichert, vorzugsweise
in einem Format, das dem Format eines Speichersegmentdeskriptors ähnelt.
-
Nach
dem Zwischenspeichern des Maschinenzustands wird der Prozessorkern
in einen Zustand gebracht, der dem Rücksetzen ähnelt, außer dass das EIP-Register mit
dem Wert 83FFFFF0 geladen wird. In diesem Zustand werden alle internen
Schattenregister auf einen Basiswert von Null und die maximale Segmentlänge (4 GBytes)
gesetzt. Der Prozessor wird auch in die USE32-Betriebsart für den Code
gesetzt.
-
Wenn
das BPREQ-Eingangssignal während
des Austritts aus dem Rücksetzen
aktiviert wird, geschieht der vorstehend beschriebene Dienst unmittelbar
nach der normalen Rücksetzverarbeitung.
Vorzugsweise wird das BPREQ-Signal nicht entfernt, bis die IXSTAT/IXQUAL-Signale
bestätigen,
dass in die ICE-Ausnahme eingetreten wurde.
-
In
der Unterbrechungsbetriebsart können
Verweise auf benutzerabgebildete Speicherdaten oder Code Standardbefehle
verwenden, da die Speicherräume
nicht getrennt sind. Der Code im ICE-Abbild ist nicht cachefähig; daher
modifiziert die Ausführung
des Codes in der Unterbrechungsbetriebsart den Befehlscache nicht,
wenn nicht Unterbrechungen zurück
in den Benutzercode von der Überwachungseinrichtung
des ICE-Systems zugelassen werden. Das Horchen auf dem Bus fährt fort,
um jegliche Cacheleitung ungültig
zu machen, auf die ein Schreiben in der Unterbrechungsbetriebsart
durchgeführt
wird. Es ist nicht erforderlich, den Cache beim Eintritt in die
Unterbrechungsbetriebsart ungültig
zu machen.
-
Um
in die Laufbetriebsart zurückzugelangen,
veranlasst die Überwachungseinrichtung,
dass der Prozessor einen Befehl RSM (Operationscode 0F, AA hex)
ausführt,
der bewirkt, dass die Architekturregister und Schattenregister der
CPU aus der ICE-Speicherauszugstabelle geladen werden. Die Ausführung fährt dann von
dem Punkt an fort, der durch die wiederhergestellten EIP- und CS-Abbildungen
angegeben wird. Temporäre
Register werden überhaupt
nicht wiederhergestellt.
-
Wenn
der RSM-Befehl in der Laufbetriebsart ausgeführt wird, verursacht er eine
Programmunterbrechung "ungültiger Befehl".
-
Verschiedene
weitere Modifikationen und Veränderungen
an der Struktur und am Betriebsverfahren dieser Erfindung sind für Fachleute
ersichtlich, ohne vom Schutzbereich der Erfindung abzuweichen. Obwohl die
Erfindung in Verbindung mit speziellen bevorzugten Ausführungsbeispielen
beschrieben wurde, sollte es selbstverständlich sein, dass die Erfindung,
wie beansprucht, nicht unangemessen auf solche speziellen Ausführungsbeispiele
begrenzt werden sollte. Es ist vorgesehen, dass die folgenden Ansprüche den
Schutzbereich der vorliegenden Erfindung festlegen und dass Strukturen
und Verfahren innerhalb des Schutzbereichs dieser Ansprüche und
ihrer Äquivalente
dadurch erfasst werden.