-
Die
Erfindung betrifft ein einem Busarbitrationsverfahren nachgeschaltetes
Verfahren zur dezentralen Überwachung
des Zugriffs auf gemeinsam nutzbare Komponenten eines Multimikrocomputersystems.
-
In
einem Multimikrocomputersystem sind die einzelnen Mikrocomputer über einen
gemeinsamen (globalen) Bus miteinander verbunden, an welchen weitere,
allgemein nutzbare Systemkomponenten wie Massenspeicher, Peripheriebausteine
und Eingabe/Ausgabe-Schnittstellen angeschlossen sind. Neben einem
globalen Speicher, in welchem für
mehrere Mikrocomputer bedeutsame Daten geführt werden, sind oft auch noch
weitere, ebenfalls mit dem gemeinsamen Bus verbundene Speicher vorhanden, auf
welche einerseits jeweils ein Mikrocomputer über einem nur ihm zugeordneten
lokalen Bus zugreift, während
andererseits die übrigen
Mikrocomputer auf diesen – auch
mit "Dual-Port-Speicher" charakterisierten – Speicher über den
gemeinsamen Bus zugreifen können.
Die Kommunikation der einzelnen Mikrocomputer untereinander erfolgt
vorwiegend unter Verwendung dieser Dual-Port-Speicher. Jeder Mikrocomputer
kann zur Koordinierung seiner Zugriffe ein Belegungssignal für den ihm
zugeordneten Dual-Port-Speicher oder den globalen Bus aktivieren, mit
welchem er nachfolgende Zugriffsversuche anderer Mikrocomputer vereiteln
und so die betreffende Systemkomponente ausschließlich für sich reservieren
kann. Das Belegungssignal – auch
als "LOCK-Signal" bezeichnet – und, seine
Aufhebung bzw. Abschaltung werden softwaregesteuert genutzt.
-
Eine
falsche Nutzung des LOCK-Signals besteht darin, daß es zur
Durchführung
einer zu großen Anzahl
von Zugriffen zu lange aktiviert wird oder zu spät oder gar nicht abgeschaltet
wird, so daß die
anderen Mikrocomputer in der Nutzung der entsprechenden Systemkomponente über Gebühr beeinträchtigt werden.
-
Eine
weitere Art von softwarebedingten Nutzungsfehlern des LOCK-Signals
ergibt sich durch den Einsatz der Dual-Port-Speicher und der damit verbundenen Mehrbusstruktur
des Multimikrocomputersystems und ist unter der Bezeichnung "DEAD LOCK" bekannt, womit eine
Selbsthemmung bzw. eine nicht ohne Neustart des Systems auflösbare gegenseitige
Behinderung der einzelnen Mikrocomputer verstanden wird.
-
Die
Fehlnutzung des LOCK-Signals eines zugreifenden Mikrocomputers brachte
bisher in einem anderen zugriffswilligen Mikrocomputer dessen Quittierungsüberwachung
zum Ansprechen, welche das Ausbleiben des Quittierungssignals auf
seinen Zugriffsversuch feststellt. Abgesehen davon, daß diese
Fehlermeldung nicht beim Verursacher der Fehlnutzung entsteht, sondern
beim "schuldlosen" Mikrocomputer und
der Verursacher daher zunächst
nicht geortet werden kann, verliert sie auch den Charakter der Eindeutigkeit,
denn sie soll nur bei einem Defekt oder dem Fehlen einer mit dem
Zugriff angesprochenen Baugruppe, also bei Hardware-Fehlern auftreten.
Entsprechend mühsam
und zeitaufwendig gestaltet sich dann die Fehlerdiagnose, denn nach
Ansprechen der Quittierungsüberwachung
bei einem LOCK-Fehler muß zunächst mit
Sicherheit ausgeschlossen werden können, daß ein Hardeware-Fehler vorliegt
und zur darauffolgenden Nachbesserung der fehlerhaften Software
sind die Programme sämtlicher
Mikrocomputer in ihrer gegenseitigen zeitlichen Durchdringung zu
untersuchen.
-
Die
EP 0 382 469 A2 beschreibt
ein Computersystem mit Buszugriff-Arbitrierung, welches eine Vielzahl
von Geräten
umfaßt,
die gemeinsam einen Bus benutzen. Jedes der Geräte legt, wenn es Zugriff zu
dem Bus braucht, ein Anforderungssignal an den Bus an. Eine mit
dem Bus gekoppelte Arbitrierungsschaltung erfaßt jedes solches Anforderungssignal und
legt an den Bus ein Arbitrierungssignal an, um eine Arbitrierungsbedingung
einzurichten. Jedes der Geräte
legt in Reaktion auf das Arbitrierungssignal ein Prioritätssignal
an und eines der Geräte,
das das höchste
Prioritätsniveau
anlegt, erlangt Kontrolle über
den Bus. Dabei enthält
eines der Geräte
eine Zeitschaltung, um zu verhindern, daß es das Anforderungssignal
während
eines ausgewählten
Zeitraumes nach Abschluß des
Gebrauchs des Busses anlegt.
-
Die
Erfindung stellt sich daher die Aufgabe, ein einem Busarbitrationsverfahren
nachgeschaltetes Verfahren der angegebenen Art zu Schaffer um Ort
und Ursache von Zugriffsstörungen
unterscheidbar nach Belegungsfehlern und Hardwarefehlern zu erkennen
und diagnostizierbar zu machen sowie im Falle von Belegungsfehlern
die Auswirkungen derselben auf den verursachenden Mikrocomputer
zu begrenzen.
-
Erfindungsgemäß wird diese
Aufgabe mit den im Hauptanspruch angegebenen Maßnahmen gelöst. Damit kann bei Zugriffsstörungen die
Beeinträchtigung
von Dynamik und Leistung des Multimikrocomputersystems vermindert
und die Fehlerbehebung erleichtert werden.
-
Die
Erfindung samt ihren weiteren Ausgestaltungen, welche in Unteransprüchen gekennzeichnet
sind, soll nachstehend anhand der Figuren näher erläutert werden. Dabei zeigt
-
1 eine beispielhafte Konfiguration
eines Multimikrocomputersystems,
-
2 den prinzipiellen Aufbau
eines nach dem erfindungsgemäßen Verfahren
arbeitenden Mikrocomputers,
-
3 eine zusätzliche
Ausgestaltung zum Erkennen möglicher
DEAD-LOCK-Situationen.
-
In
dem in 1 dargestellten
Multimikrocomputersystem 1 sind an einen gemeinsamen Kommunikationsbus
GB vier Mikrocomputer MC1 bis MC4, ein Speicher GM sowie eine Eingabe/Ausgabe-Schnittstelle
IF angeschlossen. Man bezeichnet einen solchen gemeinsamen Kommunikatinsbus auch
als globalen Bus und den allen Mikrocomputern in gleicher Weise
zugänglichen
Speicher GM als globalen Speicher. Den Mikrocomputern MC1 und MC3 sind
jeweils auch noch über
nur ihnen zugeordnete (lokale) Busse LB1 bzw. LB3 zugängliche
Speicher DPM1 bzw. DPM3 zugeordnet, welche als sogenannte Dual-Port-Speicher
auch noch mit dem Globalbus GB in Verbindung stehen. Außerdem steht
dem Mikrocomputer MC3 auch noch ein rein lokaler, mit LM3 bezeichneter
Speicher zur Verfügung,
welcher für
ihn ebenfalls über
seinen lokalen Bus LB3 erreichbar ist. Jeder der beiden Mikrocomputer
MC1 und MC3 greift über
seinen lokalen Bus LB1 bzw. LB3 auf den ihm zugeordneten Dual-Port-Speicher
DPM1 bzw. DPM3 zu, während
die anderen Mikrocomputer nur über den
globalen Bus GB auf diese Speicher zugreifen können. Die Kommunikation zwischen
den einzelnen Mikrocomputern, d.h. der Datenaustausch erfolgt immer über die
Speichereinheiten, die von mehreren Mikrocomputern angesprochen
werden können,
im vorliegenden Beispiel also über
den gemeinsamen Speicher GM und die Dual-Port-Speicher DPM1 und DPM3.
-
2 gibt den Aufbau eines
nach dem erfindungsgemäßen Verfahren
arbeitenden Mikrocomputers wieder. Dieser könnte beispielsweise der in 1 mit MC1 bezeichnete Mikrocomputer
sein. Charakteristisch für
ihn ist, daß er
an den globalen Bus GB angeschlossen ist und außerdem über einen lokalen, d.h. nur
ihm zugeordneten Bus LB1, mit dem Dual-Port-Speicher DPM1 verbunden
ist, wobei letzterer auch noch mit dem gemeinsamen, globalen Bus GB
in Verbidung steht. Über
den lokalen Bus LB1 kann der Mikrocomputer MC1 auf den ihm zugeordneten
Dual-Port-Speicher
DPM1 zugreifen, während er über den
globalen Bus GB auf den gemeinsamen Speicher GM bzw. andere gemeinsame
nutzbare Komponenten wie z.B. die Eingabe/Ausgabe-Schnittstelle
IF oder die anderen Mikrocomputer zugeordneten Dual-Port-Speicher
zugreift.
-
In
der 2 ist mit 2 der
Prozessor des Mikrocomputers MC1 bezeichnet, welcher im wesentlichen
eine Zentraleinheit mit ihrem Arbeitsspeicher enthält. Vom
Prozessor 2 können
auf den lokalen Bus LB1 und auf den gemeinsamen Bus GB Daten ausgegeben
bzw. auf die an diese Busse angeschlossenen Speichermedien zugegriffen
werden. Der Zugriff erfolgt im einzelnen in der Weise, daß nach einer
Zugriffsanforderungssignal ALE bzw. bei Zugriffarbitrierung in Bezug
auf den globalen Bus GB nach einem von einer Priorisierungseinrichtung 3 ausgegebenen Zuteilungssignal
AEN die Leitungen der entsprechenden Adreßbusse mit der Zugriffsadresse
beaufschlagt werden und nach Erhalt des vom angesprochenen Speichermedium
an den Prozessor abgegebenen Quittierungssignals LRDY bzw. GRDY
eine Schreib- oder Leseoperation mit der adressierten Speicherstelle
ausgeführt
wird. Der Signalzustand auf der mit LW/R bzw. GW/R bezeichneten
Steuerleitung des Prozessors 2 bestimmt dabei, ob eine
Leseoperation oder eine Schreiboperation durchgeführt wird.
Für den
Fall, daß mehrere
Zugriffe nacheinander auf dasselbe Speichermedium erfolgen sollen, werden
vom Prozessor die Signale LLOCK' bzw. GLOCK' ausgegeben, mit
denen die Belegungssignale LLOCK bzw. GLOCK wirksam werden. Nach
Beendigung der Zugriffe wird das jeweilige Belegungssignal inaktiviert
und so der Bus bzw. das Speichermedium für Zugriffe anderer Mikrocomputer
freigegeben.
-
Erfindungsgemäß wird nun
für eine
hardwareseitige Begrenzung der softwaregesteuerten Belegungszeit
gesorgt. Dies geschieht mittels der dem lokalen Bus LB1 bzw, dem
globalen Bus GB zugeordneten Timern LBT bzw. GBT. Diese Timer werden
jeweils gestartet vom Ausgangssignal einer bistabilen Kippstufe 4 bzw. 5, welche
gesetzt werden, wenn nach einem vom Prozessor 2 ausgegebenen Signal
LLOCK' bzw. GLOCK' das Quittierungssignal LRDY
bzw. GRDY eintrifft und zurückgesetzt
werden, wenn diese Signale verschwinden, wobei dann auch die Timer
LBT und GBT jeweils über
ihren Reset-Eingang zurückgesetzt
werden. Sollte jedoch nach Starten der Timer LBT bzw. GBT eine Zeit
vergangen sein, welche größer ist
als eine bestimmte maximale Belegungszeit TLOCK, dann geben diese
Timer ein Signal aus, mit welchen UND-Glied 6 bzw. 7 gesperrt werden
und so eine Inaktivierung des jeweiligen Belegungssignals LLOCK
für den
lokalen Bus bzw. GLOCK für
den globalen Bus GB, erzwingen. Bei einem solchen Ansprechen der
Timer LBT und GBT wird gleichzeitig auch der Interrupteingang NMI
des Prozessors 2 aktiviert, um ihn zu einer entsprechenden
Behandlung dieses Software-Nutzungsfehlers zu veranlassen. Auch
kann das Auftreten dieses Fehlers mittels eines Anzeigeinstrumentes
AZS visualisiert werden. Auf diese Weise wird sichergestellt, daß der einzelne
Mikrocomputer jeweils nur für
die bestimmte maximale Zeit TLOCK seinen lokalen Bus LB1 bzw. den
globalen Bus GB belegen kann und nicht eine unbegrenzte Anzahl von
Schreib-Leseoperationen unter Verdrängung der übrigen Mikrocomputer des Systems
durchführt.
Als zweckmäßig hat
es sich gezeigt, etwa 100 aufeinanderfolgende Schreib-Leseoperationen
zuzulassen und die maximale Belegungszeit TLOCK dementsprechend
zu wählen.
-
Zur Überwachung
der Wartezeit, die nach einer Zugriffsanforderung des Mikrocomputers
für den lokalen
Bus LB1 auf den ihm zugeordneten Dual-Port-Speicher vergeht, bis
das von diesem ausgesendete, den Zugriff bestätigende Quittierungssignal LRDY
bei ihm eintrifft, ist ein weiterer Timer LWT vorgesehen. Wenn der
Prozessor 2 die Zugriffsadressen auf den Lokalbus LB1 aufgeschaltet
hat, ist auch das Signal ALE (Address Latch ENABLED) vorhanden, mit
welchem der Wartetimer LWT gestartet wird. Entsprechendes gilt bei
Aufschaltung der Zugriffsadressen auf den globalen Bus GB und das
vom Arbiter 3 erzeugte Zuteilungssignal AEN (Address ENABLED),
mit dem der Wartetimer GWT gestartet wird. Beide Wartetimer sind
auf eine Zeit eingestellt, welche etwas größer ist, als die maximale Belegungszeit TLOCK;
zwecks einfacher Realisierung wird man sie meist gleich dem Doppelten
dieser Zeit wählen. Durch
die den lokalen Bussen bzw. dem globalen Bus zugeordneten Belegungstimern
LBT bzw. GBT ist sichergestellt, daß kein Mikrocomputer die entsprechenden
Busse länger
als die vorgegebene maximale Belegungszeit TLOCK in Anspruch nehmen kann.
Wenn also nach Auftreten des Zugriffsanforderungssignals ALE bzw. – des Zuteilungssignals
AEN innerhalb der im Wartetimer LWT bzw. GWT eingestellten Zeit
das Quittierungssignal LRDY bzw. GRDY eintrifft, wird der Wartetimer
LWT bzw. GWT über
seinen Reset-Eingang zurückgestellt
und der Rechnerbetrieb läuft
ungestört
weiter. Anderenfalls spricht der entsprechende Wartetimer an, gibt
ein über
ein ODER-Glied 8 bzw. 9 dem Prozessor 2 zugeführtes Zwangsquittierungssignal
FRDY aus, aktiviert über
eine weitere Ausgangsleitung den Interrupteingang NMI des Prozessors 2 und
bringt über ein
ODER-Glied 10 eine Anzeigeeinrichtung AZH zum Ansprechen,
womit ein Hardware-Fehler
signalisiert wird.
-
Die
Regelung der Zugriffsreihenfolge der einzelnen im System vorhandenen
Mikrocomputer auf den globalen Bus GB erfolgt in der üblicher
Weise dadurch, daß in
jedem Mikrocomputer auf sein Zugriffsanforderungssignal ALE mit
der computereigenen Priorisierungseinrichtung 3 – auch mit
Arbiter bezeichnet – der
zugriffswillige Mikrocomputer mit den übrigen um die Zuteilung des
Busses ringen muß. Hat
er den globalen Bus erobert, kann er die von ihm gewünschten
Zugriffsadressen auf den globalen Bus aufschalten, was durch das
Signal AEN angezeigt wird, mit welchem, wie schon erwähnt der
Wartetimer GWT gestartet wird. Nachdem dafür gesorgt wurde, daß kein Mikrocomputer
einen Bus länger
als die maximale Belegungszeit TLOCK für sich reservieren kann, bestimmt
sich nach einem Zugriffsversuch auf den globalen Bus – eine sogenannte
faire Arbitrierung vorausgesetzt – eine maximale Zeit, nach
welcher bei intakter Hardware das Zuteilungssignal AEN bzw, das
darauffolgende Quittierungssignal QRDY für einen zugriffswilligen Mikrocomputer
erscheinen muß.
Bei n in Zugriffskonkurrenz stehenden Mikrocomputern wäre dieses
eine Zeit von (2n – 1) × TLOCK.
Es wird daher ein weiterer Timer GWT1 vorgesehen, welcher auf eine
Zeit eingestellt ist, welche größer ist
als diese Zeit. Dieser wird mit dem Zugriffsanforderungssignal ALE
gestartet und mit dem Quittierungssignal QRDY zurückgesetzt.
Vergeht nach seinem Start eine Zeit, welche größer ist als seine eingestellte
Zeit, so bewirkt er über
ein ODER-Glied ein Zwangsquittierungssignal FRDY sowie über das
ODER-Glied 10 ein Ansprechen der Anzeigeeinrichtung AZH
und aktiviert den Interrupteingang NMI des Prozessors 2.
Bei der in 1 dargestellten
Konfiguration wäre
n = 4 und die Überwachungszeit
des Timers GWT1 also größer als
die siebenfache Belegungszeit TLOCK. Zur einfacheren Realisierung
wird man bei diesem Beispiel jedoch zweckmäßigerweise den achtfachen Wert
von TLOCK wählen.
Mit dem Timer GWT1 wird also das ordnungsgemäße Arbeiten des Arbiters 3 und
des Wartezeittimers GWT überwacht.
-
Wesentlich
ist, daß mit
der erfindungsgemäßen Überwachung
der jeweils busspezifischen Belegungs- und Wartezeiten eine eindeutige
Aussage über
Ort und Ursache des aufgetretenen Fehlers gemacht werden kann: Bei
Software-Nutzungsfehler sprechen nur die Timer LBT bzw. GBT an,
während bei
Hardware-Fehlern, d.h. bei Fehlen oder Fehlfunktion einer Baugruppe
die Timer LWT bzw. GWT ansprechen, wobei in allen Fällen dann
durch Aktivierung des Interrupteingangs NMI des Prozessors 2 eine
dementsprechende, gezielte Fehlerbehandlungsroutine gestartet werden
kann.
-
Unter
der Voraussetzung, daß ein
Mikrocomputer gleichzeitig nur auf einen Bus zugreifen wird, können die
Funktionen der Belegungstimer LBT und GBT sowie die Funktionen der
Wartetimer LWT und GBT jeweils von einem einzigen Timer mit der
eingestellten Zeit von TLOCK bzw. > TLOCK übernommen,
wenn durch eine diesen Timern vorgeordnete Logikschaltung die für den jeweiligen
Zugriff – Zugriff auf
den lokalen oder den globalen Bus – erforderliche, aus 2 ersichtliche Beaufschlagung
ihrer Eingänge
bewirkt wird. Damit kann, insbesondere bei umfangreichen Systemen
die Zahl der vorzusehenden Timern erheblich reduziert werden und
außerdem
können
dann Bauteiltoleranzen nicht mehr zu unterschiedlichen Belegungszeiten
(TLOCK) bzw. Wartezeiten für
den lokalen sowie für
den globalen Bus führen.
-
In
der Regel wird nach Ansprechen der Timer LBT bzw. GBT, d.h. bei
einem Software-Nutzungsfehler eine genauere Analyse der eingesetzten
Software zum Zweck einer Nachbesserung erforderlich. Um diese zu
erleichtern und zu beschleunigen, sind jeweils für den lokalen Bus LB1 und für den Globalbus
GB in jedem Mikrocomputer Adreßzähler LAC und
GAC vorgesehen, welche die jeweils während eines Busbelegungssignals
LLOCK bzw. GLOCK erfolgenden Zugriffe zählen, sowie Zugriffsadreßregister LAR
bzw. GAR mit welchen jeweils zwei aufeinanderfolgende Zugriffsadressen
abgespeichert werden. Außerdem
ist ein weiteres Register CR vorgesehen, mit welchem der jeweils
zugehörige
aktuelle Befehlscode abgespeichert wird.
-
Mit
dem bisher geschilderten Verfahren wird es möglich, LOCK-Belegungsfehler bei ihrem Auftreten
zu erkennen, sogenannte DEAD-LOCKs zu zerschlagen und deren Auswirkungen
auf den verursachenden Mikrocomputer zu begrenzen. Um jedoch schon
der Entstehung eines DEAD-LOCKs vorzubeugen, empfiehlt sich der
in 3 dargestellte Zusatz.
Ihm liegt die Erkenntnis zugrunde, daß ein DEAD-LOCK nur dann entstehen
kann, wenn ein Mikrocomputer auf beide ihm zur Verfügung stehenden Zugriffswege
gleichzeitig zugreift. Dem lokalen Bus LB1 und dem globalen Bus
GB sind daher jeweils Belegungsspeicher LBS bzw. GBS – im dargestellten Beispiel
in Form von bistabilen Kippstufen – zugeordnet, welche bei aktiven
Zugriffsanforderungssignal ALE bzw. bei aktivem Zugriffszuteilungssignal
AEN und aktiviertem Belegungssignal LLOCK' bzw. GLOCK' gesetzt werden und bei passivem Belegungssignal
zurückgesetzt
werden. Die den Setzeingängen
zugeordneten Ausgänge
werden einem UND-Glied 11 zugeführt, dessen Ausgang über eine Taste 12 mit
dem Interrupteingang NMI des Prozessors 2 verbunden werden
kann. Bei einem Testlauf wird die Taste 12 betätigt und
das Ausgangssignal des UND-Gliedes 11 wird bei jedem Auftreten
einer Doppelbelegung den Interrupteingang NMI des Prozessor 2 aktivieren
und diesen damit anhalten. Es kann dann fallweise eine detallierte
Prüfung
dahingehend einsetzen, ob die jeweils aufgetretene Doppelbelegung
zulässig
ist oder nicht, wobei auch hier die Adreßregister GAR, LAR und das
Coderegister CR (2)
zur Unterstützung
einer solchen Prüfung
herangezogen werden können.
Auf diese Weise läßt sich
eine große
Zahl von möglichen DEAD-LOCK-Fällen eliminieren.