-
Die vorliegende Erfindung bezieht sich auf eine
Busarbitrierung in einem Mehrfachbus-Mikrorechner.
-
Hintergrundinformationen zum 80386-Mikroprozessor, seinen
Eigenschaften und seiner Verwendung in Mikrorechnersystemen
einschließlich Cachespeicher-Subsystemen werden in den
Veröffentlichungen der Intel Corporation mit dem Titel
"Introduction to the 80386", April 1986, und dem 80386
Hardware-Referenzhandbuch (1986) beschrieben. Die Eigenschaften
und die Arbeitsleistung des 82385 Cache-Controllers werden in
der Veröffentlichung der Intel Corporation mit dem Titel
"82385 High Performance 32-Bit Cache Controller" (1987)
beschrieben.
-
New Electronics, Band 20, Nr. 7, März 1987, Seiten 30-33,
beschreibt die Verwendung eines 80386-Prozessors und eines
82385-Cachecontrollers in einem Doppelbus-Mikrorechnersystem.
-
Mikrorechnersysteme mit einem Cache-Subsystem unterscheiden
sich in ihrer Architektur beträchtlich von
Mikrorechnersystemen ohne Cache-Subsysteme. Mikrorechnersysteme mit einem
Cache-Subsystem arbeiten als Doppelbuseinrichtungen. Genauer
gesagt existiert in Mikrorechnersystemen mit einem Cache-
Subsystem ein erster Bus (genannt CPU lokaler Bus), der die
CPU, den Cachespeicher und die Cachesteuerung miteinander
verbindet. Weitere Einrichtungen sind an einen anderen Bus
(Systembus) gekoppelt. Solche weiteren Einrichtungen sind
beispielsweise der Hauptspeicher, Ein- und Ausgabegeräte und
Zusatzgeräte. Zusätzlich zu den zuvor angeführten
Einrichtungen kann der Systembus ebenfalls an die Cachesteuerung
gekoppelt werden.
-
Das Cache-Subsystem nimmt normalerweise dem Systembus einen
großen Teil an Speicherzugriffen ab, die im Fall eines
fehlenden Cache-Subsystems vom Systembus ausgeführt werden müßten.
Das heißt, in dem Maße wie die CPU vom Cachespeicher
Informationen erhalten kann, benötigt die CPU für diesen speziellen
Zyklus keinen Zugriff auf den Systembus. Entsprechend können
andere Einrichtungen während derselben Zeit den Systembus für
andere Arbeiten verwenden. Es wird erwartet, daß dies in einer
beträchtlichen Reduzierung der von der CPU verwendeten
Systembuszyklen resultiert. Normalerweise ist die Cachesteuerung
sowohl an den Systembus als auch an den CPU lokalen Bus
gekoppelt, und eine der Funktionen der Cachesteuerung besteht
darin, die Arbitrierungsüberwachung zu überwachen, die in den
Einzelbussystemen von der CPU überwacht worden war.
-
Ein verfügbarer Cachecontroller, der 82385, hat die Fähigkeit,
sowohl im Master- als auch im Slave-Modus zu arbeiten. Wird
der 82385 im Master-Modus betrieben und überwacht dieser die
Arbitrierungsüberwachung, gibt es für die CPU keinen
Mechanismus mehr, der nach den Systembus-Ressourcen greift.
-
Entsprechend ist es ein vorrangiges Ziel der vorliegenden
Erfindung, einen Mechanismus bereitzustellen, bei dem eine CPU
in einem Mehrfachbus-Mikrorechnersystem mit einem
Cachesteuerungselement zur Überwachung der Arbitrierungsüberwachung auf
die Systembus-Ressourcen zugreifen kann, die vom
Arbitrierungsmechanismus verteilt werden.
-
Die Arbitrierungsüberwachung reagiert auf
Arbitrierungsanforderungssignale, die von einer Mehrzahl an Einrichtungen
komßend gemeinsam gekoppelt werden. Wenn die
Arbitrierungsüberwachung erkennt, daß eine oder mehrere Einrichtungen die
gemeinsame Ressource angefordert haben, dann signalisiert sie den
Anfang einer Arbitrierungsperiode durch Änderung des Zustands
eines Leiters (dem ARB/GRANT), auf den durch alle
Einrichtungen ein Zugriff möglich ist. Wenn diese Einrichtungen den sich
ändernden Zustand des Leiters erkennen, weil der Beginn einer
Arbitrierungsperiode signalisiert wird, dann erzeugen diese
Einrichtungen Signale, die ihren jeweiligen Prioritätsstufen
entsprechen und eine Mehrzahl an Arbitrierungsleitern treiben,
die für diese Funktionen mit diesen Signalen bestimmt sind.
Die Verbindung zwischen der Mehrzahl der Einrichtungen und den
Arbitrierungsleitern ist so angeordnet, daß die Leiter den
Prioritätswert der Schaltung mit der höchsten Priorität, die
die Arbitrierungsleiter treibt, annehmen. Durch Vergleich des
Prioritätswerts auf den Arbitrierungsleitern mit ihrem eigenen
Prioritätswert kann auf diese Weise jede Einrichtung erkennen,
ob es eine Einrichtung mit einer höheren Priorität gibt, die
Zugriff auf den Bus wünscht. Am Ende einer vorbestimmten
Arbitrierungsperiode ändert der ARB/GRANT/-Leiter seinen Status.
Dadurch beginnt die Grant-Periode, während der die
Einrichtung, deren Prioritätswert derjenige Prioritätswert auf den
Arbitrierungsleitern war, die Steuerung der gemeinsamen
Ressource annimmt, um einen Buszyklus zu initiieren.
-
Darüber hinaus gibt es einen weiteren Leiter, der für ein
PREEMPT-Signal bestimmt ist, das erzeugt werden kann, um eine
Einrichtung, die Zugriff auf die Systemressource erhalten hat,
zu zwingen, ihren Zugriff zu beenden. Daher muß eine
Einrichtung, die Zugriff auf die Systemressource erhalten hat und bei
Erkennen eines bestätigten Preempt diese Ressource verwendet,
eine ordnungsgemäße Beendigung ihrer Verwendung der
Systemressource initiieren. Wenn die Einrichtung, die auf diese Weise
belegt wird, ihre Verwendung der gemeinsamen Ressource
beendet, beginnt die Arbitrierungsüberwachung mit einer neuen
Arbitrierungsperiode, wie dies oben beschrieben wurde.
-
In Mikrorechnersystemen mit einem Cache-Subsystem sind die
CPU-Zyklen, die auf den Cache zugreifen (und daher keinen
Zugriff auf den Systembus benötigen), Zyklen von minimaler
Dauer oder Null-Wartestatus-Zyklen. Wenn die CPU-Zyklen über
dieses Minimum hinausgehen, signalisieren sie
CPU-Anforderungen für den Systembus. Diese CPU-Zyklen, die länger sind als
die minimale Dauer, signalisieren der CPU, daß der Systembus,
die gemeinsame Ressource, benötigt wird.
-
In Übereinstimmung mit der vorliegenden Erfindung wird die CPU
mit dem Mittel, ein PREEMPT-Signal zu erzeugen,
bereitgestellt, das jede Einrichtung, die über den
Arbitrierungsmechanismus Zugriff zum Bus erhalten hat, befähigt, diesen Zugriff
zu beenden, wie bereits beschrieben wurde. Wie an späterer
Stelle noch beschrieben werden wird, wird die Erzeugung des
PREEMPT durch die CPU gesteuert, indem ein CPU-Zyklus erkannt
wird, der länger ist als ein für eine Cacheadresse benötigter
Zyklus.
-
Die Verwendung der Systemressource durch die CPU ist jedoch so
eingerichtet, daß so viel Zeit wie möglich eingespart wird.
Wenn also eine Einrichtung, die über eine Arbitrierung Zugriff
zum Bus erhalten hat, ein Preempt erkennt und eine
ordnungsgemäße Beendigung ihres Buszugriffs initiiert, signalisiert sie
ihre Beendigung der Verwendung des Busses. Die
Arbitrierungsüberwachung reagiert auf diese Anzeige mit der Erzeugung einer
neuen Arbitrierungsperiode. Wenn die CPU die Einrichtung war,
die das Preempt erzeugt hat, um die Freigabe des Busses
anzufordern, reagiert diese anders auf den Beginn einer
Arbitrierungsperiode als jede andere Einrichtung, die einen Buszugriff
versucht. Zu Beginn einer Arbitrierungsperiode setzt jede der
anderen Einrichtungen, die den Zugriff auf den Bus versucht,
ihren Prioritätswert auf die Arbitrierungsleiter. Die CPU
greift in diesen Prozeß nicht ein; mit dem Beginn der
Arbitrierungsperiode erst beginnt die CPU, den Bus zu verwenden.
-
In einem Ausführungsbeispiel der vorliegenden Erfindung, das
tatsächlich konstruiert wurde, ist die minimale
Arbitrierungsperiode 300 Nanosekunden lang. Ein Null-Wartestatus-Buszyklus
ist jedoch weniger als 300 Nanosekunden lang. Entsprechend
kann, wann immer die CPU belegt und so Zugriff auf den
Systembus erlangt, die CPU gleichzeitig mit dem Arbitrierungsprozeß
einen Zyklus vervollständigen.
-
In Übereinstimmung mit der vorliegenden Erfindung wird ein
Mehrfachbus-Mikrorechnersystem bereitgestellt, bestehend aus
einem Prozessor, einem Cache-Subsystem und einem Cachespeicher
mit beliebigem Zugriff, die durch einen CPU lokalen Bus
miteinander verknüpft sind, einem Systembus, einer Mehrzahl
anderer funktionaler Einheiten, die an den Systembus gekoppelt
sind, und einem Mittel, das den genannten CPU lokalen Bus und
den genannten Systembus miteinander koppeln, wobei das
genannte Cache-Subsystem weiterhin an den genannten Systembus
gekoppelt ist und auf Anforderung den Systembus freigibt,
charakterisiert durch eine Arbitrierungsüberwachung, die an
den genannten Systembus angeschlossen ist und die genannte
Freigabe des genannten Systembusses vom genannten
Cache-Subsystem anfordert, und dadurch, daß der genannte Systembus eine
Mehrzahl an Leitern umfaßt, die zur Arbitrierung des Zugriffs
auf den genannten Systembus zur Begrenzung der Dauer des
genannten Zugriffs bei Empfang des genannten Preempt-Signals
dienen, und durch eine Preempt-Signalquelle mit Eingaben, die
auf einen CPU lokalen Buszyklus reagieren, der länger ist als
eine minimale Dauer, um ein Preempt-Signal auf dem genannten
Systembus zu bestätigen.
-
Es folgt eine beispielhafte Beschreibung eines
Ausführungsbeispiel der vorliegenden Erfindung unter Verweis auf die
folgenden Begleitzeichnungen:
-
Figur 1 ist eine Gesamtansicht eines typischen
Mikrorechnersystems, das die vorliegende Erfindung verwenden kann;
-
Figur 2 ist ein detailliertes Blockdiagramm der Mehrzahl der
Komponenten eines typischen Mikrorechnersystems, das die
vorliegende Erfindung verwenden kann;
-
Figur 3 stellt dar, wie die Arbitrierungsüberwachung und die
CPU in Übereinstimmung mit einem Einzelbus-Mikrorechnersystem
verbunden sind;
-
Figur 4 stellt dar, wie die Arbitrierungsüberwachung, die CPU
und die Cachesteuerung in Übereinstimmung mit der vorliegenden
Erfindung verbunden sind;
-
Figur 5 stellt den Apparat dar, der zur CPU gehört und zur
Erzeugung eines Preempt-Signals dient;
-
Figur 6 stellt die Logik dar, die zur CPU gehört und zur
Erzeugung eines Signals CPUREQ dient, das zur Erzeugung eines
Preempt-Signals durch die CPU verwendet wird;
-
Figur 7 ist ein Timing-Diagramm, das mehrere
Arbitrierungsund Grant-Zyklen darstellt, von denen einer durch eine
generische Einrichtung Zugriff zum Systembus und von denen ein ande-
rer Zugriff zum Systembus durch die CPU über ein PREEMPT-
Signal ermöglicht.
-
Figur 8 zeigt das Verhältnis zwischen der zentralen
Arbitrierungsüberwachung 335 und den Arbitoren 336, die zu anderen
Einrichtungen gehören;
-
Figur 9 und 10 bilden zusammen ein Blockdiagramm einer
Arbitrierungsüberwachung 335; und
-
Figur 11 ist ein Timing-Diagramm zur Beschreibung der
Arbeitsweise von Figur 8.
-
Figur 1 zeigt ein typisches Mikrorechnersystem, in dem die
vorliegende Erfindung verwendet werden kann. Gemäß Darstellung
umfaßt das Mikrorechnersystem 10 mehrere Komponenten, die
miteinander verbunden sind. Im einzelnen ist eine Systemeinheit
an einen Bildschirm 20 (wie beispielsweise eine
herkömmliche Videoanzeige) gekoppelt und dient für diesen als Treiber.
Die Systemeinheit 30 ist ebenfalls an Eingabegeräte wie
beispielsweise eine Tastatur 40 und eine Maus 50
angeschlossen. Ein Ausgabegerät wie beispielsweise ein Drucker 60 kann
ebenfalls an die Systemeinheit 30 angeschlossen werden.
Schließlich kann die Systemeinheit 30 ein oder mehrere
Plattenlaufwerke wie beispielsweise das Plattenlaufwerk 70
umfassen. Wie nachfolgend beschrieben wird, reagiert die
Systemeinheit 30 auf Eingabegeräte wie beispielsweise die
Tastatur 40 und die Maus 50, und Ein- und Ausgabegeräte wie
beispielsweise das Plattenlaufwerk 70 zur Bereitstellung von
Signalen, um Ausgabegeräte wie beispielsweise den Bildschirm
20 und den Drucker 60 zu treiben. Natürlich ist dem Fachmann
auf diesem Gebiet bewußt, daß andere und herkömmliche
Komponenten zur Interaktivität ebenfalls an die Systemeinheit 30
angeschlossen werden können. In Übereinstimmung mit der
vorliegenden Erfindung umfaßt das Mikrorechnersystem 10 (wie
nachfolgend noch ausführlicher beschrieben werden wird) ein
Cachespeicher-Subsystem, so daß es einen CPU lokalen Bus gibt,
der mit einem Prozessor verbunden ist, sowie eine
Cachesteuerung und einen Cachespeicher, der selbst über einen Puffer an
einen Systembus gekoppelt ist. Der Systembus ist mit den
Einund Ausgabegeräten wie beispielsweise der Tastatur 40, der
Maus 50, dem Plattenlaufwerk 70, dem Bildschirm 20 und dem
Drucker 60 interaktiv verbunden. Des weiteren kann die
Systemeinheit 30 in Übereinstimmung mit der vorliegenden Erfindung
auch einen dritten Bus enthalten, der eine Micro-Channel-
Architektur (Micro Channel ist ein Warenzeichen der
International Business Machines Corporation) zur interaktiven
Verbindung zwischen dem Systembus und anderen Ein- und
Ausgabegeräten umfaßt.
-
Figur 2 ist ein Blockdiagramm auf hoher Ebene, das die
verschiedenen Komponenten eines Doppelbus-Mikrorechnersystems
darstellt. Ein CPU lokaler Bus 230 (bestehend aus Daten,
Adressen und Steuerkomponenten) ermöglicht die Verbindung
eines Mikroprozessors 225 (wie beispielsweise ein 80386),
einer Cachsteuerung 260 (die einen 82385 Cachecontroller
enthalten kann) und eines Cachespeichers mit beliebigem
Zugriff 255. An den CPU lokalen Bus 230 ebenfalls gekoppelt
ist ein Puffer 240. Der Puffer 240 ist selbst mit dem
Systembus 250 verbunden, der ebenfalls Adressen, Daten und
Steuerkomponenten umfaßt. Der Systembus 250 erstreckt sich zwischen
dem Puffer 240 und einem weiteren Puffer 253.
-
Der Systembus 250 ist ebenfalls an eine Bussteuerung und ein
Timing-Element 265 und einen DMA-controller 325 angeschlossen.
Ein Arbitrierungssteuerbus 340 koppelt die Bussteuerung und
das Timing-Element 265 sowie die Arbitrierungsüberwachung 335.
Der Hauptspeicher ist ebenfalls an den Systembus 250
angeschlossen. Der Hauptspeicher umfaßt ein Speichersteuerelement
351, einen Adressenmultiplexer 352 und einen Datenpuffer 353.
Diese Elemente sind mit den Speicherelementen 361 bis 364
interaktiv verbunden, wie dies in Figur 2 dargestellt ist.
-
Ein weiterer Puffer 267 ist zwischen dem Systembus 250 und
einem planaren Bus 270 gekoppelt. Der planare Bus 270 umfaßt
Adressen, Daten bzw. Steuerkomponenten. Entlang des planaren
Busses 270 gekoppelt sind mehrere Ein- und Ausgabeadapter und
weitere Komponenten wie beispielsweise der Bildschirmadapter
275 (der verwendet wird, um den Bildschirm 20 zu treiben), ein
Taktgeber 280, zusätzlicher Speicher mit beliebigem Zugriff
285, ein RS-232-Adapter 290 (der für serielle Ein- und
Ausgabeoperationen verwendet wird), ein Druckeradapter 295 (der
verwendet werden kann, um den Drucker 60 zu treiben), ein
Timer 300, ein Diskettenadapter 305 (der mit dem
Plattenlaufwerk 70 kooperiert), ein Interrupt-Controller 310 und der Nur-
Lese-Speicher 315. Der Puffer 253 stellt eine Schnittstelle
zwischen dem Systembus 250 und einem optionalem Bus wie
beispielsweise dem Micro-Channel-Bus 320 bereit, was durch die
Micro-Channel-Buchsen dargestellt ist. Geräte wie
beispielsweise der Speicher 331 können an den Bus 320 gekoppelt werden.
-
Die Figuren 8 bis 11 dienen zur Beschreibung des
Arbitrierungsmechanismus. Wir betrachten Figur 8. Beschrieben wird das
Verhältnis zwischen der Arbitrierungsüberwachung 335 und einer
lokalen Arbitereinheit 336, die für alle lokalen
Arbitereinheiten repräsentativ ist. Wenn ein Gerät im allgemeinen
Zugriff auf den Systembus 250 wünscht, um Daten zu übertragen,
empfängt eine lokale Arbitereinheit 336 ein Anforderungssignal
vom jeweiligen Gerät, zu dem diese Arbitereinheit gehört.
Dieses Anforderungssignal wird in ein /PREEMPT-Signal
umgewandelt,
das durch den lokalen Arbiter erzeugt wird, und über die
/PREEMPT-Leitung des Arbitrierungsbusses zur
Arbitrierungsüberwachung 335 und jedem der lokalen Arbiter übertragen. Im
speziellen Ausführungsbeispiel der vorliegenden Erfindung wird
darauf hingewiesen, daß die /PREEMPT-Leitungen in einer OR-
Operation zusammengefaßt werden; daher ist es für die
Arbitrierungsüberwachung 335 unerheblich, welches Gerät die
Anforderung erzeugt. Die Arbitrierungsüberwachung 335 erzeugt das
ARB/GRANT/-Signal zu einem geeigneten Zeitpunkt, der durch das
HLDA und +REFRESH-Speichersignal von einem Refresh-Controller
(nicht dargestellt) bestimmt wird, der dem Fachmann auf diesem
Gebiet bekannt ist, auf ein /PREEMPT-Signal von einem oder
mehreren der lokalen Arbiter 336. HLDA ist ein Signal des
Paares HLDA und HRQ (oder HOLD), das in einem Einzelbussystem
zwischen der Arbitrierungsüberwachung 335 und der CPU
ausgetauscht wurde. In Doppelbussystemen befinden sich diese
Signale zwischen der Arbitrierungsüberwachung und dem
Cachecontroller, was an 260 in Figur 2 dargestellt ist.
-
Sobald ein beliebiges Gerät den Systembus 250 verwenden
möchte, erzeugt es ein Anforderungssignal und sendet dieses an
den jeweiligen lokalen Arbiter 336, der dann ein /PREEMPT-
Signal über der /PREEMPT-Leitung des Arbitrierungsbusses
erzeugt. Wenn der Bus danach zu einem geeigneten Zeitpunkt
verfügbar wird, wie dies durch das HOLD- und das +REFRESH-
Signal vom Refresh-Controller festgestellt wird, erzeugt die
Arbitrierungsüberwachung 335 den +ARB-Status des ARB/GRANT/-
Signals über dem Arbitrierungsbus und sendet diesen zu jedem
der lokalen Arbiter 336. Bei Vorhandensein des +ARB-Status
treibt jeder der lokalen Arbiter 336, der Zugriff auf den
Systembus 250 wünscht, seine Prioritätsstufe auf entsprechende
Leitungen ARB0-ARB3 des Arbitrierungsbusses. Danach vergleicht
jeder der lokalen Arbiter, der Zugriff auf den Systembus 250
wünscht, seine angegebene Prioritätsstufe mit der
Prioritätsstufe auf dem Arbitrierungsbus und versucht nicht länger den
Zugriff auf den Bus, wenn seine Prioritätsstufe niedriger ist
als diejenige, die auf den Arbitrierungsbus getrieben wurde.
-
Am Ende des Arbitrierungszyklus versucht also nur noch
derjenige lokale Arbiter mit der höchsten Prioritätsstufe während
des Arbitrierungszyklus den Zugriff auf den Bus und gewinnt
dadurch die Steuerung über den Bus, wenn der GRANT/-Status von
der Arbitrierungsüberwachung 335 über die ARB/GRANT/-Leitung
empfangen wird.
-
Wir betrachten nun die Figuren 9 und 10. Eine ausführlichere
Schaltungsbeschreibung der Arbitrierungsüberwachung 335 werden
hier dargestellt. Die Arbitrierungsüberwachung 335 umfaßt eine
modifizierte Johnson-Klingel-Timing-Kette, bestehend aus den
Zählern 31 bis 34 und OR-Gatter 35, OR-Gatter 36, NAND-Gatter
37, Inverter 38 und OR-Gatter 39. Ausgehend von der Annahme,
daß der Bus in einem Leerlaufzustand beginnt, wobei die CPU
225 den Bus "besitzt", ihn jedoch nicht verwendet, wird die
Schaltungsoperation in Verbindung mit der Timing-Tabelle von
Figur 11 nachfolgend beschrieben. Im zuvor genannten Zustand
ist ARB/GPANT/ dann aktiv niedrig, und die
Arbitrierungsprioritätsstufen ARB0 bis ARB3 haben alle den Wert eins. Die
modifizierte Johnson-Klingel-Timing-Kette wird durch das OR-
Gatter 36 und das NAND-Gatter 37 vom +HLDA-Signal
zurückgesetzt gehalten. Wenn ein Gerät Zugriff auf den Bus benötigt,
wird das /PREEMPT-Signal aktiviert. Gemäß Darstellung in Figur
10 resultiert die Tatsache, daß das /PREENPT-Signal aktiv
wird, darin, daß die Ausgänge des Gatters ebenfalls positiv
werden, wodurch das Signal PROCESSOR HOLD REQUEST (+PROC HRQ)
dargestellt wird. Das Signal +ARB0 bis +ARB3 und ein Signal
+GRANT werden ebenfalls in das OR-Gatter von Figur 10
eingegeben, um zu gewährleisten, daß die CPU 225 Busübertragungen
durch andere Geräte nicht beeinträchtigt. Das Signal +PROC HRQ
führt dazu, daß +HLDA deaktiviert wird, was wiederum dazu
führt, daß das Rücksetzungssignal (das vom OR-Gatter 36
ausgegeben wird) aus den Zählern 31 bis 34 entfernt wird. Es wird
darauf hingewiesen, daß die Eingaben -S0, -S1, -CMD und -BURST
inaktiv sein müssen, damit +HLDA die zurückgesetzten Signale
aus den bereits erwähnten Zählern 31 bis 34 entfernen kann,
wie dies in Figur 11 dargestellt ist. Das Signal -S0 stellt
den WRITE-Zyklus dar, und das Signal
-S1 stellt den READ-Zyklus dar. Das Signal -CMD wird durch den
derzeitigen Bus-Master eine angegebene Dauer nach -S0 oder -S1
erzeugt. Während der READ-Zyklen weist -CMD das Slave-Gerät
an, READ-Daten auf den Bus zu plazieren, und während der
WRITE-Zyklen wird -CMD zur Validierung von WRITE-Daten
aktiviert.
-
Beim nächsten Taktimpuls (20 MHz), nachdem +HLDA deaktiviert
wurde, wird der Ausgang des Zählers 31 eingestellt, was dazu
führt, daß der Ausgang des OR-Gatters 39 hoch wird (+ARB),
wodurch eine Arbitrierungs-Timingperiode angezeigt wird. Der
Ausgang des OR-Gatters 39 bleibt hoch, bis der Ausgang des
Zählers 33 eine kurze Zeit, nachdem der Ausgang des Zählers 34
hoch wird, niedrig wird. Dadurch wird ein Timing-Impuls von
300 Nanosekunden für das Signal ARB/GRANT erzeugt. Der Ausgang
von Zähler 34 bleibt eingestellt, bis das Gerät entweder durch
Aktivierung von -S0 oder von -S1 einen Buszyklus beginnt. Der
Ausgang wird danach neu eingestellt, und die Zähler 31 bis 34
sind bereit, am Ende des derzeitigen Buszyklus ein neues
Timing zu beginnen. Wenn kein Gerät einen Busdienst anfordert,
kehrt der Bus in den Leerlaufzustand zurück und die Steuerung
wird wieder dem Prozessor übertragen. HLDA wird reaktiviert
und der Bus ist nun für Prozessoroperationen verfügbar.
-
Figur 3 zeigt die interaktive Verbindung zwischen einer 80386
CPU wie beispielsweise dem Mikroprozessor 225 und der
Arbitrierungsüberwachung 335 in einem
Einzelbus-Mikrorechnersystem. Das Ausgangssignal ARB/GRANT/ von der Überwachung ist
das Signal, das definiert, ob der Arbitrierungsmechanismus im
Arbitrierungsstatus (während dem Geräte, die Zugriff auf die
Systemressource wünschen, ihre Prioritätsstufe auf die
Arbitrierungsleiter plazieren) oder in einer Grant-Phase sind (in
der das Gerät, das Zugriff auf die gemeinsame Ressource
erhält, diese Ressource für die Ausschließung anderer Geräte
verwenden kann, die möglicherweise einen Zugriff versucht
haben). Ein weiteres Eingangssignal an die
Arbitrierungsüberwachung
335 ist das PREEMPT-Signal, das bereits beschrieben
wurde. Der Eingang an die Arbitrierungsüberwachung 335, der
durch ARB[0-3] dargestellt ist, ist der Arbitrierungsleiter,
die während der Arbitrierungsphase von Geräten getrieben
werden, die Zugriff mit ihren eigenen Prioritätsstufen
versuchen. Die Ein- und Ausgangsverbindungen auf der linken Seite
der Arbitrierungsüberwachung 335 zeigen ihre interaktive
Verbindung mit dem 80386 in einem typischen
Einzelbus-Mikrorechnersystem. Die Signale HLDA und HRQ (die manchmal als HCLD
bezeichnet werden, sind Handshake-Mechanismen, mit denen die
Arbitrierungsüberwachung 335 Zugriff auf die Systemressource
anfordern können, mit dem Ziel, den 80386 (HRQ) auszuschlie-
ßen. Wenn der 80386 (HLDA) anerkennt, dann kann die
Arbitrierungsüberwachung 335 den Zugriff zur Ressource verteilen. In
Einzelbus-Mikrorechnersystemen kann die CPU nicht für sich
selbst belegen. Dadurch entsteht die unerwünschte Möglichkeit,
daß die CPU durch ein Gerät, das platzen darf, aus der
gemeinsamen Ressource ausgesperrt werden kann.
-
Figur 4 ist ein Blockdiagramm, das ausgewählte interaktive
Verbindungen in einem Doppelbus-Mikrorechnersystem zeigt,
welches die 80386 CPU und einen 82385 Cachecontroller
verwendet. Die Ein- und Ausgabeverbindungen auf der rechten Seite
der Arbitrierungsüberwachung 335 in Figur 4 sind mit denen in
Figur 3 identisch werden daher nicht mehr beschrieben. Der
wichtige Punkt, der in Figur 4 dargestellt ist, besteht darin,
daß die Überwachung der Arbitrierungsüberwachung 335 nun durch
den 82385 Cachecontroller implementiert wird, da genau an
dieses Element die Signale HRQ und HLDA angeschlossen werden.
Abgesehen von einigen anderen Anordnungen könnte dann die
80386 CPU aus der Verwendung der gemeinsamen Ressource
ausgefroren werden. Die vorliegende Erfindung stellt diesen anderen
Mechanismus bereit und tut dies zum größten Teil, ohne andere
Geräte zu beeinträchtigen, die auf die gemeinsame Ressource
zugreifen.
-
Die Figuren 5 und 6 stellen zusammen dar, wie das Signal
CPREEMPT und sein Vorgänger CPUREQ erzeugt werden.
-
Wir betrachten zunächst Figur 6. Die Logik darin kann als
Bestandteil der Cachesteuerung 260 betrachtet werden. Die
Logik wird bereitgestellt, um das Signal CPUREQ zu erzeugen,
das als Steuersignaleingabe an den Steuerteil des Puffers 240
betrachtet werden kann. Das Steuersignal CPUREQ wird aus den
Eingängen entwickelt, die links dargestellt sind, darunter
/BUSYCYC 386, READYI, CLK, RESET und /(/M/IO & A31). Letzteres
Signal ist die dekodierte Adresse für den Coprozessor. Die
Signale BUSYCYC 386, READYI und /(/M/IO & A31) sind aktive
niedrige Signale, so daß beispielsweise, wenn der Flip-Flop
601 eingestellt wird (durch eine hohe Eingabe an seinem D-
Eingang), seine Ausgabe hoch ist und das Signal CPUREQ niedrig
(aktiv) ist. Zusätzlich zum Flip-Flop 601 enthält die Logik
von Figur 6 ein OR-Gatter 602, drei AND-Gatter 603-605 und die
Inverter 606-608.
-
Im wesentlichen erkennen die Eingänge an das AND-Gatter 603
einen 80386-Zyklus, der sich über den Nullwartestatus hinaus
erstreckt, und der nicht gleichzeitig ein Zyklus ist, der dem
Koprozessor zugeteilt ist. Sobald der Zustand erkannt ist,
wird der Flip-Flop 601 eingestellt und kann nur mit einer
Taktdauer CLK2 zurückgesetzt werden, wenn dieser Zustand zu
Ende ist. Die Gatter 604 und 605 werden bereitgestellt, um das
Flip-Flop 601 zurückzusetzen, wenn CLK hoch ist und READYI
niedrig (aktiv) ist. Dieser Zustand tritt auf, wenn ein CPU-
Buszyklus abgeschlossen ist.
-
Ein CPU lokaler Buszyklus, der sich über einen Nullwartestatus
hinaus erstreckt (und der ebenfalls kein einem Koprozessor
zugeordneter Zyklus ist), ist ein Zyklus, der Zugriff auf den
Systembus erfordert. Entsprechend wird das CPUREQ unter diesen
Umständen aktiv, das heißt, es wird niedrig. Die Wirkung
dieses Signals wird in Figur 5 gezeigt.
-
Figur 5 zeigt Logik, die zum Systembus 250 gehört. Gemäß
Abbildung in Figur 5 besitzt das Steuerelement des Puffers 240
eine Ausgabe CPUREQ (die vom selben wie dem in Figur 6
gezeigten Signal getrieben wird). Das CPUREQ ist eine Eingabe an ein
Gatter 501, dessen Ausgabe /CPREEMPT in Wirklichkeit ein
Preempt-Signal ist, das vom 80386 erzeugt wurde. Wie aus der
Darstellung in Figur 5 ersichtlich ist, ist das Signal
CPREEMPT an den PREEMPT-Leiter gekoppelt, der einer der
Eingänge an die Arbitrierungsüberwachung 335 (siehe Figur 3
oder 4) ist. Das Signal /CPREEMPT wird durch die in Figur 5
dargestellte Logik einschließlich der Gatter 501-503 erzeugt.
Eine zweite Eingabe an das Gatter 501 ist die Ausgabe von
Gatter 503, von dem eine Eingabe das Signal ARB/GRANT/ (die
mit der Ausgabe der Arbitrierungsüberwachung 335 identisch
ist). Die andere Eingabe ist ENCPUPREEMPT. Letztere ist eine
Ausgabe des 80386. Wenn dieses Signal inaktiv ist, hindert es
/CPREEMPT daran, jemals aktiv zu werden. Wenn also
ENCPUPREEMPT inaktiv ist, kann der 80386 nicht belegen.
ENCPUPREEMPT kann durch einen vom Benutzer einstellbaren
Schalter oder einen Softwareschalter gesteuert werden,
abhängig von den Anforderungen anderer Systemgeräte und/oder Soft-
Ware. Unter normalen Umständen ist ENCPUPREEMPT aktiv, wodurch
der 80386 in der Lage ist, zu belegen. Wenn das ARB/GRANT/
anzeigt, daß sich der Arbitrierungsprozeß in der Grant-Phase
befindet (und ENCPUPREEMPT aktiv ist), dann ist die Ausgabe
des Gatters 503 aktiv. Eine aktive Ausgabe des Gatters 503
zusammen mit einem aktiven CPUREQ ermöglicht die Erzeugung
eines aktiven /CPREEMPT. Das Gatter 503 verhindert die
Erzeugung eines aktiven /CPREEMPT während der Arbitrierungsphase,
und ermöglicht lediglich ein aktives /CPREEMPT während der
Grant-Phase des Arbitrierungsprozesses. Das Gatter 502 wird
zur Überwachung des Status der Arbitrierungsleiter verwendet
und verhindert die Erzeugung eines aktiven /CPREEMPT, wenn
alle Leiter (aktiv) hoch sind, wodurch angezeigt wird, daß
andere Geräte nicht für den Bus arbitrieren, das heißt, die
CPU besitzt die gemeinsame Ressource.
-
Entsprechend kann durch die in den Figuren 5 und 6
dargestellte
Logik für Zyklen auf dem CPU lokalen Bus, die nicht
für den Koprozessor bestimmt sind und die über eine minimale
Dauer (Nullwartestatus) hinaus reichen, die CPU belegen und
tut dies, wenn der Arbitrierungsmechanismus in seiner Grant-
Phase ist. Die Auswirkung dieser Belegung wird nachfolgend in
Verbindung mit den Figuren 7A-7E beschrieben.
-
Die Figuren 7A-7E stellen folgendes dar:
-
1) Verwendung des Systembusses durch ein Burst-Gerät (a-d),
-
2) Belegung dieses Geräts durch ein typisches Gerät unter
Verwendung des Signals PREEMPT (b-h),
-
3) Einnahme des Busses durch die CPU unter Verwendung des
Signals /CPREEMPT (k-o), und
-
4) gleichzeitig mit der Verwendung des Busses durch die CPU,
Arbitrierung zur Verwendung des Busses durch ein anderes Gerät
(m).
-
Zum Zweck der Darstellung werde angenommen, daß ein Burst-
Modusgerät die Steuerung des Systembusses übernommen hat, wie
dies (a) in Figur 7D dargestellt ist. Wenn ein anderes Gerät
entlang des Systembusses PREEMPT (b) bestätigt,
vervollständigt das Burst-Gerät, das derzeit die Steuerung ausführt,
seine derzeitige Übertragung, wie dies (c) in Figur 7C
dargestellt ist. Bei der Beendigung der derzeitigen Übertragung
entfernt das Burst-Gerät, das die Steuerung des Systembusses
aufgibt, sein Burst-Signal von der Burst-Linie, wie dies an
(d) in Figur 7D dargestellt ist. Dieses Burst-Gerät nimmt
nicht am nächsten Arbitrierungszyklus teil. Die
Arbitrierungsüberwachung 335 plaziert daraufhin das Signal ARB/GRANT/ in
den ARB-Status (e) in Figur 7A. Derselbe Übergang stellt den
Beginn eines anderen Arbitrierungszyklus dar und die
Arbitrierung für den Systembus beginnt an (f) in Figur 78. Nachdem das
Signal ARB/GRANT/ niedrig ist, wird die Steuerung des
Systembusses
dem neuen Gerät überlassen, wie dies an (g) in Figur 7A
dargestellt ist. Das neue Gerät, das die Steuerung des
Systembusses übernommen hat, entfernt daraufhin sein Signal PREEMPT
auf das Signal PREEMPT hin, wie dies an (h) in Figur 7E
dargestellt wird.
-
Einige Zeit später bestätigt im Beispiel der Figuren 7A-7E und
basierend auf den Bedingungen, die auf dem CPU lokalen Bus 230
wiedergegeben werden, die CPU das Signal /CPREEMPT, was in
PREEMPT (k) in Figur 7E wiedergegeben wird. Wie bereits
beschrieben wurde, resultiert dies in einem neuen
Arbitrierungszyklus, der gemäß der Darstellung an (1) in Figur 7A
beginnt. Der Arbitrierungszyklus, wie in Figur 7A dargestellt,
erstreckt sind von (l-o). Während dieses Arbitrierungszyklus
verwendet die CPU den Systembus, und am Beginn dieses Zyklus
nimmt die CPU die Bestätigung seines Signals PREEMPT (n) in
Figur 7E zurück. Während die CPU den Systembus verwendet,
arbitrieren andere Geräte, die einen Zugriff auf den Systembus
wünschen, für diese Ressource, beginnend bei (m) in Figur 7B.
Am Ende des CPU-Zyklus, wenn die Verwendung des Systembusses
(o) abgeschlossen ist, ist eine neue Arbitrierung
abgeschlossen, so daß unmittelbar danach ein beliebiges anderes Gerät
(wenn ein solches den Zugriff auf den Systembus versucht hat)
diese Ressource während der Dauer, die an (o) in Figur 7A
beginnt, verwenden kann.
-
Das Signal /CPREEMPT ist nur dann aktiv, wenn sich ein CPU-
Buszyklus über eine vorbestimmte Dauer hinweg erstreckt
(beispielsweise über einen Nullwartestatus). Während der
Arbitrierungsphase (ARB/GRANT/hoch) wird die CPU-Cachesteuerung
260 aus dem Haltstatus gelöst, indem die
Arbitrierungsüberwachung 335 HRQ fallen läßt und die Möglichkeit erhält, einen
oder mehrere Zyklen zu durchlaufen.
-
Die Beendigung eines CPU-Zyklus, die die Möglichkeit hat, den
Systembus unter Verwendung des PREEMPT-Mechanismus zu
verwenden, wird erkannt, wenn READYI aktiv und CLK hoch ist. Durch
die Logik von Figur 6 wird unter diesen Bedingungen das Flip-
Flop 601 zurückgesetzt und CPUREQ wird inaktiv.
-
Die Logikgleichungen, auf die oben bezug genommen wurde,
werden unmittelbar nachfolgend reproduziert. In dieser
Aufführung besitzen die Symbole folgende Bedeutung:
Symbol
Definition
Negation
ein registrierter Term, gleich
ein kombinatorischer Term, gleich
logisch AND
logisch OR
Logiksignale
Arbitrierungsanforderungen
Arbitrierungs-Grant
Dekodierte math. Koprozessoradresse
Siehe Figur
Programmierbares Bit zur Aktivierung oder
Deaktivierung der Möglichkeit der CPU, /CPREEMPT zu erzeugen.
Definiert in den anhängigen Anmeldungen,
dieser Anmeldung in dem Maße modifiziert,
es von /CPREEMPT erzeugt werden kann.
Logikgleichungen
-
In den vorangegangenen Logikgleichungen werden die folgenden
Signale beschrieben oder in den zitierten
Intel-Veröffentlichungen angeführt:
-
ADS
-
BADS
-
BRDYEN
-
BREADY
-
(BW/R) bezeichnet als BW/R, die Klammern zeigen an, daß
der gesamte Term ein Signal darstellt
-
CLK
-
READYO
-
RESET
-
WBS
-
(W/R) bezeichnet als WIR, die Klammern zeigen an, daß
der gesamte Term ein Signal darstellt
-
Wenn ADS aktiv ist, zeigt es eine gültige Adresse auf dem CPU
lokalen Bus 230 an. Wenn BADS aktiv ist, zeigt es eine gültige
Adresse auf dem Systembus 250 an. BRDYEN ist eine Ausgabe des
82385, die ein Vorläufer der Signale READY ist. BREADY ist ein
READY-Signal vom Systembus 250 zum CPU lokalen Bus 230. BW/R
definiert ein Write oder Read des Systembusses 250. CLK ist
ein Prozessortaktsignal, das mit dem Prozessor 225 in Phase
ist. READYO ist eine weitere Ausgabe des 82385 in der Reihe
der Ready-Signale. Die Bedeutung von RESET ist eindeutig. WBS
zeigt den Zustand des Write-Puffers an. (W/R) ist das
herkömmliche Write- oder Read-Signal für den CPU lokalen Bus 230.
-
Die Gleichungen (1) - (11) definieren:
-
BREADY385
-
BT2
-
BUFWREND
-
BUSCYC385
-
BUSCYC386
-
CPUNA
-
LEAB
-
MISS1
-
PIPECYC385
-
PIPECYC386
-
CPUREADY
-
bezüglich der definierten Signale, die in der zitierten Intel-
Veröffentlichung und NCA, NACACHE, READY0387 und RDY387PAL
beschriebenen oder angeführten Signale.
-
BREADY385 ist ein Signal wie BREADY, das in einer tatsächlich
konstruierten Ausführung so modifiziert wurde, daß ein 64K-
Cache untergebracht werden konnte. Im Fall eines 32K-Caches
(laut Empfehlung des Herstellers) kann BREADY anstelle von
BREADY385 verwendet werden.
-
BT2 gibt den Status des Systembusses 250 wieder. Der Status
BT2 ist ein Status, der in den zitierten
Intel-Veröffentlichungen definiert ist.
-
BUFWREND stellt das Ende eines gepufferten Schreibzyklus dar.
-
BUSCYC385 gibt ebenfalls den Status des Systembusses 250
wieder. Es ist hoch für die Busstati BTI, BT1, BTIP und
niedrig für die Busstati BT2, BT2P und BT2I (auch hierbei handelt
es sich um Busstati, die in den zitierten
Intel-Veröffentlichungen definiert sind).
-
BUSCYC386 ist während der Stati TI, T1, T1P, T2I des CPU
lokalen Busses hoch und während T2 niedrig. Es ist auch für T2P
niedrig, wenn nicht T2I zuerst auftaucht.
-
CPUNA ist ein Signal an den 80386, das eine Pipeline-Operation
ermöglicht.
-
LEAB ist die Verriegelungsaktivierung (in den Puffer 240) für
postierte Write-Operationen.
-
MISS1 ist aktiv und definiert den ersten Zyklus in einem
Doppelzyklus zur Behandlung und Weitergabe von 64
Bitleseoperationen an cachefähige Geräte.
-
PIPECYC385 ist aktiv während BTLP (dies ist ein Busstatus, der
in den zitierten Intel-Veröffentlichungen angeführt wird).
-
PIPECYC386 ist niedrig während des Status TIP des CPU lokalen
Busses 230.
-
CPUREADY ist die Ready-Eingabe an den 80386.
-
NCA ist ein Signal, das durch Dekodierung der Adreßkomponente
auf dem CPU lokalen Bus 230 erzeugt wird, um, wenn aktiv,
einen nicht cachefähigen Zugriff wiederzugeben. Die
Cachefähigkeit
wird bestimmt durch eine Tag-Komponente (A31 bis A17)
und durch programmierbare Informationen, die definieren,
welche Tags, wenn überhaupt, sich auf cachefähige im Gegensatz
zu nicht cachefähigen Adressen beziehen.
-
NACACHE ist ein Signal, das dem Signal BNA ähnelt. BNA ist ein
systemerzeugtes Signal, das vom CPU lokalen Bus 230 eine
nächste Adresse anfordert und in den zitierten
Intel-Veröffentlichungen referenziert ist. NACACHE unterscheidet sich von BNA
lediglich in der Tatsache, daß BNA für 32K Cache erzeugt
wurde, während NACACHE für einen 64K-Cache erzeugt wurde.
Solange der Cache-Speicher 32K ist, wie dies in den
Intel-Veröffentlichungen angegeben ist, könnte das hier angeführte
Signal NACACHE durch das Signal BNA ersetzt werden.
-
READYO387 ist die fertige Ausgabe des 80387 math.
Koprozessors.
-
RDY387PAL ist eine Ausgabe externer Logik, die dann verwendet
wird, wenn kein 80387 math. Koprozessor installiert ist, um
eine durch dieses Fehlen bedingte Beeinträchtigung von
Systemoperationen zu verhindern.
-
Daher ist ersichtlich, daß durch die Anwendung der
vorliegenden Erfindung in einem Doppelbus-Mikrorechnersystem unter
Verwendung eines 80386-Prozessors und eines
82385-Cachecontrollers der Prozessor unter bestimmten Bedingungen die
Möglichkeit hat, für die Verwendung des Systembusses unter
bestimmten Umständen zu belegen. Bei lokalen Buszyklen, die
über eine vorbestimmte Dauer hinaus gehen, kann der Prozessor,
unter der Bedingung, daß es andere Benutzer gibt, die den
Zugriff auf die Ressource versuchen, und daß die option
Preempt aktiviert wurde (ENCPUPREEMPT), /CPREEMPT bestätigen.
Wenn jedoch das Preempt wirksam wird (wie dies dem Prozessor
durch die Arbitrierungsüberwachung signalisiert wird), dann
treten gleichzeitig zwei Ereignisse auf. Das erste Ereignis
ist, daß der Prozessor auf den Systembus zugreift. Dieser
Zugriff kann keine anderen möglichen Busbenutzer
beeinträchtigen, da während der Dauer des Prozessorzugriffs andere
Benutzer, die einen Zugriff versuchen, sich in einer
Arbitrierungsphase befinden. Daher können gleichzeitig mit dem Zugriff auf
den Systembus durch den Prozessor andere Benutzer nach der
Verwendung des Busses durch den Prozessor für Zugriff auf die
Grant-Phase arbitrieren. Entsprechend hat der Prozessor unter
Verwendung der vorliegenden Erfindung die Möglichkeit, den
Systembus auch dann zu verwenden, wenn andere Benutzergeräte
gleichzeitig den Zugriff auf den Bus versuchen. Durch
Überlagerung der Verwendung des Busses durch den Prozessor mit der
Arbitrierungsphase (in die andere Geräte eingetreten sind),
werden die Auslastung und die Leistung des Busses verbessert.