-
Die vorliegende Erfindung bezieht sich auf
Mikrorechnersysteme, insbesondere Mikrorechnersysteme, die ein
Cache-Subsystem mit einem Cache-Controller enthalten, das in der Lage
ist, Schreibzyklen zu hinterlegen.
-
Die Verwendung von Cache-Subsystemen in Mikrorechnersystemen
bietet eine Reihe attraktiver Betriebsvorteile. Ein
Mikrorechnersystem mit einem Cache-Subsystem ist in Wirklichkeit
ein Mikrorechner mit Dual-Bus. Die CPU und das
Cache-Subsystem sind über eine Einrichtung miteinander verbunden, die
als CPU-Localbus bezeichnet werden kann. Getrennt von dem
CPU-Localbus ist ein Systembus vorhanden, an den andere
Geräte (E/A-Geräte, zusätzliche Speicher etc.) angeschlossen
werden können. Durch das Cache-Subsystem ist der Systembus
von allen Lese-Speicherzugriffen befreit, sofern die gesuchte
Information im Cache-Subsystem gefunden wird. Da nicht alle
gewünschten Informationen im Cache-Subsystem gefunden werden,
und Schreiboperationen normalerweise sowohl an das
Cache-Subsystem als auch an den Speicher gerichtet sind, muß natürlich
zwischen dem Systembus und dem CPU-Localbus eine Verbindung
bestehen. Handelt es sich hierbei um einen Auffangpuffer,
sind zusätzliche Vorteile, insbesondere das Hinterlegen von
Schreiboperationen, möglich.
-
Bei jeder Schreiboperation muß auf den Speicher (der sich
nicht auf dem CPU-Localbus befindet) zugegriffen werden. Die
Informationen (Daten und Adressen) für den Schreibzugriff
werden zunächst auf dem CPU-Localbus abgelegt, wo sie zum
Schreiben in das Cache-Subsystem verwendet werden können. Da
die Schnittstelle zwischen dem CPU-Localbus und dem Systembus
ein Auffangpuffer ist, können dieselben Daten im Puffer
zwischengespeichert werden. Nachdem die Information im Puffer
zwischengespeichert ist, muß sie nicht mehr von der CPU
angetrieben werden. Ein hinterlegter Schreibzyklus verläßt sich
also darauf, daß die Adreß- und Dateninformationen für eine
Speicherschreiboperation im Auffangpuffer zur Verfügung
stehen. Um diesen Schreibzyklus abzuschließen, ist ein
Eingreifen der CPU nicht nötig. Bei einer "hinterlegten"
Schreiboperation werden also die Daten und die Adresse für den
Schreibzyklus in dem Puffer zwischengespeichert, der mit dem
CPU-Localbus und dem Systembus eine Schnittstelle bildet, und
die CPU kann dann ihre Arbeit mit der Einleitung eines
Folgezyklus fortsetzen. Das Cache-Steuersystem (einschließlich
Cache-Controller) kann dann den Abschluß der Schreiboperation
in den Speicher überwachen.
-
Mikrorechnersysteme mit einem 80386-Prozessor und einem
82385-Cache-Controller, beide von Intel Corporation, nutzen
die Vorteile hinterlegter Schreiboperationen in genau dieser
Weise.
-
Der 80386 und die von ihm erzeugten Signale werden in
"Introduction to the 80386 Including the 80386 Data Sheet"
von Intel Corporation (April 1986) beschrieben. Der 82385-
Cache-Controller und die von ihm erzeugten Signale werden in
"82385 High Performance 32-Bit Cache Controller", erhältlich
von Intel Corporation (Juli 1987), beschrieben.
-
Ein weiteres attraktives Merkmal des 80386 ist seine
Fähigkeit, mit Dynamic Bus Sizing arbeiten zu können. Der 80386
ist nominell eine 32-Bit-Maschine, das heißt, sein Datenbus
ist 32 Bit breit. Dynamic Bus Sizing ist die Fähigkeit des
80386-Prozessors, nicht nur mit 32-Bit-Geräten (Speicher,
E/A, etc.), zusammenarbeiten zu können, sondern auch mit
Geräten, die keine 32-Bit-Fähigkeit haben, das heißt, Geräte,
die in einem Zyklus nicht 32 Datenbits gleichzeitig
übertragen können. Es gibt zum Beispiel eine große Vielfalt von
Speichern und/oder E/A-Geräten, die 16-Bit-Geräte sind, das
heißt, sie können in einem gegebenen Zyklus höchstens
16 Datenbits übertragen. Außerdem gibt es auch E/A-Geräte,
Speicher und andere Geräte mit 8-Bits. Diese Geräte können
nur 8 Datenbits in einem gegebenen Zyklus übertragen.
-
Der 80386 kann mit einem BS16-Signal arbeiten. Wird dieses
Signal angemeldet, hat das die folgende Wirkung. Hat der
80386 einen 32-Bit-Zyklus erzeugt, das heißt, hat er
32 Datenbits erzeugt bzw. erwartet er 32 Datenbits, zeigt die
Anmeldung des 8516-Signals dem 80386 an, daß er nicht mit
einem 32-Bit-Gerät arbeitet. Durch Anmeldung des BS16-Signals
wird während des 32-Bit-Zyklus automatisch die Erzeugung
eines zweiten Zyklus eingeleitet. Normalerweise ruft jedes 16--/
Bit-Gerät eine vorbestimmte Gruppe von 16 Bits von dem 32-
Bit-Datenbus ab. Beim zweiten durch das BS16-Signal erzeugten
Zyklus plaziert der 80386 diese Gruppe von 16 Datenbits, die
im ersten Zyklus nicht in der vorbestimmten Gruppe von
Datenbits waren, auf einer vorbestimmten Gruppe von
Datenleitungen, die der vorbestimmten Gruppe von 16 Bits zugeordnet
sind. Von dem 16-Bit-Gerät wird also in dem ersten der beiden
Zyklen eine gegebene Gruppe von 16 Bits des
32-Bit-Datenbereichs abgerufen. Im zweiten Zyklus werden von dem
16-Bit-Gerät weitere 16 Datenbits abgerufen, so daß in beiden 16-Bit-
Zyklen zusammen 32 Bits abgerufen werden.
-
Zwischen den hinterlegten Schreibzyklen und Dynamic Bus
Sizing besteht jedoch eine Unverträglichkeit. Diese
Unverträglichkeit entsteht aus dem folgenden Grund. Nehmen wir an,
der 80386 leitet eine hinterlegte Schreiboperation ein. Die
Daten und die Adresse für den hinterlegten Schreibzyklus
werden in der gepufferten Schnittstelle zwischen dem
CPU-Localbus und dem Systembus zwischengespeichert. Obwohl der
Schreibzyklus noch nicht abgeschlossen ist, wird an den 80386
ein Bereit-Signal zurückgemeldet. Hierdurch wird simuliert,
daß der Zyklus abgeschlossen ist, und der 80386 kann eine
Folgeoperation einleiten. Da das BS16-Signal (das an den
80386 zurückgemeldet wird, um diesem die Größe des Geräts,
mit dem er arbeitet, anzuzeigen) von dem Gerät erzeugt wird,
wird dieses Signal erst dann erzeugt, wenn das Gerät seine
Adresse erkannt hat. Setzen wir das Beispiel fort und nehmen
wir an, daß das Gerät, für das der hinterlegte Schreibzyklus
bestimmt ist, in Wirklichkeit ein 16-Bit-Gerät ist; zu dem
Zeitpunkt, an dem das BS16-Signal an den 80386 zurückgemeldet
wird, ist dieser bereits nicht mehr mit der gegebenen
Operation, sondern bereits mit der Folgeoperation beschäftigt. Der
80386 kann daher den zweiten, für das 16-Bit-Gerät
notwendigen Zyklus nicht erzeugen.
-
Es ist daher ein Ziel der Erfindung, Schreibzyklen selektiv
zu hinterlegen. Dieses Ziel wird durch die Erfindung nach
Anspruch 1 erreicht.
-
Ein Ausführungsbeispiel der Erfindung soll nun unter
Bezugnahme auf die beiliegenden Zeichnungen beschrieben werden; es
zeigt:
-
Fig. 1 eine dreidimensionale Gesamtansicht eines typischen
Mikrorechnersystems, das die vorliegende Erfindung
ausgestaltet;
-
Fig. 2 ein ausführliches Blockdiagramm der meisten
Komponenten eines typischen Mikrorechnersystems, das die vorliegende
Erfindung ausgestaltet;
-
Fig. 3 ein Blockdiagramm, etwas ausführlicher als Fig. 2, mit
den Verbindungen zwischen einem 80386 und 82385, die vom
Hersteller empfohlen werden; das Diagramm hilft, zu verstehen,
warum eine solche Anordnung mit Dynamic Bus Sizing nicht
vereinbar ist; und
-
Fig. 4 ist ein Blockdiagramm, ähnlich wie Fig. 3, in dem
jedoch die Anwendung der vorliegenden Erfindung für das
selektive Hinterlegen von Schreibzyklen erläutert wird.
-
Fig. 1 zeigt ein typisches Mikrorechnersystem, in dem die
vorliegende Erfindung eingesetzt werden kann. Wie
dargestellt, umfaßt das Mikrorechnersystem 10 eine Reihe von
miteinander verbundenen Komponenten. Im einzelnen ist eine
Systemeinheit 30 mit einem Monitor 20 verbunden und treibt
diesen an (beispielsweise eine herkömmliche Video-Anzeige). Die
Systemeinheit 30 ist außerdem init Eingabegeräten, wie
Tastatur 40 und Maus 50, verbunden. Außerdem kann ein
Ausgabegerät, wie zum Beispiel ein Drucker 60, an die Systemeinheit 30
angeschlossen werden. Schließlich kann die Systemeinheit 30
ein oder mehrere Plattenlaufwerke enthalten, zum Beispiel das
Plattenlaufwerk 70. Wie nachfolgend beschrieben wird,
reagiert die Systemeinheit 30 auf Eingabegeräte, beispielsweise
die Tastatur 40 und die Maus 50, und Ein-/Ausgabegeräte, zum
Beispiel das Plattenlaufwerk 70, um Signale zum Antreiben der
Ausgabegeräte, beispielsweise den Monitor 20 und den
Drucker 60, zu liefern. Der Fachmann kann natürlich erkennen,
daß auch andere und konventionelle Komponenten interaktiv an
die Systemeinheit 30 angeschlossen werden können. Gemäß der
vorliegenden Erfindung umfaßt das Mikrorechnersystem 10 (wie
nachfolgend noch im einzelnen beschrieben wird) ein Cache-
Speicher-Subsystem, so daß ein CPU-Localbus vorhanden ist,
der mit einem Prozessor, einem Cache-Steuerwerk und einem
Cache-Speicher verbunden ist, wobei der CPU-Localbus über
einen Puffer mit einem Systembus gekoppelt ist. Der Systembus
ist mit den E/A-Geräten, zum Beispiel Tastatur 40, Maus 50,
Plattenlaufwerk 70, Monitor 20 und Drucker 60, interaktiv
verbunden. Desweiteren kann, gemäß der vorliegenden
Erfindung,
die Systemeinheit 30 außerdem einen dritten Bus
enthalten, der einen Micro Channel (TM)-Bus als Verbindung zum
Systembus und anderen (optionalen) Ein/Ausgabegeräten mit
unterschiedlichen Datenbreiten umfaßt.
-
Fig. 2 ist ein high-level-Blockdiagramm, das die
verschiedenen Komponenten eines typischen Mikrorechnersystems gemäß
der vorliegenden Erfindung erläutert. Ein CPU-Localbus 230
(mit Daten-, Adressen- und Steuerkomponenten) stellt die
Verbindung zwischen einem Mikroprozessor 225 (beispielsweise ein
80386), einem Cache-Steuerwerk 260 (das einen 82385-Cache-
Controller enthalten kann) und einem Cache-Speicher 255 mit
wahlfreiem Zugriff her. An den CPU-Localbus 230 ist außerdem
ein Puffer 240 gekoppelt. Der Puffer 240 selbst ist an den
Systembus 250 angeschlossen, der auch Adreß-, Daten- und
Steuerkomponenten umfaßt. Der Systembus 250 liegt zwischen
dem Puffer 240 und einem weiteren Puffer 253.
-
Der Systembus 250 ist außerdem an ein Bussteuer- und
Zeitgeberelement 265 und einen DMA-Controller 325 angeschlossen.
Ein Zuteilungs-Steuerbus 340 verbindet das Bussteuer- und
Zeitgeberelement 265 mit einem Zuteilungsüberwacher 335. Der
Hauptspeicher 350 ist ebenfalls an den Systembus 250
angeschlossen. Der Hauptspeicher umfaßt ein
Speichersteuerelement 351, einen Adressen-Multiplexer 352 und einen
Datenpuffer 353. Diese Elemente sind mit den Speicherelementen 361
bis 364 verbunden, wie in Fig. 2 zu sehen ist. Speichergeräte
und cachefähige Speichergeräte können an den Bus 320
angeschlossen werden; ein typisches Speichergerät 331 ist in
Fig. 2 dargestellt.
-
Ein weiterer Puffer 254 ist zwischen dem Systembus 250 und
einem Planarbus 270 angeschlossen. Der Planarbus 270 umfaßt
Adreßdaten beziehungsweise Steuerkomponenten. An den
Planarbus 270 sind verschiedene E/A-Adapter und andere
Komponenten
angeschlossen, zum Beispiel der Bildschirm-Adapter 275
(zum Antreiben des Monitors 20), ein Taktgeber 280,
zusätzliche Direktzugriffsspeicher 285, ein RS 232-Adapter 290
(für serielle E/A-Operationen), ein Drucker-Adapter 295 (der
zum Antreiben des Druckers 60 verwendet werden kann), ein
Zeitgeber 300, ein Disketten-Adapter 305 (der mit dem
Plattenlaufwerk 70 zusammenarbeitet), ein
Interrupt-Controller 310 und ein Nurlesespeicher 315. Ein weiterer
Puffer 253 ist zwischen dem Systembus 250 und einem weiteren
Bus, beispielsweise einem Micro-Channel (TM)-320-Bus
angeschlossen, der zum Anschluß optionaler Funktionseinheiten
dient.
-
Fig. 3 ist ein Blockdiagramm der Verbindungen zwischen dem
80386, dem 82385-Cache-Controller, dem Auffangpuffer 240, der
die Schnittstelle zwischen dem CPU-Localbus und dem Systembus
bildet, wie sie vom Hersteller empfohlen werden. Im einzelnen
zeigt Fig. 3 die Adreß- und Steuerbuskomponenten des CPU-
Localbus CPULBA (einschließlich der Adreßleiter A2-A31 und
der Steuerleiter D/C, W/R und M/10), gekoppelt an einen
Eingang des gesteuerten Adressen-Zwischenspeichers (AL) , der ein
Element des Puffers 240 darstellt. Die Ausgänge des
Zwischenspeichers AL gehen zur Adressenkomponente SBA und zur
Steuerkomponente SBC des Systembusses. Ähnlich ist der
Dateneingangs-/Datenausgangsanschluß des 80386 (mit den Leitern
D0-D31) mit einem Anschluß des Daten-Zwischenspeichers (DL)
zwischen dem CPU-Localbus und dem Systembus verbunden und
stellt ein weiteres Element des Puffers 240 dar. Der andere
Anschluß des DL ist die Datenkomponente des Systembusses SBD.
Fig. 3 zeigt, daß der Cache-Controller 82385 über eine
externe Logik, die durch das UND-Gatter 300 und das
ODER-Gatter 301 dargestellt ist, ein READYO-Signal an den 80386
liefert. READYI ist das Bereit-Signal, das entweder anzeigt, daß
der Buszyklus abgeschlossen ist, oder das vor Abschluß des
Systembuszyklus für eine hinterlegte Schreiboperation
angemeldet
wird. Da DL bidirektional ist, können entweder Daten
von der CPU-Localbus-Komponente (CPULBD) oder von der
Systembus-Datenkomponente (SBD) zwischengespeichert werden; der
82385 liefert außerdem ein Richtungssignal (BT/R), um
anzuzeigen, ob der DL Daten vom CPU-Localbus oder vom Systembus
überträgt. Die Signale BE0-8E3 (sowohl die vom 80386
ausgegebenen als auch die vom 82385 ausgegebenen Wiederhol-Signale)
sind zusätzliche Adressierungssignale. Das Mikrorechnersystem
80386/82385 ist bei jedem Hauptspeicherzugriff so angeordnet,
daß auf eine "Zeile" von Daten, die vier Bytes darstellt,
zugegriffen wird. Die 4-Bit-Adressiersignale (BE0-8E3) können
zur Auswahl von ein oder mehr Bytes aus den vier Bytes der
"Zeile" verwendet werden. Die Signale BHOLD und BHLDA sind
ein Signalpaar "Bus halten - Bus halten bestätigen", das
zwischen dem 82385-Cache-Controller und dem
Zuteilungsüberwacher 335 läuft. BADS ist ein Signal, welches anzeigt, daß das
Adressierelement des Systembusses SBA eine gültige Adresse
anmeldet. BREADY ist ein Bereit-Signal vom Systembus 250 zum
82385.
-
Wie in Fig. 3 gezeigt und in den genannten Intel-Handbüchern
erläutert, werden alle Schreiboperationen hinterlegt, das
heißt, Adressen und Daten werden in den Elementen DL und AL
des Puffers 240 zwischengespeichert und der 82385 meldet dann
READYO an, so daß sich der 80386 bereits der Einleitung einer
Folgeoperation widmen kann. Die hinterlegte Schreiboperation
kann dann aus den Daten im AL und DL komplettiert werden;
dieser Vorgang wird vom 82385 überwacht. Solange die Geräte,
für die die hinterlegte Schreiboperation bestimmt ist,
32-Bit-Geräte sind, so daß die Schreiboperation in einem
einzigen Zyklus abgeschlossen werden kann, oder sind die
hinterlegten Schreiboperationen 16-Bit-Schreiboperationen an ein
16-Bit-Gerät etc., sind die hinterlegten Schreiboperationen
wirksam. Andererseits sind hinterlegte Schreiboperationen
ungeeignet, wenn die Datenmenge in einem hinterlegten
Schreibzyklus
Daten enthält, die die Größe des Geräts, an das die
Schreiboperation gerichtet ist, überschreiten. Der Grund
dafür ist, daß in diesen Fällen zusätzliche Zyklen notwendig
sind (ein 32-Bit-Zyklus an ein 16-Bit-Gerät erfordert zwei
Zyklen etc.). Zu dem Zeitpunkt, an dem der 80386 ein 8516-
Signal empfängt, das (bei einem 32-Bit-Zyklus) anzeigt, daß
die hinterlegte Schreiboperation an ein 16-Bit-Gerät geht,
ist er aber bereits mit der Folgeoperation beschäftigt und
kann den früheren Zyklus nicht wiederholen.
-
Fig. 4 ist ähnlich wie Fig 3, zeigt jedoch, wie der 80386,
der 82385, der AL, der DL, der CPU-Localbus 230 und der
Systembus 250 gemäß der vorliegenden Erfindung miteinander
verbunden sind. Der BT/R-Ausgang des 82385 wird jetzt nicht
an den DL angekoppelt, sondern in ein neues Steuerelement C
eingegeben. Andere Eingänge in das Steuerlement C sind das
DOE#-Signal und das WBS-Signal vom 82385 und das READYO-
Signal (das vorher an den 80386 angeschlossen war - siehe
Fig. 3). Ein Decodierer CADR ist mit der Adreßkomponente des
CPU-Localbus (CPULBA) gekoppelt, im einzelnen mit den
Kennzeichen-Bits A17-A26 und A31. Der CADR meldet ein Signal NCA
an, das in das Steuerelement C eingegeben wird, wodurch eine
angemeldete Adresse auf dem CPULBA angezeigt wird; es handelt
sich hierbei um die Adresse eines nicht cachefähigen Geräts.
Ähnlich entstehen jetzt in dem Steuerelement C Steuersignale
für das Element DL, insbesondere LEAB (um Daten in dem
Element DL zwischenzuspeichern) und OEAB# (um den Ausgang des
DL-Elements freizugeben). Ein weiterer Eingang in das
Steuerelement C ist das vom Systembus generierte Signal
BREADY.
-
Neben seinen Eingängen von den Bits A17-A26 und A31 der
CPULBA empfängt der Decodierer CADR programmierbare
Cachefähigkeits-Bits (PCB) - In einem tatsächlich konstruierten
Ausführungsbeispiel stellt das erste dieser drei Bits eine
Entscheidung
dar, die ein Caching des ROM-Bereichs erlaubt. Ein
zweites Bit befähigt entweder den Decodierer CADR, NCA aus
zugeben, basierend auf der decodierten Information, oder,
alternativ, alle Zugriffe für nicht cachefähig zu erklären,
das heißt, NCA anzumelden, unabhängig von der angemeldeten
Adresse des CPULBA. Schließlich gibt ein drittes Bit in einem
bestimmten Zustand an, daß Adreßraum zwischen 0 und
8 Megabytes cachefähig ist, und daß Adreßraum zwischen 8 bis
16 Megabytes nicht cachefähig ist. In einem anderen Zustand
gibt dieses Bit an, daß Adreßraum im Bereich 0 bis
16 Megabytes cachefähig ist. Falls gewünscht, kann die
Wirkung dieses Bits multipliziert werden, indem einfach der
Status der ersten 16 Megabytes in den Bereichen der folgenden
16 Megabytes reflektiert wird Natürlich ist die Nutzung
dieser besonderen (oder anderer) Cachefähigkeits-Indikatoren für
die Erfindung nicht wesentlich. Es ist jedoch wichtig, den
CADR so anzuordnen, daß er seine Eingänge schnell decodieren
und NCA erzeugen kann. In einem tatsächlich konstruierten
Ausführungsbeispiel war das Zeitgeber-Fenster für die
Erzeugung von NCA aus gültigen Adressen auf dem CPULBA mit etwa
zehn Nanosekunden sehr kurz.
-
Der Begriff CPUREADY soll nachfolgend definiert werden (siehe
Gleichung 7) Die fünfte Zeile der Gleichung (auf der rechten
Seite des Gleichheitszeichens) gibt die Abhängigkeit von
CPUREADY von NCA an, das heißt, wenn NCA zusammen mit READYO
angemeldet wird, wird CPUREADY negiert.
-
Gleichzeitig mit der Anmeldung von CPUREADY muß LEAB
angemeldet werden, um die in den DL zu schreibenden Daten
zwischenzuspeichern. Das Signal LEAB wird in Gleichung 8 (siehe
unten) definiert. Es enthält einen Setz-Term (auf der ersten
Zeile rechts vom Gleichheitszeichen) und zwei Halte-Terme auf
der zweiten und dritten Zeile. Der Setz-Term erfordert die
Konjunktion von /BUSCYC3B6, /CPUREADY, (W/R), CLK und ADS.
-
In einem tatsächlich konstruierten Ausführungsbeispiel der
Erfindung wurde die Steuerlogik C (sowie eine andere
Steuerlogik, die nicht dargestellt ist, mit der andere Gleichungen
der nachfolgend gezeigten Gleichungen 1-11 implementiert
wurden) in Form einer programmierbaren Logikanordnung
realisiert. Für einen Fachmann dürfte klar sein, daß auch andere
konventionelle Logik-Implementierungen zur Verfügung stehen.
-
Durch Nutzung der in Fig. 4 gezeigten (und nachfolgend in
Verbindung mit den logischen Gleichungen erläuterten)
externen Logik stehen also hinterlegte Schreiboperationen nur für
cachefähige Zugriffe zur Verfügung. Der Definition nach ist
ein cachefähiger Zugriff ein 32-Bit-Gerät, obwohl auch andere
32-Bit-Geräte vorhanden sein können, die nicht cachefähig
sind. Die Hauptentscheidung, die für die Implementierung
dieser Erfindung erforderlich war, bestand darin, zu
entscheiden, ob eine hinterlegte Schreiboperation geeignet ist.
Nachdem diese Entscheidung getroffen ist, wird sie durch
Entwicklung der entsprechenden Steuersignale an DL und AL
implementiert. Die vom 82385 erzeugten Signale sind insoweit
geeignet, als sie mit der Entscheidung, die Schreiboperation
zu hinterlegen, kompatibel sind.
-
Dementsprechend erlaubt die Anwendung der Erfindung eine
Fortsetzung der hinterlegten Operationen, obwohl auch Geräte
an den Systembus und/oder den Bus mit optionalen Funktionen
angeschlossen sein können, die kleiner als 32 Bits sind.
-
Die oben erwähnten logischen Gleichungen werden nachfolgend
wiedergegeben. Den Symbolen wurden hierbei folgende
Bedeutungen zugeordnet:
-
Symbol Definition
-
/ Negation
-
:= ein registrierter Term, ist gleich
-
= ein kombinatorischer Term, ist gleich
-
& logisches UND
-
+ logisches ODER
Logische Gleichungen
-
In den oben genannten logischen Gleichungen werden in den
zitierten Intel-Publikationen folgende Signale beschrieben oder
genannt:
-
ADS
-
BADS
-
BRDYEN
-
BREADY
-
(BW/R) eigentlich in der Form BW/R genannt, die
Klammern sollen darauf hinweisen, daß der
gesamte Term ein Signal ist
-
CLK
-
READYO
-
RESET
-
WBS
-
(W/R) eigentlich in der Form W/R genannt, die
Klammern sollen darauf hinweisen, daß der
gesamte Term ein Signal ist
-
Wenn ADS aktiv ist, zeigt es eine gültige Adresse auf dem
CPU-Localbus 230 an. Wenn BADS aktiv ist, zeigt es eine
gültige Adresse auf dem Systembus 250 an. BRDYEN ist ein Ausgang
von 82385, der ein Vorgänger der READY-Signale ist. BREADY
ist ein Bereit-Signal vom Systembus 250 an den
CPU-Localbus 230. BW/R definiert eine Schreib- oder Leseoperation auf
dem Systembus 250. CLK ist ein Prozessor-Taktsignal, das in
der Phase mit dem Prozessor 225 übereinstimmt. READYO ist ein
weiterer Ausgang des 82385 in der Reihe der Bereit-Signale.
RESET bedarf keiner weiteren Erläuterung. WBS zeigt den
Zustand des Schreibpuffers an. (W/R) ist ein herkömmliches
Schreib- oder Lesesignal für den CPU-Localbus 230. Die
Gleichungen (1)-(11) definieren:
-
BREADY385
-
BT2
-
BUFWREND
-
BUSCYC385
-
BUSCYC386
-
CPUNA
-
LEAB
-
MISS1
-
PIPECYC385
-
PIEPCYC386
-
CPUREADY
-
in Form der definierten Signale, der Signale, die in den
zitierten Intel-Publikationen beschrieben oder genannt werden,
und NCA, NACACHE, READYO387 und RDY387PAL.
-
BREADY385 ist ein Signal wie BREADY, das in einem tatsächlich
konstruierten Ausführungsbeispiel für einen 64K-Cache
modifiziert wurde. Bei einem 32K-Cache (wie er vom Hersteller
empfohlen wird) kann BREADY anstelle von BREADY385 verwendet
werden.
-
BT2 gibt den Zustand des Systembusses 250 wieder. Der Zustand
BT2 ist ein in den genannten Intel-Publikationen definierter
Zustand.
-
BUFWREND stellt das Ende eines gepufferten Schreibzyklus dar.
BUSCYC385 gibt ebenfalls den Zustand des Systembusses 250
wieder. Für die Bus-Zustände BTI, BT1, BT1P ist es high, für
die Bus-Zustände BT2, BT2P und BT2I ist es low (auch hier
handelt es sich um Bus-Zustände, die in den zitierten Intel-
Publikationen genannt werden).
-
BUSCYC386 ist während der Zustände TI, T1, T1P, T2I des CPU-
Localbus 230 high, und während T2 low. Auch bei T2P ist es
low, es sei denn, T2I tritt zuerst auf.
-
CPUNA ist ein Signal an den 80386, das eine
Pipeline-Operation zuläßt.
-
LEAB ist die Zwischenspeicherfreigabe (in den Puffer 240) für
hinterlegte Schreiboperationen.
-
MISS1 ist aktiv und definiert den ersten Zyklus in einem
Doppelzyklus, um 64-Bit-Leseoperationen an cachefähige Geräte
abzuwickeln.
-
PIPECYC385 ist während BT1P aktiv (hierbei handelt es sich um
einen Bus-Zustand, der in den zitierten Intel-Publikationen
genannt wird).
-
PIPECYC386 ist während des Zustands T1P des CPU-Localbus 230
low.
-
CPUREADY ist der Bereit-Eingang an den 80386.
-
NCA ist ein Signal, das durch Decodieren der Adreßkomponente
auf dem CPU-Localbus 230 erzeugt wird und, wenn es aktiv ist,
einen nicht cachefähigen Zugriff wiedergibt. Die
Cachefähigkeit wird durch eine Kennzeichen-Komponente (A31 bis
A17) und eine programmierbare Information bestimmt, die
definiert, welche Kennzeichen sich (gegebenenfalls) auf
cachefähige im Gegensatz zu nicht cachefähigen Adressen beziehen.
-
NACACHE ist ein Signal ähnlich wie das BNA-Signal. BNA ist
ein vom System erzeugtes Signal, das die nächste Adresse vom
CPU-Localbus 230 anfordert, und wird in den zitierten Intel-
Veröffentlichungen genannt. NACACHE unterscheidet sich von
BNA nur hinsichtlich der Tatsache, daß BNA für einen
32K-Cache erzeugt wird, während NACACHE für einen 64K-Cache
erzeugt wird. Solange der Cache-Speicher ein 32K-Cache ist,
wie in den Intel-Veröffentlichungen zitiert, könnte das hier
genannte NACACHE-Signal durch das BNA-Signal ersetzt werden.
-
READYO387 ist der Bereit-Ausgang eines mathematischen
Coprozessors 80387, wenn ein solcher in das System eingebaut ist.
-
RDY387PAL ist ein Ausgang der externen Logik, der verwendet
wird, wenn ein mathematischer Coprozessor 80387 nicht
eingebaut ist, um zu verhindern, daß hierdurch die
Systemoperationen gestört werden.
-
Es dürfte deutlich geworden sein, daß die vorliegende
Erfindung eine mögliche Unverträglichkeit zwischen Dynamic Bus
Sizing und hinterlegten Schreiboperationen beseitigt hat. Im
einzelnen wird diese Unverträglichkeit dadurch überwunden,
daß erkannt wird, ob die auf dem CPU-Localbus 230 angemeldete
Adresse in einem Adressenbereich liegt, der als cachefähig
identifiziert wurde, oder nicht. Hinterlegte
Schreiboperationen werden nur für cachefähige Geräte zugelassen. CPUREADY
wird erzeugt, damit die CPU die nächste Operation einleiten
kann. Dieses Signal kann vor Abschluß einer anstehenden
Operation erzeugt werden oder nicht. Bezugnehmend auf
Gleichung 7; der in Zeile 1 definierte Term bezieht sich auf
einen Lese-Treffer. Diese Operation arbeitet interaktiv mit
dem Cache und ist eine Operation mit einem Null-Wartestatus,
CPUREADY ist also aktiv. Zeile 2 bezieht sich auf Cache-Lese-
Fehlversuche. CPUREADY wird nur aktiv, wenn BREADY aktiv ist,
das heißt, der Zyklus wird nicht hinterlegt. Zeile 4 bezieht
sich auf nicht hinterlegte Schreiboperationen, zum Beispiel
ist CPUREADY nur mit BREADY385 aktiv (wie BREADY). Zeile 5
bezieht sich auf eine cachefähige Schreiboperation (NCA
inaktiv),
es handelt sich also um eine hinterlegte Operation, das
heißt CPUREADY ist aktiv, ohne BREADY oder BREADY385.