-
Gebiet der
Erfindung
-
Die
vorliegende Erfindung bezieht sich auf eine Mikroprozessorarchitektur
im Allgemeinen und insbesondere auf eine Mikroprozessorarchitektur
mit der Möglichkeit
zur Unterstützung
mehrerer verschiedener Mikroprozessoren.
-
Beschreibung
des relevanten Standes der Technik
-
Ein
Computersystem mit einer Mikroprozessorarchitektur mit der Möglichkeit
zur Unterstützung mehrerer
verschiedener Prozessoren weist typischerweise einen Speicher, einen
Speichersystembus mit einem Daten-, einem Adress- und einem Steuersignalbus,
einen Eingabe-/Ausgabe-I/O-Bus mit einem Daten-, einem Adress- und
einem Steuersignalbus, eine Vielzahl von I/O-Einrichtungen und eine
Vielzahl von Mikroprozessoren auf. Die I/O-Einrichtungen können z.
B. einen Steuerprozessor mit direktem Speicherzugriff, einen Ethernetchip
und verschiedene andere I/O-Einrichtungen
aufweisen. Die Mikroprozessoren können z. B. sowohl eine Vielzahl von
Prozessoren für
allgemeine Anwendungen wie auch für spezielle Anwendungen aufweisen.
Die Prozessoren sind über
eine Einrichtung des Speichersystembusses an den Speicher und über eine
Einrichtung des I/O-Busses an die I/O-Einrichtungen angeschlossen.
-
Um
es den Prozessoren zu ermöglichen, ohne
gegenseitige Behinderung auf die MAU und die I/O-Einrichtungen zugreifen
zu können,
ist es erforderlich, einen Mechanismus bereitzustellen, welcher den
Prozessoren und den I/O-Einrichtungen eine Priorität zuweist.
Das verwendete Prioritätsschema kann
ein festes Prioritätsschema
oder ein dynamisches Prioritätsschema
sein, welches es gestattet, die Prioritäten während des Betriebes zu verändern, wenn
sich die Bedingungen des Systems verändert haben, oder eine Kombination
beider Schemata. EP-A-0 324 662 beschreibt ein System, bei dem eine Vielzahl
von Quellen um den Zugang zu einer Vielzahl von Zielen konkurrieren
und die Vielzahl der Quellen dynamisch auf bestimmte Weise und in
Entsprechung zu Kriterien verändert
werden können,
die sich von denen der vorliegenden Erfindung unterscheiden. Es
ist also wichtig, bei solch einem Mechanismus eine Einrichtung bereitzustellen,
die einen schnellen Zugriff durch alle Prozessoren auf den Speicher
und die I/O-Einrichtungen in einer Weise ermöglicht, die einen minimalen
Speicher und I/O-Einrichtungsreaktionsszeit bei gleichzeitiger Speicherkohärenz gewährleistet.
Z. B. kann eine wiederholte Verwendung des Systembusses für einen
Zugriff auf abgewiesene Semaphoren die Bandbreite des Systembusses
erheblich reduzieren. Einzelnen Prozessoren kann es nicht gestattet
werden, dieselben Daten zu lesen und zu schreiben, solange keine
Vorkehrungen getroffen sind, um Probleme mit der Speicherkohärenz zu
vermeiden.
-
EP-0
214 718 A2 offenbart einen Digitalcomputer und eine effiziente Technik
zum gleichzeitigen Ausführen
von Iterationen. Es wird ein Parallelverarbeitungs-Computer bereitgestellt,
der in der Lage ist, die intensiven Anwendungen, die üblicherweise
mit technischen und wissenschaftlichen Anwendungen verbunden sind,
erfolgreich Prozessrechnen zu unterziehen. Es wird eine Technik
für Interleaving
der Speicherelemente eines Parallelverarbeitungs-Computers beschrieben
und speziell eine, die zur Verwendung beim Prozessrechnen intensiver
Anwendungen, die Speicherzugriff in feststehenden Schritten involvieren,
geeignet ist. Darüber
hinaus wird ein Bus-Leiterplattenschalter zum selektiven Verbinden jedes
einer Vielzahl von ersten Untersystem-Bussen mit jedem einer Vielzahl
von zweiten Untersystem-Bussen offenbart. Der Digitalcomputer umfasst eine
Vielzahl von Rechenelementen.
-
Es
ist das Ziel der Erfindung, Probleme der Speicherkohärenz zu
lösen.
-
Dieses
Ziel wird durch den Gegenstand des Anspruchs 1 gelöst.
-
Bevorzugte
Ausführungen
sind Gegenstand der abhängigen
Ansprüche.
-
Zusammenfassung
der Erfindung
-
In
Anbetracht des Vorhergehenden ist eine Hauptausführung der vorliegenden Erfindung
ein Computersystem mit einer Mikroprozessorarchitektur mit der Möglichkeit
zur Unterstützung
mehrerer verschiedener Prozessoren beschrieben, die über einen oder
mehrere I/O-Busse an mehrere Speicherfelder und eine Vielzahl von
I/O-Einrichtungen
angeschlossen sind. Die Speicherfelder sind in Untersysteme mit Schnittstellenschaltkreisen,
die als Speicherfeldeinheiten oder MAUs bekannt sind, unterteilt.
In jedem der Prozessoren ist eine neue Speichersteuereinheit (MCU)
vorhanden. Jede der MCUs weist ein Schaltnetzwerk mit einer Schaltzuteilungseinheit,
einen Datenspeicherschnittstellenschaltkreis, einen Befehlsspeicherschnittstellenschaltkreis,
einen I/O-Schnittstellenschaltkreis und einen oder mehrere Speicheranschlussschnittstellenschaltkreise
auf, die als Anschlüsse
bekannt sind, wobei jeder der Anschlußschnittstellenschaltkreise
eine Anschlußzuteilungseinheit
aufweist.
-
Das
Schaltnetzwerk ist eine Einrichtung zur Kommunikation zwischen einer
Master- und einer Slaveeinrichtung.
Für den
Schalter sind ein Datenspeicher, ein Befehlsspeicher oder eine I/O-Steuereinheit
(IOU) mögliche
Mastereinrichtungen und ein Speicheranschluss oder eine IOU mögliche Slaveeinrichtungen.
-
Die
Funktion des Schaltnetzwerkes besteht dann, von den Speichersteuereinheiten
(CCU) (Befehlsspeicher, Datenspeicher) und der IOU verschiedene
Befehle und Datenanfragen zu empfangen. Nachdem sie diese Anfragen
empfangen haben, priorisieren die Schaltzuteilungseinheit in dem
Schaltnetzwerk und die Anschlußzuteilungseinheit
in dem Anschlußschnittstellenschaltkreis
die Anfragen und leiten sie an den geeigneten Speicheranschluss
(abhängig
von der Befehlsadresse) weiter. Der Anschluss oder, je nach Einzelfall,
die Anschlüsse
werden daraufhin die notwendigen Taktsignale erzeugen und die notwendigen
Daten von der MAU empfangen oder an diese senden. Wenn es sich um
eine Schreib(WR)anfrage handelt, wird das Zusammenspiel zwischen
dem Anschluss und dem Schalter beendet, wenn der Schalter alle Schreibdaten
in den Schreibdaten-FiFO (WDF) von dem Schalter geschrieben hat.
Wenn es sich um eine Lese(RD)anfrage handelt, wird das Zusam menspiel
zwischen dem Schalter und dem Anschluss nur dann beendet, wenn der
Anschluss die Lesedaten durch den Schalter zurück an den anfragenden Master
gesendet hat.
-
Das
Schaltnetzwerk besteht aus vier Sätzen von Tri-State-Bussen,
welche die Verbindung zwischen dem Speicher, der IOU und den Speicheranschlüssen bilden.
Die vier Sätze
von Tri-State-Bussen weisen den SW_REQ, SW_WD, SW_RD und SW_IDBST
auf. Gemäß einem
typischen Ausführungsbeispiel
der vorliegenden Erfindung weist der SW_REQ-Bus 29 Leitungen
auf, die dazu verwendet werden, die Adresse, die ID und ein Teilungssignal von
einer Mastereinrichtung an eine Slaveeinrichtung zu senden. Die
ID ist ein mit einer Speicheranfrage verbundenes Trennzeichen, so
dass die anfragende Einrichtung in der Lage ist, die zurückkehrenden
Daten mit der richtigen Speicheradresse zu verbinden. Das Teilungssignal
ist ein Signal, welches anzeigt, dass ein Speicherzugriff auf einen
geteilten Speicher stattfindet. Wenn die Mastereinrichtung eine
Anfrage an einen Slave ausgibt, ist es nicht notwendig, die vollen
32Bits der Adresse an den Schalter zu senden. Dies liegt daran,
dass in einer Mehrfachspeicheranschlussstruktur der Schalter die
Adresse dekodiert haben würde
und wissen würde,
ob die Anfrage für einen
Speicheranschluss 0, einen Anschluss 1 oder die IOU, etc. bestimmt
ist. Weil jeder Anschluss einen vorbestimmten, ihm zugewiesenen
Speicherraum besitzt, besteht kein Bedarf, die vollen 32Bits der Adresse
an den SW_REQ zu senden.
-
In
der Praxis werden andere Anfrageattribute, wie z. B. ein Funktionscode
und ein Datenbreitenattribut aufgrund von Zeitzwängen nicht auf dem SW_REQ gesendet.
Wenn die Information über
den Schalter transportiert würde,
würde sie
eine Phase später
als benötigt
an dem Anschluss ankommen und damit den Speicheranfragen mehr Latenzzeit
zuführen.
Deshalb werden solche Anfrageattribute auf fest zugeordneten Leitungen
an den Anschluss übertragen,
so dass der Anschluss seine Zustandsmaschine eher starten und dadurch
die Speicherlatenzzeit verringern kann.
-
Bezugnehmend
auf 8 umfasst der Bus SW_WD 32 Leitungen
und wird dazu verwendet, die Schreibdaten von der Mastereinrichtung
(Datenspeicher und EINGABE-/AUSGABEEINHEIT) an den FIFO an dem Speicheranschluss
zu senden. Es sollte festgestellt werden, dass der Befehlsspeicher
nur Daten ausliest und keine Daten schreibt. Dieser Tri-State-Bus
ist "doppelt gepumpt", was bedeutet, dass
bei jeder Taktphase ein Datenwort übertragen wird, das die benötigten Kabel
und damit die Schaltkreiskosten verringert werden. WD00, WD01, WD10 und
WD11 sind Datenworte. Weil die Busse doppelt gepumpt sind, wird
besonders darauf geachtet, sicherzustellen, dass kein Buskonflikt
auftritt, wenn die Busse umkehren und von einem Master auf einen neuen
Master umschalten.
-
Bezugnehmend
auf 9 umfasst der Bus SW_RD 64 Leitungen und wird
dazu verwendet, die Umkehr-Lesedaten von der Slaveeinrichtung (Speicheranschluss
und IOUI) an die Mastereinrichtung zurückzusenden. Daten werden nur
während
einer Phase 1 gesendet. Dieser Bus ist nicht doppelt gepumpt aufgrund
von zeitlichen Bedingungen der Speicher, wobei die Speicher fordern,
dass die Daten bei fallender Flanke von CLK1 gültig sind. Weil die Daten an
dem Anschluss während
der Phase 1 nicht verfügbar
sind, solange der Takt 1 H-Pegel zeigt, wäre, wenn ein Versuch unternommen
würde,
den SW_RD-Bus doppelt zu pumpen, der früheste Zeitpunkt, wann der Speicher
die Daten bekommen könnte,
die positive Flanke von CLK1 und nicht dessen negative Flanke. Weil
der Bus SW_RD nicht doppelt gepumpt ist, ist dieser Bus nur während der
Phase 2 aktiv (nicht im Tri-Zustand). Es gibt kein Problem mit dem
Bustreiberkonflikt, wenn der Bus auf einen anderen Master umschaltet.
-
Der
Bus SW_IDBST umfasst vier Leitungen und wird dazu verwendet, die
Identifikation (ID) von einer Master- an eine Slaveeinrichtung und
die ID und das Speicherblockstartsignal von einer Slave- an eine
Mastereinrichtung zu senden.
-
In
einem aktuellen Ausführungsbeispiel
der vorliegenden Erfindung gibt es nur einen ID-FIFO-Speicher bei
jeder Slaveeinrichtung. Weil Daten von einer Slaveenrichtung immer
ordnungsgemäß zurückkehren,
besteht keine Notwendigkeit dafür,
die ID hinunter an den Anschluss zu senden. Die ID könnte in
separaten FIFO-Speichern gespeichert werden, mit einem FIFO-Speicher
für jeden
Anschluss an der Schnittstelle zwischen der Schalt- und der Mastereinrichtung.
Dies erfordert ein Anwachsen des Schaltkreisbereiches über das
aktuelle Ausführungsbeispiel
hinaus, weil jede Schnittstelle dann n FIFO-Speicher haben muss,
wenn n Anschlüsse
vorhanden sind, allerdings können
die Tri-State-Leitungen um zwei reduziert werden.
-
Die
Anschlußschnittstelle
ist eine Schnittstelle zwischen dem Schaltnetzwerk und dem externen Speicher
(MAU). Sie umfasst eine Anschlußzuteilungseinheit
und Einrichtungen zum Speichern von Anfragen, die Eingriffe und
unterbrochene Leseanfragen verursachen. Sie beinhaltet ebenfalls
einen Erkundungsadressgenerator. Sie weist außerdem Schaltkreise auf, die
als Signalgeneratoren fungieren, um gute Taktsignale für die Steuerung
der Speichermodule zu erzeugen.
-
Es
gibt mehrere Algorithmen, die in einer Vorrichtung innerhalb des
Schaltnetzwerkes gemäß der vorliegenden
Erfindung implementiert sind, wie z. B. einen Test- und Einstellüberbrückungsschaltkreis mit
einem inhaltsadressierbaren Speicher (CAM), einen Zeilenübereinstimmungsvergleichsschaltkreis und
einen dynamischen Schalt/Anschlußzuteilungsschaltkreis.
-
Die
Architektur implementiert Semaphoren, welche dazu verwendet werden,
Software in Multiprozessorsystemen mit einem "Test- und Entstellbefehl", wie unten beschrieben,
zu synchronisieren. Semaphoren sind nicht in der Architektur gespeichert. Der
Speicher holt die Semaphore von der MCU, wann immer die CPU einen
Test- und Einstellbefehl ausführt.
-
Der
Test- und Einstellüberbrückungsschaltkreis
beinhaltet einen einfachen Algorithmus, welcher einen Verlust an
Speicherbandbreite aufgrund einer Spinverriegelung, wie z. B. wiederholten
Anfragen für
einen Zugriff auf den MAU-Systembus, für eine Semaphore verhindert.
Wenn ein Testbefehl auf einer Semaphore, die einen Speicherbereich,
eine Einrichtung oder ähnliches
verriegelt, ausgeführt wird,
speichert der CAM die Adresse der Semaphore. Dieser Eintrag in den
CAM wird gelöscht,
wenn irgendein Prozessor ein Schreiben in einen kleinen Speicherbereich,
welcher die Semaphore beinhaltet, ausführt. Wenn die nachgefragte
Semaphore noch in dem CAM vorhanden ist, wurde die Semaphore nicht von
einem anderen Prozessor freigegeben und deshalb besteht keine Veranlassung,
tatsächlich
wegen der Semaphore auf den Speicher zuzugreifen. Statt dessen wird
ein Block logischer 1' en
($FFFFs) (Semaphore gestört)
an den anfragenden Speicher zurückgesendet,
wodurch angezeigt wird, dass die Semaphore noch verriegelt ist und
nicht tatsächlich
auf die Semaphore zugegriffen wird, wodurch Speicherbandbreite eingespart
wird.
-
Ein
Schreiben von irgend etwas anderem als nur 1'en in eine Semaphore löscht die
Semaphore. Die Slave-CPU muss dann den geteilten Speicherbus überprüfen, um
zu sehen, ob irgendeine CPU (inklusive sie selbst) in die entsprechende
Semaphore schreibt. Wenn irgendeine CPU in eine Semaphore schreibt,
welche einem Eintrag in dem CAM entspricht, wird dieser Eintrag
in dem CAM gelöscht. Wenn
dann Speicher als nächstes
versucht, auf die Semaphore zuzugreifen, wird er den Eintrag in
dem CAM nicht finden und dann tatsächlich die Semaphore von einem
Hauptspeicher holen und sie als gesperrt kennzeichnen, z. B. mit
nur Einsen.
-
Die
Funktion des Zeilenübereinstimmungsvergleichsschaltkreises
besteht darin, festzustellen, ob eine vorliegende Anfrage dieselbe
Zeilenadresse wie die vorherige Anfrage besitzt. Wenn dies der Fall ist,
braucht der Anschluss weder den RAS zurückzubeanspruchen, noch eine
RAS Vorladezeitstrafe auf sich zu nehmen. Daher kann die Speicherlatenzzeit verringert
und die verwendbare Bandbreite vergrößert werden. Zeilenübereinstimmung
wird hauptsächlich
für dynamische
RAMs verwendet, aber sie kann auch für statische RAMs oder ROMs
verwendet werden, so dass die MAU nicht in den höheren Bits einer neuen Adresse
gespeichert werden muss. Daher wird, wenn eine Anfrage für einen
Zugriff auf den Speicher vorliegt, die Adresse an den Schaltnetzwerkadressbus
SW_REQ gesendet, die Zeilenadresse dekodiert und in einem MUX-Zwischenspeicher
gespeichert. Wenn diese Adresse als die Zeilenadresse einer vorhergehenden
Anfrage betrachtet wird, während
ein Speicher oder eine IOU eine neue Anfrage ausgibt, wird die mit
der neuen Anfrage verknüpfte Adresse
dekodiert und ihre Zeilenadresse mit der vorherigen Zeilenadresse
verglichen. Liegt eine Übereinstimmung
vor, tritt ein Zeilenübereinstimmungstreffer
auf und der Übereinstimmungsanfrage wird
eine Priorität
zugeordnet, wie nachfolgend erklärt
wird.
-
In
dem dynamischen Schalt/Anschlußzuteilungsschaltkreis
werden zwei verschiedene Zuteilungen durchgeführt. Eine betrifft die Zuteilungen
der Ressourcen der Speicheranschlüsse, wie z. B. Anschluss 0...Anschluss
N und die andere ist eine Zuteilung der Ressourcen des Adress- und
Schreibdatenbusses SW_REQ und SW_WD des Schaltnetzwerkes.
-
Die
Erfinung, die Gegenstand des vorliegenden Patentes ist, ist in dem
Systemanspruch 1 und dem Verfahrensanspruch 3 definiert. Bei der
speziellen Ausführung,
die beschrieben wird, können
zahlreiche Einrichtungen gleichzeitig Daten von dem Hauptspeicher
nachfragen. Es gibt den Datenspeicher, den Befehlsspeicher und die
IOU. Ein Prioritätsschema
ist etabliert, wobei jeder Master mit einer bestimmten Priorität ausgestattet
ist, so dass die Anfragen von "wichtigeren" oder "dringlicheren" Einrichtungen sobald
wie möglich
bedient werden. Wie auch immer, ein striktes festes Zuteilungsschema
wird aufgrund der Möglichkeit
des Aushungerns der Einrichtungen mit geringer Priorität nicht
verwendet. Statt dessen wird ein dynamisches Zuteilungsschema verwendet,
welches den verschiedenen Einrichtungen während des Betriebs verschiedene
Prioritäten
zuordnet. Dieses dynamische Schema wird von den folgenden Faktoren
beeinflußt:
- 1. Der intrinsischen Priorität der Einrichtungen.
- 2. Hat eine nachgefragte Adresse eine Zeilenübereinstimmung mit einer vorher
bedienten Anfrage?
- 3. Wurde der Einrichtung eine Bedienung zu häufig verweigert?
- 4. Wurde der Master zu häufig
bedient?
-
Jede
Anfrage einer Einrichtung hat eine intrinsische Priorität. Die IOU
hat die höchste
Priorität, gefolgt
jeweils von dem Daten- und dem Befehlsspeicher. Wie auch immer,
eine Eingriffsanfrage (ITV) von dem Datenspeicher hat jedoch, wie
unten be schrieben, die höchste
Priorität
von allen, weil es erforderlich ist, dass dem Slave-Bearbeitungselement
(PE) aktualisierte Daten so schnell wie möglich zur Verfügung stehen.
-
Die
intrinsische Priorität
der verschiedenen Einrichtungen ist durch mehrere Faktoren veränderbar.
Die Häufigkeit,
mit der einer Einrichtung mit geringer Priorität eine Bedienung verweigert
wird, wird überwacht
und wenn diese Häufigkeit
eine vorgegebene Anzahl erreicht, wird der Einrichtung mit der geringen
Priorität
eine höhere
Priorität
zugeteilt. Im Gegensatz dazu wird die Häufigkeit, mit der einer Einrichtung
eine Priorität
zuerteilt wird, ebenfalls überwacht,
so dass, wenn die Einrichtung ein "Busschwein" ist, ihm die Priorität verweigert
werden kann, um einer Einrichtung mit geringerer Priorität zu gestatten,
einen Zugriff auf den Bus zu erlangen. Ein dritter Faktor, der zum
Verändern
der intrinsischen Prorität
einer Anfrage verwendet wird, ist eine Zeilenübereinstimmung. Zeilenübereinstimmung
ist hauptsächlich
für den
Befehlsspeicher wichtig. Wenn eine Einrichtung eine Speicherstelle
nachfragt, die dieselbe Zeilenadresse wie eine zuvor bediente Anfrage besitzt,
wird die Priorität
der anfragenden Einrichtung erhöht.
Dies wird gemacht, um zu vermeiden, dass ein RAS verneint und erneut
bestätigt
werden muss. Jedes mal, wenn eine Anfrage aufgrund einer Zeilenübereinstimmung
bedient wird, wird ein programmierbarer Zähler erniedrigt. Wenn der Zähler z.
B. 0 erreicht, wird das Zeilenübereinstimmungsprioritätsbit gelöscht, um
einem neuen Master zu gestatten, einen Zugriff auf den Bus zu erhalten.
Der Zähler
wird wieder mit einem programmierbaren Wert geladen, wenn sich der
neue Master des Anschlusses von dem alten Master unterscheidet oder
wenn es sich bei einer Anfrage nicht um eine Anfrage mit einer Zeilenübereinstimmung
handelt.
-
Einer
Schreibanfrage für
einen Speicheranschluss wird nur dann stattgegeben, wenn der Schreibdatenbus
(SW_WD) des Schaltnetzwerkes verfügbar ist. Wenn er nicht verfügbar ist,
wird eine andere Anfrage selektiert. Nur für eine Eingriffsanfrage (ITV)
von dem Datenspeicher besteht eine Ausnahme. Wenn eine solche Anfrage
vorliegt und der SW_WD-Bus nicht verfügbar ist, wird keine Anfrage selektiert.
Statt dessen wartet das System darauf, dass der SW_WD-Bus frei wird
und dann wird der Eingriffsanfrage stattgegeben.
-
Für das Schaltnetzwerk
werden zwei softwareselektierbare Zuteilungsschemata verwendet. Es
sind dies die folgenden:
- 1. Die Slavepriorität, bei der
die Priorität
auf dem Slave oder der anfragenden Einrichtung (nämlich dem
Speicher oder dem IOU-Anschluss) basiert.
- 2. Die Masterpriorität,
welche auf dem Master oder der anfragenden Einrichtung (nämlich der IOU,
dem Datenspeicher und dem Befehlsspeicher) basiert.
-
Bei
dem Slaveprioritätsschema
wird die Priorität
immer zuerst an die Speicheranschlüsse gegeben, z. B. an die Anschlüsse 0, 1,
2..., dann an die IOU und dann zurück an den Anschluss ∅;
ein Schema, das allgemein als Rotationsschema bekannt ist. Das Masterprioritätsschema
ist ein Schema mit fester Priorität, bei dem die Priorität jeweils
an die IOU und dann an den Datenspeicher und den Befehlsspeicher gegeben
wird. Alternativ dazu kann einer Eingriffsanfrage die höchste Priorität in dem
Masterprioritätsschema
in der Schaltzuteilung gegeben werden. Auch kann dem Befehlsspeicher
die höchste
Priorität zugeteilt
werden, wenn der Vorabbefehlspuffer bald leer wird.
-
Die
oben erwähnten
und andere Merkmale und Vorteile der vorliegenden Erfindung werden durch
die folgende detaillierte Beschreibung der beigefügten Zeichnungen
klar werden, wobei:
-
1 ein
Blockschaltbild einer Mikroprozessorarchitektur mit der Möglichkeit
zur Unterstützung mehrerer
verschiedener Mikroprozessoren gemäß der vorliegenden Erfindung
zeigt;
-
2 ein
Blockschaltbild einer Speichersteuereinheit gemäß der vorliegenden Erfindung zeigt;
-
3 ein
Blockschaltbild eines Schaltnetzwerkes, welches die Verbindungen
zwischen einer Datenspeicherschnittstelle und einer Anschlußschnittstelle
gemäß der vorliegenden
Erfindung darstellt, zeigt;
-
4 ein
Blockschaltbild von einem Test- und Einstellüberbrückungsschaltkreis gemäß der vorliegenden
Erfindung ist;
-
5 ein
Blockschaltbild eines Schaltkreises ist, der für die Erzeugung von Eingriffssignalen und
für Zuteilungen
an den MAU-Bus gemäß der vorliegenden
Erfindung verwendet wird;
-
6 ein
Blockschaltbild eines Zeilenüberwachungsvergleichsschaltkreises
gemäß der vorliegenden
Erfindung ist; und
-
7 ein
Schaubild eines dynamischen Zuteilungsschemas gemäß der vorliegenden
Erfindung ist.
-
8 ist
ein Schaubild, welches den Zeitverlauf einer Schreibanfrage darstellt;
und
-
9 ist
ein Schaubild, welches den Zeitverlauf einer Leseanfrage darstellt.
-
Unter
Bezugnahme auf 1 wird eine Mikroprozessorarchitektur
bereitgestellt, die allgemein als 1 bezeichnet wird. In
der Architektur 1 gibt es eine Vielzahl von Mikroprozessoren 2, 3, 4...N
für allgemeine
Verwendungen, einen Prozessor 5 für einen speziellen Zweck, einen
Zuteiler 6 und eine Speicher/Speicherfeldeinheit (MAU) 7.
Die Mikroprozessoren 2-N können eine Vielzahl von identischen
Prozessoren oder eine Vielzahl von verschiedenen Prozessoren aufweisen.
Der Prozessor 5 für
eine spezielle Anwendung kann z. B. einen Grafikkontroller aufweisen.
Alle Prozessoren 2-5 sind über einen oder mehrere Speicheranschlüsse PORT0...PORTN, durch jeweils
eine Einrichtung mit einer Vielzahl von bidirektionalen Signalbussen 13-17 an einen
MAU-Systembus 25 angekoppelt, welcher einen MAU-Datenbus 8,
einen Zeilen/Spaltenadressbus 9, einen Multiprozessorsteuerbus 10,
einen MAU-Steuerbus 11 und einen Buszuteilungssteuersignalbus 12 aufweist. Der
Bus 12 wird beispielsweise dafür verwendet, eine Zuteilung
für einen
Zugriff nachzufragen oder zu gestatten oder anzuzeigen, dass der
Systemdatenbus 8 belegt ist. Der Zuteiler 6 ist über eine
Einrichtung einer bidirektionalen Signalleitung 18 an den
Bus 12 angeschlossen. Die MAU 7 ist über die
Einrichtungen der unidirektionalen Signalleitungen 19 und 20 an den
Zeilen/Spaltenadress- und Speichersteuerbus 9 und 11 angeschlossen,
welche dazu dienen, Signale von den Bussen an die MAU zu übertragen
und die MAU ist über
die Einrichtung des bidirektionalen Datenbusses 21 an den
MAU-Datenbus 8 angeschlossen.
Die Datenbusse 8 und 21 sind typischerweise 64-Bit
Busse; wie auch immer, sie können
unter Softwaresteuerung auch als 32-Bit Busse betrieben werden.
Der Bus kann auf andere Breiten, wie z. B. 128 Bit, skaliert werden.
-
Jeder
der Prozessoren 2-N weist typischerweise eine Eingabe-/Ausgabe-IOU-Schnittstelle 53 auf,
welche nachfolgend unter Bezugnahme auf 2 weiter
beschrieben wird und welche über
die Einrichtung eines 32-Bit I/O-Busses 33 oder eines optionalen
32 Bit I/O-Busses 34 und einer Vielzahl von bidirektionalen
32 Bit Signalbussen 35-42 an eine Vielzahl von
peripheren I/O-Einrichtungen, wie einem Direktzugriffsspeicher-(DMA)
Prozessor 30, einer ETHERNET-Schnittstelle 31 und
anderen I/O-Einrichtungen, angeschlossen ist. Der optionale I/O-Bus 34 kann
von einem oder mehreren Prozessoren dazu verwendet werden, auf eine
I/O-Einrichtung 43 für
spezielle Anwendungen zuzugreifen.
-
Gemäß 2 weist
jeder der Prozessoren 2-N eine Speichersteuereinheit (MCU),
allgemein als 50 bezeichnet, auf, welche an eine Speichersteuereinheit
(CCU) 49 mit einem Daten(D)speicher 51 und einem
Befehls(I)speicher 52 und an einen I/O-Anschluss 53, auf den nachfolgend
manchmal einfach als IOU Bezug genommen wird, und der an den I/O-Bus 33 oder 34 angeschaltet
ist, angeschlossen ist.
-
Die
MCU 50 ist ein Schaltkreis, wobei Daten und Befehle über den
MAU-Systembus 25 zwischen der CCU 49, wie z. B.
beiden, dem Datenspeicher 51 und dem Befehlsspeicher 52 (nur
lesen), der 53 und der MAU 7 übertragen (gelesen oder geschrieben) werden.
Die MCU 50 gewährleistet,
wie weiter unten beschrieben wird, eine Speicherkohärenz. Speicherkohärenz wird
dadurch erreicht, dass die MCU in jeder Slave-CPU alle Transaktionen
einer Master-CPU auf dem MAU-Adressbus 9 überwacht,
z.B. erkundet, um festzustellen, ob der Speicher in der Slave-CPU neue,
durch die Master-CPU bereitgestellte Daten nachfragen oder neue
Daten an die Master-CPU senden muss. Die MCU 50 ist für eine Verwendung
mit sechs Speicheranschlüssen
erweiterbar und kann maximal eine 4-Wege-Speicherverschachtelung auf dem MAU-Datenbus 8 unterstützen. Sie
ist in der Lage, die Verwendung eines externen 64- oder 32 Bit Datenbusses 8 zu
unterstützen
und sie verwendet einen modifizierten Hemming Code, um einen Datenbitfehler
zu korrigieren und um zwei oder mehr Datenbitfehler zu entdecken.
-
In
der Architektur der Ausführung
der vorliegenden Erfindung ist die Größe eines Speicherunterblocks,
z. B. einer Speicherleitung, eine Funktion der Speicherbusgröße. Z. B.,
wenn die Busgröße 32 Bit beträgt, beträgt die Größe des Unterblocks
typischerweise 16 Bytes. Wenn die Busgröße 64 Bit beträgt, ist die
Größe des Unterblocks
typischerweise 32 Byte. Wenn die Busgröße 128 Bit beträgt, ist
die Größe des Unterblocks
64 Byte. Wie angedeutet, ist die MCU 50 so konstuiert,
dass sie eine 1-, 2- oder 4-Wege-Verschachtelung, z. B. die Anzahl
der pro Zyklus transferierten Bytes, unterstützen kann.
-
In
der MCU 50 gibt es eine oder mehrere Anschlußschnittstellen,
die als Anschluss P0 ... PN bezeichnet
werden, ein Schaltnetzwerk 54, eine Datenspeicherschnittstelle 55,
eine Befehlsspeicherschnittstelle 56 und eine I/O-Schnittstelle 57.
Wie weiter unten im Hinblick auf 3 beschrieben
wird, weist jede Anschlußschnittstelle
P0-PN eine Anschlußzuteilungseinheit,
die jeweils als PAU0...PAUN bezeichnet werden,
auf. Das Schaltnetzwerk 54 umfasst eine Schaltzuteilungseinheit 58.
-
Wenn
die MCU 50 zwei oder mehr Anschlußschnittstellen aufweist, wird
jede der Anschlußstellen P0-PN an einen getrennten
MAU-Systembus angeschlossen, welcher identisch ist zu dem oben im
Hinblick auf die 1 beschriebenen Bus 25 ist.
In 2 sind zwei solcher Busse gezeigt, die als 250 und 25N bezeichnet
sind. Der Bus 25N umfasst die Busse 8N , 9N , 10N , 11N und 12N , welche jeweils über die Busse 13N , 14N , 15N , 16N ,
und 17N an den Anschluss PN angeschlossen sind. Die Busse 8N -17N sind identisch zu den oben im Hinblick
auf 1 beschriebenen Bussen 8-17. Ähnlich wird
jede der Anschlußstellen über eine
Einrichtung aus einer Vielzahl von getrennten identischen Bussen
mit Schreib(WR)datenbussen 60, 60N ,
Lese(RD)datenbussen 61, 61N und
Adressbussen 62, 62N an
das Schaltnetzwerk 54 und über eine Einrichtung aus einer
Vielzahl von Steuerbussen 70, 71, 80, 81, 90 und 91 und 70N , 71N , 80N , 81N , 90N , und 91N an
den Speicher und an die I/O-Schnittstellen 55, 56, 57 angeschlossen,
wobei die Tiefstellung N die Busse zwischen den Schnittstellen PN und dem Speicher und den I/O-Schnittstellen
identifiziert.
-
Das
Schaltnetzwerk 54 und die Datenspeicherschnittstelle 55 sind über eine
Einrichtung bestehend aus einem WR-Datenbus 72, einem RD-Datenbus 73 und
einem Adressbus 74 miteinander verbunden. Das Schaltnetzwerk 54 und
die Befehlsspeicherschnittstelle 56 sind über einen
Lesedatenbus 82 und einen Adressbus 83 miteinander
verbunden. Es sollte festgestellt werden, dass der Befehlsspeicher 52 keine
Schreib(WR)anfragen ausgibt. Das Schaltnetzwerk 54 und
die I/O-Schnittstelle 57 sind über eine Einrichtung aus einer
Vielzahl von bidirektionalen Signalbussen, welche einen RD-Datenbus 92,
einen WR-Datenbus 93 und einen Adressbus 94 umfasst,
miteinander verbunden.
-
Die
Datenspeicherschnittstelle 55 und die CCU 49,
wie z. B. der Datenspeicher 51, sind über eine Einrichtung aus einer
Vielzahl von unidirektionalen Signalbussen, welche einen WR-Datenbus 100, einen
RD-Datenbus 101, einen Adressbus 102 und ein Paar
von Steuersignalbussen 103 und 104 umfasst, miteinander
verbunden. Die Befehlsspeicherschnittstelle 56 und die
CCU 49, wie z.B. der Befehlsspeicher 52, sind über eine
Einrichtung aus einer Vielzahl von unidirektionalen Signalbussen, welche einen
RD-Datenbus 110, einen Adressbus 111 und ein Paar
von Steuersignalbussen 112 und 113 aufweist, miteinander
verbunden. Die I/O-Schnittstelle 57 und die IOU 53 sind über eine
Einrichtung aus einer Vielzahl von unidirektionalen Signalbussen,
welche einen Lese/Schreib-I/O-Masterdatenbus 120, einen
Lese/Schreib-I/O-Slavedatenbus 121, ein Paar von Steuersignalleitungen 123 und 124 und
ein Paar von Adressbussen 125 und 126 aufweist,
miteinander verbunden. Die Bezeichnungen I/O-Master und I/O-Slave
werden dazu verwendet, Datenübertragungen
auf bezeichneten Signalleitungen zu identifizieren, wenn die I/O
jeweils entweder als ein Master oder als ein Slave arbeitet, wie
nachfolgend weiter beschrieben werden wird.
-
Bezugnehmend
auf 3 ist dort ein Blockschaltbild des Hauptdatenpfades
des Schaltnetzwerkes 54 bereitgestellt, welches die Zusammenschaltungen
zwischen der Datenspeicherschnittstelle 55 und der Anschlußschnittstelle
P0 darstellt. Ähnliche Zusammenschaltungen
sind für
die Anschlußschnittstellen
P1-PN und die Befehlsspeicher-
und I/O-Schnittstellen 55, 57 vorgesehen, außer dass
die Befehlsspeicherschnittstelle 56 keine Schreibdatenanfragen
ausgibt. Wie in 3 gezeigt, ist dort weiterhin
in jeder der Anschlußschnittstellen
P0-PN ein Identifikations(ID)-FIFO-Speicher 130,
welcher dazu verwendet wird, die ID einer Leseanfrage zu speichern,
ein Schreibdaten (WD)-FIFO-Speicher 131, welcher dazu verwendet
wird, die Schreibdaten zeitweise zu speichern, bis ein Zugriff auf
die MAU verfügbar
ist und ein Lesedaten(RD)-FIFO-Speicher 132 vorgesehen,
welcher dazu verwendet wird, die Lesedaten zeitweise zu speichern,
bis das Netzwerk 54 verfügbar ist.
-
In
dem Schaltnetzwerk 54 wird eine Vielzahl von Signalbussen 140-143,
jeweils auch als Anfrage/Adressbus SW_REQ [28:0], Schreibdatenbus SW_WD
[31:0], Lesedatenbus SW_RD [63:0] und als Identifikations/Speicherstartsignalbus
SW_IDBST [3:0] bezeichnet, sowie die Schaltzuteilungseinheit 58 bereitgestellt.
Die Schaltzuteilungseinheit 58 dient zum Handhaben von
Mehrfachanschluss I/O-Anfragen.
-
Die
Speicher- und Anschlußschnittstellen sind
direkt durch einige Steuersignalbusse und indirekt durch andere
Schaltnetzwerkbusse miteinander verbunden. Z. B. ist die AnschlußZuteilungseinheit PAU
in jeder der Anschlußschnittstellen
P0-PN durch ein
Paar Steuersignalbusse mit einer Zuteilungssteuerleitung 70a und
einer Anfragesteuerleitung 71a an die Schaltzuteilungseinheit 58 in
dem Schaltnetzwerk 54 angeschlossen. Die Schaltzuteilungseinheit 58 ist über eine
Zuteilungssteuersignalleitung 71b an die Datenspeicherschnittstelle 55 angeschlossen.
Die Leitungen 70a und 70b sowie die Leitungen 71a und 71b sind
Signalleitungen in den Bussen 70 und 71 gemäß 2.
Ein Gatter 75 und Register 76 und 78 sind
ebenfalls vorgesehen, um jeweils Anfragen zu speichern, welche Eingriffe
verursachen und um unterbrochene Leseanfragen zu speichern. Entsprechende
Steuerbusse sind zwischen dem anderen Anschluss, dem Speicher und
den I/O-Schnittstellen vorhanden.
-
Die
Funktion des Schaltnetzwerkes 54 besteht darin, verschiedene
Befehle und Datenanfragen von den Speichersteuereinheiten (CCU),
wie z. B. dem Befehlsspeicher 51, dem Datenspeicher 52 und
der IOU 53 zu empfangen. Als Antwort auf die empfangenen
Anfragen priorisiert die Schaltzuteilungseinheit 58 in
dem Schaltnetzwerk 54, welches nur eine Anfrage zur gleichen
Zeit bedient, die Anfragen und leitet sie in Abhängigkeit der der Anfrage beigefügten Adresse
an die geeignete Anschlußschnittstelle
P0-PN oder die I/O-Schnittstelle
weiter. Die Anschluss- und I/O-Schnittstellen
werden typischerweise durch die höherwertigen Bits in der der
Anfrage zugeordneten Adresse ausgewählt. Jede Anschlußschnittstelle
besitzt ein Register 77 zum Speichern der MAU-Adressen.
Die Anschlußschnittstelle
wird dann die notwendigen Taktsignale erzeugen und die notwendigen
Daten an die/von der MAU transferieren. Wenn es sich um eine Schreibanfrage
handelt, wird das Zusammenspiel zwischen der Anschlußschnittstelle
und dem Schaltnetzwerk 54 beendet, wenn der Schalter alle
Schreibdaten in den WDF (Schreibdaten-FIFO-Speicher) 131 geschoben
hat. Wenn es sich um eine Leseanfrage handelt, wird die Zusammenarbeit
zwischen dem Schaltnetzwerk 54 und der Anschlußschnittstelle
nur dann beendet, wenn die Anschlußschnittstelle die Lesedaten
zurück an
das Schaltnetzwerk 54 gesendet hat.
-
Wie
weiter unten beschrieben werden wird, ist das Schaltnetzwerk 54 zum
Kommunizieren zwischen einer Master- und einer Slaveeinrichtung
vorgesehen. In diesem Zusammenhang sind die möglichen Mastereinrichtungen:
- 1. Datenspeicher
- 2. Befehlsspeicher
- 3. IOU
und mögliche
Slaveeinrichtungen sind:
- 1. Speicheranschluss
- 2. IOU.
-
Das
Schaltnetzwerk 54 ist dafür verantwortlich, die notwendigen
Eingriffsanfragen für
eine Ausführung
an die geeignete Anschlußschnittstelle
zu senden.
-
Wie
oben beschrieben wurde, weist das Schaltnetzwerk 54 vier
Sätze von
Tri-State-Bussen auf,
die die Verbindung zwischen den Speicher-, den I/O- und den Speicheranschlussschnittstellen
herstellen. Die vier Sätze
von Tri-State-Bussen sind SW_REQ, SW_WD, SW_RD und SW_IDBST. Der als
SW_REQ [28:0] bezeichnete Bus wird dazu verwendet, die Adresse in
der Slaveeinrichtung und das Speicherteilungssignal sowie die ID
von der Mastereinrichtung an die Slaveeinrichtung zu senden. Wie oben
angedeutet, kann der Master der Datenspeicher, der Befehlsspeicher
oder eine IOU sein, während
die Slaveeinrichtung ein Speicheranschluss oder eine IOU sein kann.
Wenn die Mastereinrichtung eine Anfrage an einen Slave ausgibt,
ist es nicht notwendig, alle 32 Bit der Adresse an den Schaltbus SW_REQ
zu senden. Dies liegt daran, dass bei der mehrfachen Speicheranschlussstruktur
gemäß der vorliegenden
Erfindung jeder Anschluss über
einen ihm zugeordneten vordefinierten Speicherplatz verfügt.
-
Andere
Anfrageattribute wie der Funktionscode (FC) und die Datenbreite
(WD) werden aufgrund von Zeitbeschränkungen nicht an den SW_REQ-Bus
gesendet. Die über
das Schaltnetzwerk 54 getragenen Informationen erreichen
die Anschlußschnittstelle
eine Taktphase später
als in dem Fall, wenn die Information über vor bestimmte Leitungen
getragen worden wäre.
Daher müssen
die frühen Anfrageattribute
eine Phase eher an die Anschlußschnittstelle
gesendet werden, so dass die Anschlußschnittstelle ihre Zustandsmaschine
früher
starten kann und dadurch die Speicherlatenzzeit verringert wird.
Dies wird durch eine separate Signalleitung 79, wie in 3 gezeigt,
gewährleistet.
Die Leitung 79 ist eine von den Leitungen in dem Steuersignalbus 70 gemäß 2.
-
Der
SW_WD [31:0] Bus wird dazu verwendet, Schreibdaten von einer Mastereinrichtung
(Datenspeicher und IOU) an den Schreibdaten-FIFO-Speicher 131 in
der Speicheranschlussschnittstelle zu senden. Dieser Tri-State-Bus
ist doppelt gepumpt, was bedeutet, dass in jeder Phase 32 Datenbits
transferiert werden. Weil die Busse doppelt gepumpt sind, muss bei
dem Entwurf des Schaltkreises besonders darauf geachtet werden,
sicherzustellen, dass kein Buskonflikt auftritt, wenn die Busse umkehren
und von einem Master auf einen neuen Master umschalten. Wie zu begrüßen sein
wird, verringert das Doppelpumpen die Anzahl der erforderlichen
Bitleitungen, wodurch kostspielige Leitungsausstattungen bei minimalen
Leistungseinbußen
minimiert werden.
-
Bezugnehmend
auf 9 wird der SW_RD [63:0] Bus dazu verwendet, Umkehrlesedaten
von der Slaveeinrichtung (Speicheranschluss oder IOU) an die Mastereinrichtung
zurückzusenden.
Die Daten werden nur während
der Phase 1 des Taktes (wenn CLK1 H-Pegel hat) gesendet. Dieser
Bus ist aufgrund von Zeitbeschränkungen
des Speichers nicht doppelt gepumpt. Der Speicher erfordert, dass
die Daten an der fallenden Flanke von CLK1 gültig sind. Weil die Daten während der
Phase 1 von der Anschlußschnittstelle
empfangen werden, wenn der SW_RD Bus doppelt gepumpt war, wäre der früheste Zeitpunkt, wann
der Speicher die Daten erhalten würde, die positive Flanke von
CLK1, nicht aber die negative Flanke von CLK1. Weil der SW_RD Bus
nicht doppelt gepumpt ist, ist dieser Bus nur während CLK1 aktiv (nicht im
Tri-Zustand) und es gibt kein Problem mit einem Buspufferkonflikt,
wo zwei Bustreiber die gleichen Leitungen zur gleichen Zeit ansteuern.
-
Der
SW_IDBST [3:0] wird dazu verwendet, den Identifikations(ID)Code
und einen Speicherstartcode von der Slaveeinrichtung über den
Bus 88 zurück
an die Mastereinrichtung zu führen.
Weil die Daten von einer Slaveeinrichtung immer ordnungsgemäß zurückkehren,
gibt es im allgemeinen grundsätzlich
keine Notwendigkeit dafür,
die ID hinunter an den Anschluss zu senden. Die ID kann in getrennten FIFO-Speichern gespeichert
werden, mit einem FIFO-Speicher für jeden Anschluss in der Schnittstelle.
-
Wieder
bezugnehmend auf den Lese-FIFO-Speicher 132, werden Daten
nur dann in diesen FIFO-Speicher hineingegeben, wenn der Schaltlesebus
SW_RD nicht verfügbar
ist. Wenn der Bus SW_RD aktuell von einigen anderen Anschlüssen belegt
wird, werden die ankommenden Lesedaten zeitweilig in den Lese-FIFO-Speicher 132 geschoben
und wenn der SW_RD-Bus freigegeben ist, werden die Daten von dem
FIFO abgehoben und durch das Schaltnetzwerk 54 an den anfragenden Speicher
oder die anfragende IOU transferiert.
-
Der
Transfer von Daten zwischen der Datenspeicherschnittstelle 55,
der Befehlsspeicherschnittstelle 56, der I/O-Schnittstelle 57 und
den Anschlußschnittstellen
P0-PN wird nun unter Verwendung des Datentransfers
an/von der Datenspeicherschnittstelle 55 als Beispiel beschrieben.
-
Wenn
einer von dem Datenspeicher, dem Befehlsspeicher oder den IOUs auf
einen Anschluss zugreifen möchte,
prüft er,
ob der Anschluss frei ist, indem er, wie in 3 gezeigt,
eine Anfrage über
die Anfragesignalleitung 70b an die Anschlußzuteilungseinheit
PAU∅ sendet. Wenn der Anschluss frei ist, informiert die
Anschlußschnittstelle
die Schaltzuteilungseinheit 58 über die Anfragesteuerleitung 71a, dass
eine Anfrage vorliegt. Wenn das Schaltnetzwerk 54 frei
ist, informiert die Schaltzuteilungseinheit 58 den Anschluss über die
Zuordnungssteuerleitung 70a und den Master, z. B. die Datenspeicherschnittstelle 55,
dass die Anfrage auf der Steuerleitung 71b zugeteilt worden
ist.
-
Wenn
es sich bei der Anfrage um eine Schreibanfrage handelt, prüft der Datenspeicherschnittstellenschaltkreis 55 die
Buszuordnungssteuereinheit 172, um festzustellen, ob die
MCU 50 dem MAU-Bus 25 zugeteilt ist. Wenn die
MCU dem Bus 25 nicht zugeteilt ist, wird eine Anfrage nach
dem Bus gestellt. Wenn der Bus zugeteilt worden ist, stellt die Anschlußzuteilungseinheit 171 eine
Anfrage nach den Schaltbussen 140, 141. Nachdem
ein Zugriff auf die Schaltbusse 140, 141 gewährt wurde,
legt der Datenspeicherschnittstellenschaltkreis 55 die
geeignete Adresse auf den Schaltbus SW_REQ 140 und legt
zur gleichen Zeit die Schreibdaten auf den Schreibdatenbus SW_WD 141 und
speichert sie in dem Schreibdaten-FIFO-Speicher (WDF) 131. Sobald
die Daten in dem WDF sind, schreibt die MCU die Daten nachfolgend
in die MAU. Der Zweck für
die Absicherung, dass der Bus zugeteilt ist, bevor die Schreibdaten
an den Anschluss gesendet werden, liegt darin, dass die MCU den
WDF dann nicht überprüfen muss,
wenn eine Erkundungsanfrage von einem externen Prozessor vorliegt.
Eine Überprüfung nach
modifizierten Daten verbleibt deshalb nur für den Speicher.
-
Wenn
die Anfrage eine Leseanfrage ist, und der Anschluss sowie das Schaltnetzwerk,
wie oben beschrieben, als verfügbar
festgestellt werden, empfängt
die Anschlußschnittstelle
die Adresse von der anfragenden Einheit über den SW_REQ-Bus und teilt sie,
unter Verwendung des Zuteilers, dem MAU-Bus 9 zu. Der MAU-Zuteiler informiert
den Anschluss, dass der MAU-Bus ihr zugeteilt wurde, bevor der Bus tatsächlich benutzt
werden kann. Die Anfrage wird dann durch den Schalter an den Anschluss übertragen.
Wenn der MAU-Adressbus 9 frei ist, wird die Adresse auf
den MAU-Adressbus gelegt. Der Anschluss weiß bereits vor der Zeit, wann
Daten empfangen werden. Es fragt den Schaltumkehrdatenbus an, so
dass dieser verfügbar
ist, wenn die Daten zurückkehren,
sofern er nicht belegt ist. Wenn der Bus frei ist, legt der Anschluss
die Lesedaten auf den Bus, die dann von der Datenspeicher-, der
Befehlsspeicher- oder der I/O-Schnittstelle aufgenommen und an ihre
zugeordnete Anfrageeinheit gegeben werden.
-
Wenn
der Daten/Befehlsspeicher 51, 52 eine Anfrage
nach einer I/O-Adresse stellt, übermitteln
die Daten/Befehlsspeicherschnittstellen 55, 56 die
Anfrage über
den An fragebus SW_REQ an die I/O-Schnittstelleneinheit 57.
Wenn die I/O-Schnittstelleneinheit 57 verfügbare Einträge in ihrer
Schlange zum Speichern der Anfragen aufweist, wird sie die Anfrage über die
Steuersignalleitung 90 an die Schaltzuteilungseinheit 58 übermitteln.
Noch einmal, wenn das Schaltnetzwerk 54 frei ist, informiert
die Schaltzuteilungseinheit 58 die Daten/Befehlsspeicherschnittstelle 55, 56,
so dass sie die Adresse auf den Adreßbus SW_REQ setzen kann und,
wenn es sich um eine Schreibanfrage handelt (nur Datenspeicher),
die Schreibdaten für
einen Transfer an die IOU auf den Schreibdatenbus SW_WD legen kann. Ähnlich,
wenn die Anfrage von der Daten/Befehlsspeicherschnittstelle 55, 56 eine
Leseanfrage ist, werden die Lesedaten von der I/O-Schnittstelle 57 über den
Schaltnetzwerk-54-lesedatenbus SW_RD übertragen und den Daten/Befehlsspeicherschnittstellen 55, 56 für einen
Transfer an den Daten/Befehlsspeicher 51, 52 zugeführt.
-
Bezugnehmend
auf 4 werden dort weiterhin gemäß der vorliegenden Erfindung
in den Anschlußschnittstellen
und Speichern Test- und Einstell-(TS)überbrückungsschaltkreise, allgemein
jeweils als 160 und 168 bezeichnet, bereitgestellt,
zum Überwachen,
z. B. Erkunden von Semaphorenadressen auf dem MAU-Adressbus 9.
Wie noch gesehen werden wird, verringern die Schaltkreise 160, 168 die von
einer Spinverriegelung für
eine Semaphore verbrauchten Speicherbandbreite.
-
In
den Test- und Einstellschaltkreisen 160, 168 wird
ein Erkundungsadressgenerator 161, ein TS inhaltsadressierbarer
Speicher (CAM)162, ein Flip-Flop 163 sowie Multiplexer 164 und 165 bereitgestellt.
-
Eine
Semaphore ist eine Fahne oder ein Zeichen, dass an einer adressiebaren
Stelle im Speicher gespeichert ist, um einen Zugriff auf bestimmte
Regionen des Speichers oder andere adressierbare Ressourcen zu steuern.
Wenn eine CPU auf eine Region eines Speichers zugreift, der eine
Semaphore zugeordnet ist, und z. B. nicht wünscht, dass auf diese Speicherregion
von irgendeiner anderen CPU zugegriffen wird, plaziert die zugreifende
CPU lauter 1'en in
die Semaphore. Wenn dann eine CPU versucht, auf die Region zuzugreifen,
prüft sie
zunächst
die Semaphore. Wenn sie feststellt, dass die Semaphore nur 1'en aufweist, wird
der zweiten CPU ein Zugriff verweigert. Bis dahin würde die
zweite CPU wiederholt Anfragen nach einem Zugriff ausgegeben haben und
ihr könnte
der Zugriff wiederholt verweigert worden sein, was in einer sog. "Spinverriegelung
für eine Semaphore" resultiert. Das
Problem mit einer Spinverriegelung für eine Semaphore liegt darin,
dass sie einen übermäßig großen Betrag
von Speicherbandbreite verwendet, weit für jede Anfrage nach einem Zugriff
die anfragende CPU einen Lese- und Schreibvorgang ausführen muss.
-
Die
Test- und Einstellüberbrückungsschaltkreise 160, 168 gemäß 4 bilden
eine Implementierung eines einfachen Algorithmusses, der einen Verbrauch
von Speicherbandbreite aufgrund von Spinverriegelung für eine Semaphore
verringert.
-
Während des
Betriebes, wenn eine CPU, oder genauer, ein Prozeß in einem
Prozessor als erster eine Anfrage nach einem Zugriff auf eine mit
einer Semaphore verbundenen Speicherregion durch Ausgeben eines
Lade- und Einstellbefehls, z. B. eines vorgegebenen, mit einer Anfrage
nach einem Zugriff auf eine Semaphore verbundenen Befehls, stellt, greift
die CPU als erstes auf die Semaphore zu und speichert die Adresse
der Semaphore in den CAM 162. Mehrere Lade- und Einstellbefehle
können
in mehreren Einträgen
in dem CAM 162 resultieren. Wenn die Semaphore lauter 1'ein ($FFFFs) enthält, werden
die 1'en umgekehrt,
was bedeutet, dass ein Zugriff verweigert wird. Wenn ein anderer
Prozeß dann
wieder nach der Semaphore fragt, überprüft er deren CAM. Wenn sich
die Adresse der nachgefragten Semaphore noch in dem CAM befindet,
weiß die CPU,
dass die Semaphore noch nicht von einem anderen Prozessor/Prozeß freigegeben
wurde und deshalb besteht kein Bedarf für eine Spinverriegelung der
Semaphore. Statt dessen empfängt
die MCU lauter 1'en
(Semaphore ist gesperrt) und die Semaphore wird von dem Speicher
nicht nachgefragt; daher wird keine Speicherbandbreite unnötig verwendet.
Auf der anderen Seite, wenn sich die Semaphorenadresse nicht in
dem CAM befindet, bedeutet dies, dass die Semaphore zuvor nicht
nachgefragt wurde oder dass sie freigegeben wurde.
-
Der
MAU-Bus stellt keine Byteadressen bereit. Das CAM muss gelöscht werden,
wenn die Semaphore freigegeben wird. Das CAM wird gelöscht, wenn
ein Schreibbefehl in irgendeinen Teil des kleinsten erfaßbaren Speicherblocks,
der die Semaphoren einschließt,
durch irgendeinen Prozessor an dem MAU-Bus ausgeführt wird.
Die aktuelle Blockgröße beträgt 4 oder
8 Bytes. Auf diese Weise wird der CAM niemals die Adresse einer
gelöschten
Semaphore halten, obwohl der CAM gelöscht sein kann, wenn die Semaphore
nicht durch einen Schreibbefehl für eine andere Stelle in dem
Speicherblock gelöscht
wurde. Die Semaphore wird gelöscht,
wenn irgendein Prozessor etwas anderes als lauter 1'en in sie hinein
schreibt.
-
Wenn
durch einen Test- und Einstellbefehl auf eine Semaphore zugegriffen
wird, nachdem ein Schreiben in den Speicherblock, der die Semaphore enthält, aufgetreten
ist, wird wieder auf den Speicher zugegriffen. Wenn die Semaphore
gelöscht
wurde, wird der gelöschte
Wert an die CPU zurückgeführt und
der CAM wird wieder mit der Adresse besetzt. Auch wenn die Semaphore
nicht gelöscht
oder wieder verriegelt wurde, wird der CAM auch mit der Semaphorenadresse
geladen, aber der verriegelte Wert wird an die CPU zurückgeführt.
-
Während des
Betriebs des Schaltkreises 160 gemäß 4, erkundet
der Schaltkreis 160 den MAU-Adressbus 9 und verwendet
die darauf entdeckten Adressignale, um in dem Adressgenerator 161 eine
entsprechende Erkundungsadresse zu erzeugen, die dann über die
Leitung 169 an den CAM 162 gesendet wird und mit
dessen Inhalten vergleichen wird. Wenn ein Treffer vorliegt, d.
h. eine Übereinstimmung
mit einer der Eintragungen in dem CAM 162, wird der Eintrag
in dem CAM 162 gelöscht. Wenn
z. B. von einem Datenspeicher eine Lade- und Einstellanfrage an
die MCU gerichtet wird, vergleicht der Datenspeicherschnittstellenschaltkreis
die Adresse mit den Eintragungen in dem CAM. Wenn ein Treffer in
dem CAM 162 vorliegt, wird die ID in dem Register 163 in
der Speicherschnittstelle zwischengespeichert und diese ID sowie
alle 1'en ($ FFFF)
werden durch die Einrichtungen der Multiplexer 164 und 165 an
die Speicherschnittstelle zurückgeführt.
-
Das
Erkunden von den Adressen und die darauf basierende Erzeugung einer
Erkundungsadresse in dem Erkundungsadressengenerator 161 für einen
Vergleich in dem CAM 162 schließt sich ohne Krankheitseffekt
an, obwohl die auf dem MAU Adreßbus 9 erscheinenden
Adressen zu nichtgeteilten Speicherbereichen gehören. Der Erkundungsadressgenerator 161 erzeugt
typischerweise unter Verwendung der MAU Steuersignale RAS, CAS und der
BKST START MAU Steuersignale auf dem Steuersignalbus 11 eine
Speicherblockadresse (höherwertigere
Bits) aus den 11 Bits der MAU Zeilen- und Spaltenadressen, die auf
dem MAU Adreßbus 9 erscheinen.
-
Bezugnehmend
auf 5 wird dort in Übereinstimmung mit einem anderen
Aspekt der vorliegenden Erfindung ein Schaltkreis, allgemein als 170 bezeichnet,
zum Bereitstellen einer Speicherkohärenz bereitgestellt. Speicherkohärenz ist
notwendig, um sicherzustellen, dass in einer Multiprozessorumgebung
der Master und die Slaveeinrichtungen, z. B. die CPU's, alle die aktuellsten
Daten zur Verfügung haben.
-
Außerhalb
des Chips, der den Schaltkreis 170 umfasst, ist der Zuteiler 6,
der Speicher 7 und der MAU Adreßbus 9, der MAU Steuerbus 11 und
der Multiprozessorsteuerbus 10 bereitgestellt. In dem Schaltkreis 170 gibt
es eine Anschlußzuteilungseinheitschnittstelle 171,
eine Buszuteilungssteuereinheit 172, eine Multiprozessorsteuerung 173 und
den Erkundungsadressgenerator 161 gemäß 4. Die Datenspeicherschnittstelle 57 ist über die
Einrichtungen eines Paares von Steuersignalbussen 174 und 157 sowie
eines Erkundungsadressbusses 176 an die Multiprozessorsteuerung 173 angeschlossen.
Die Befehlsspeicherschnittstelle 56 ist über die
Einrichtungen eines Paares von Steuersignalbussen 177 und 178 sowie
den Erkundungsadressbus 176 an die Multiprozessorsteuerung 173 angeschlossen.
Der Erkundungsadressgenerator 161 ist über die Einrichtung eines Steuersignalbusses 179 an
die Multiprozessorsteuerung 173 angeschlossen. Die Multiprozessorsteuerung 173 ist
weiterhin über
die Einrichtung eines Steuersignalbusses 180 an den Multiprozessorsteuerbus 10 und über einen
Steuersignalbus 181 an die Buszuteilungssteuerungseinheit 172 angeschlossen.
Die Anschlußzuteilungseinheitschnittstelle 171 ist über einen
Steuersignalbus 182 an die Buszuteilungssteuer einheit 172 angeschlossen.
Die Buszuteilungssteuereinheit 172 ist über einen Buszuteilungssteuerbus 183 an
den Zuteiler 6 angeschlossen. Der Erkundungsadressengenerator 161 ist über die
Adress- und Steuerbusse 14 und 16 ebenfalls jeweils
an den MAU Adreßbus 9 und
den MAU Steuerbus 11 angeschlossen.
-
Eine
Anfrage von einem Speicher wird ein Attribut mit sich tragen, welches
anzeigt, ob es für
einen geteilten Speicher gemacht ist. Wenn es für einen geteilten Speicher
gemacht ist, sendet die Anschlußschnittstelle
ein Teilungssignal SHARED_REQ an den Multiprozessorsteuersignal-(MCS)bus 10 aus.
Wenn andere CPUs das Teilungssignal auf dem MCS Bus 10 entdecken,
beginnen sie, den MAU ADDR Bus 9 zu inspizieren, um die Erkundungsadresse
zu bekommen.
-
Erkunden,
wie oben kurz beschrieben, ist das Speicherkohärenzprotokoll, wobei die Steuerung an
jeden Speicher an einem geteilten Speicherbus verteilt ist, und
wobei alle Speichersteuerungen (CCUs) den Bus abhören oder
erkunden, um festzustellen, ob sie eine Kopie des geteilten Speicherblocks
haben oder nicht. Erkunden ist deshalb der Prozeß, wobei eine Slave MCU alle
Transaktionen auf dem Bus überwacht,
um ihn auf von dem Master MCU ausgegebene Lese/Schreibanfragen hin
zu überprüfen. Die
Hauptaufgabe der Slaves MCU besteht darin, den Bus zu erkunden,
um festzustellen, ob er irgendwelche neuen Daten, z. B. zuvor empfangene
ungültige
Daten empfangen muss, oder ob er die neuesten Daten, z. B. als Auswirkung
eines Eingriffs, an den Master MCU senden muss.
-
Wie
unten weiter beschrieben wird, ist der Multiprozessorsteuerschaltkreis 173 gemäß 5 vorgesehen,
um eine Ungültigkeit,
einen Eingriff und Erkundungstreffersignale von dem Speicher und
anderen Prozessoren zu bearbeiten und um Erkundungstreffersignale
(SNP_HIT) und Eingriffssignale (ITV_REQ) auf dem Multiprozessorsteuersignalbus 180 zu
erzeugen, wenn Erkundungstreffer und Eingriff/Ungültigkeit
angezeigt werden, wie unten weiter beschrieben wird.
-
Die
Buszuteilungssteuereinheit 172 gemäß 5 entscheidet
für den
MAU Bus bei jeder normalen Lese- oder Schreiboperation. Sie wickelt
darüber hinaus
die Zutei lung für
den MAU Bus auch im Falle eines Ereignisse von Eingriff/Ungültigkeit
ab und verbindet ihn direkt mit den Buszuteilungssteuersignalanschlüssen, welche
direkt zu dem externen Buszuteiler 6 führen.
-
Die
Betriebe des Eingriffs und der Ungültigkeit, die die oben beschriebene
Speicherkohärenz bewirken,
werden nun im Hinblick auf Leseanfragen, Schreibanfragen und Leseanfragen
mit der Absicht zur Veränderung
geschrieben, welche von einer masterzentralen Verarbeitungseinheit
(MSTR CPU) ausgegeben werden.
-
Wenn
die MSTR CPU eine Leseanfrage ausgibt, legt sie eine Adresse auf
den Speicherfeldeinheit-(MAU)adreßbus 9. Die Slave
(SLV) CPU's erkunden
die Adressen auf dem MAU Bus 9. Wenn eine SLV CPU Daten
von der adressierten Speicherstelle in ihrem Speicher hat, welche
modifiziert worden sind, gibt die Slavespeichersteuereinheit (SLV CCU)
ein Eingriffssignal (ITV) an den Multiprozessorsteuerbus 10 aus,
welches anzeigt, dass sie frische, d.h. modifizierte Daten besitzt.
Der MSTR gibt, nachdem er das ITV Signal entdeckt hat, den Bus auf
und die SLV CCU schreibt die frischen Daten in den Hauptspeicher,
z. B. die MAU 7. Wenn die durch den Master MSTR nachgefragten
Daten nicht von der MSTR Speichersteuereinheit (CCU) empfangen werden,
verwirft die MSTR MCU die nachgefragten Daten und bekräftigt erneut
ihre Anfrage nach Daten von der MAU. Nachdem die nachgefragten Daten
an die MSTR CCU übermittelt
wurden, weist die MSTR MCU die MSTR CCU (oder die IOU Steuerung,
wenn eine IOU der MSTR ist) an, die Daten zu verwerfen. Die MSTR
MCU gibt dann erneut ihre Leseanfrage aus, nachdem der Slave den
Hauptspeicher aktualisiert hat. Zwischenzeitlich hält der Anschlußschnittstellenschaltkreis
die Leseanfrage des Masters zurück,
während
der Slave die modifizierten Daten zurück in den Speicher schreibt.
Danach wird die Leseanfrage ausgeführt.
-
Wenn
der MSTR eine Schreibanfrage ausgibt, plaziert er eine Adresse auf
dem Speicherfeldeinheit-(MAU)adreßbus 9 und wenn eine
Slave CCU eine Kopie der ursprünglichen
Daten von dieser Adresse in ihrem Speicher hat, wird die Slave CCU die
entsprechenden Daten in ihrem Speicher ungültig machen, z. B. verwerten.
-
Wenn
der MSTR eine Leseanfrage mit der Absicht zur Veränderung
ausgibt, plaziert er eine Adresse auf dem Speicherteldeinheit-(MAU)adreßbus 9 und
wenn eine Slave MCU die von dem Master (MSTR) auf dem Adreßbus plazierte
Adresse hat, wird eine von zwei möglichen Aktionen stattfinden:
- 1. Wenn die SLV CCU die Daten, die den von
dem MSTR adressierten Daten entsprechen, modifiziert hat, wird der
SLV ein ITV Signal ausgeben, und der MSTR wird den Bus in Ansprache
darauf aufgeben, und der SLV CCU gestatten, die modifizierten Daten
in den Speicher zu schreiben. Diese Operation entspricht der oben
beschriebenen Eingriffsoperation.
- 2. Wenn der SLV unveränderte
Daten besitzt, die den von dem MSTR adressierten Daten entsprechen,
wird der SLV seine Daten ungültig
machen, z. B. verwerfen. Diese Operation entspricht der oben beschriebenen
Ungültigkeitsoperation.
-
Bezugnehmend
auf 6 wird dort gemäß einem anderen Aspekt der
vorliegenden Erfindung ein Schaltkreis, der im allgemeinen als 190 bezeichnet
wird, bereitgestellt, der für
einen Zeilenübereinstimmungsvergleich
verwendet wird, um die Latenzzeit eines Speichers zu verringern.
In dem Schaltkreis 190 gibt es einen Vergleicher 191,
einen Signalspeicher 192 und ein Multiplexerpaar 193 und 194.
-
Die
Aufgabe des Zeilenübereinstimmungsvergleichers
besteht darin, festzustellen, ob die aktuelle Anfrage dieselbe Zeilenadresse
wie eine vorhergehende Anfrage aufweist. Wenn sie dies tut, braucht der
Anschluss nicht die Zeitstrafe für
die Entkräftigung
der RAS auf sich zu nehmen. Zeilenübereinstimmung wird hauptsächlich bei
DRAMs verwendet, aber es kann auch für SRAM oder für ROMs verwendet
werden, so dass die MAU nicht in den oberen, z. B. Zeilenbits der
neuen Adresse gespeichert werden muss, weil ROM- und SRAM-Zugriffe
die Adressen an die MAU in hohen und niedrigen Adressegmenten weiter
leiten, in ähnlicher
Weise wie dies DRAMs passiert.
-
Während des
Betriebs des Zeilenübereinstimmungsschaltkreises
gemäß 6 wird
die Zeilenadresse inklusive der entsprechenden Feldauswahlbits der
Adresse in dem Speicher 192 durch die Einrichtung des Multiplexers
MOX 193 gespeichert. Jedesmal, wenn eine neue Adresse auf
dem Schaltnetzwerkadressbus SW_REQ erscheint, wird die Adresse durch
den neuen Anfragemultiplexer MUX 194 geleitet und in dem
Vergleicher 191 mit der vorhergehenden Anfrage verglichen.
Wenn eine Zeilenübereinstimmung
vorliegt, wird an dem Ausgang des Vergleichers 191 ein
Signal erzeugt und über
die Einrichtung der Signalleitung 195, die ein Teil des
Busses 70 ist, an die Anschlußschnittstelle übertragen. Die
Zeilenübereinstimmung
wird die Anschlußschnittstelle
von einer Entkräftigung
der RAS bewahren, wodurch RAS Zykluszeit eingespart wird.
-
Der
Multiplexer MUX 193 wird dazu verwendet, die Zeilenadresse
aus der Schaltanfrageadresse zu extrahieren. Die Umsetzung der Zeilenadresse
in die Schaltadresse ist eine Funktion der DRAM Konfiguration (z.
B. 1Mx1 oder 4Mx1 DRAMs) und der MAU Datenbusbreite (z. B. 32 oder
64 Bits).
-
Gemäß den 1 und 5 ist
der externe Buszuteiler 6 eine Einheit, die vornehmlich
aus einem programmierbaren Logikfeld (PLA) und einem Speicherelement
besteht. Er akzeptiert Anfragen nach dem MAU Bus von verschiedenen
CPUs, entscheidet aufgrund eines softwareselektierbaren dynamischen
oder festen Prioritätsschemas,
welcher der CPUs der Bus zuerteilt werden soll, und gibt die Erteilung
an die geeignete CPU aus. Das Speicherelement ist vorgesehen, um
zu Speichern, welcher CPU der Bus zuletzt zuerteilt wurde, so dass
entweder die dynamische oder flexible Priorität so wie die feste oder Rotationspriorität implementiert
werden kann.
-
Unter
Bezugnahme auf 7 wird nun die dynamische Schalt-
und Anschlußzuteilung
beschrieben, wie sie in einer Muitiprozessorumgebung gemäß der vorliegenden
Erfindung verwendet wird.
-
Wie
oben beschrieben, gibt es drei Master und zwei Ressourcen, die einer
MCU dienen. Die drei Master sind der Datenspeicher, der Befehlsspeicher und
die IOU.
-
Die
beiden Ressourcen, z. B. Slaves, sind die Speicheranschlüsse und
die IOU. Wie festgestellt wird, kann die IOU beides sein, sowohl
ein Master wie auch eine Ressource/Slave.
-
Gemäß der vorliegenden
Erfindung werden zwei verschiedene Zuteilungen vorgenommen. Die eine
betrifft die Zuteilung der Ressourcen der Speicheranschlüsse (Anschluss
0 bis Anschluss 5) und die andere betrifft die Zuteilung der Ressourcen
der Schaltnetzwerkbusse SW_REQ und SW_WD.
-
Mehrere
Geräte
können
gleichzeitig eine Anfrage nach Daten aus dem Hauptspeicher stellen. Dies
sind der Daten- und der Befehlsspeicher sowie die IOU. Ein Prioritätsschema,
wonach jeder Master mit einer gewissen Priorität ausgestattet ist, wird verwendet,
so dass Anfragen von "wichtigeren" oder "eiligeren" Einrichtungen so
bald wie möglich
bedient werden. Wie auch immer, ein absolut festes Zuteilungsschema
wird aufgrund der Möglichkeit
des Aushungerns von Einrichtungen mit geringer Priorität nicht
bevorzugt. Statt dessen wird ein dynamisches Zuteilungsschemaimplementiert,
welches verschiedenen Einrichtungen während des Betriebes verschiedene
Prioritäten
zuordnet. Dieses dynamische Zuteilungsschema wird durch die folgenden
Faktoren beeinflußt:
- 1. Die intrinsische Priorität der Einrichtung.
- 2. Es gibt jetzt eine Zeilenübereinstimmung
zwischen einer nachgefragten Adresse und der Adresse einer zuvor
bedienten Anfrage.
- 3. Einer Einrichtung wurde eine Bedienung zu häufig verweigert.
- 4. Der Master wurde zu häufig
bedient.
-
Wie
in 7 dargestellt, wird das Prioritätsschema
für Anfragen
an den Speicheranschluss wie folgt verwendet.
-
Jeder
Anfrage von einer Einrichtung hat eine intrinsische Priorität. Die IOU
kann eine hohe oder normale Priorität beanspruchen, gefolgt von
dem Datenspeicher und dann von dem Befehlsspeicher. Wie auch immer,
eine Eingriffsanfrage (ITV) von einem Datenspeicher hat jedoch die
höchste
Priorität
von allen.
-
Eingabe-/Ausgabe-Anfragen
mit besonders hoher Priorität
können
erzeugt werden. Diese Priorität
ist für
eine Verwendung bei Echtzeit-Eingabe-/Ausgabeperipheriegeräten gedacht,
welche auf Speicher mit geringer Speicherlatenzzeit zugreifen müssen. Diese
Anfragen können
sich über
alle anderen Anfragen außer über Eingriffszyklen
und Zeilenübereinstimmung
hinwegsetzen, wie in 7 gezeigt.
-
Die
intrinsische Priorität
der verschiedenen Einrichtungen wird durch mehrere Faktoren, wie
verweigerte Bedienung, zu viele Ein- und Ausgaben, sowie eine Zeilenübereinstimmung
verändert.
Jedesmal wenn einer Einrichtung die Bedienung verweigert wird, wird
ein Zählerstand
erniedrigt. Wenn der Zähler
0 erreicht hat, wird die Priorität
der Einrichtung auf einen Prioritätspegel, der VERWEIGERTE PRIORITÄT genannt
wird, erhöht.
Diese Zähler
können
mit irgendeinem programmierbaren Wert bis zu einem Maximalwert von
15 geladen werden. Wenn der Zähler
einmal 0 erreicht hat, wird ein VERWEIGERUNGSBIT gesetzt, welches
endgültig
dann gelöscht
wird, wenn die abgewiesene Einrichtung bedient wird. Dieses Verfahren
der Erhöhung
der Priorität
einer Einrichtung, der eine Bedienung verweigert wurde, verhindert
ein Aushungern. Es soll festgestellt werden, dass eine Priorität aufgrund
einer verweigerten Bedienung nicht an die IOU vorgegeben wird, weil
der Pegel der intrinsischen Priorität der IOU selber schon hoch
ist.
-
Weil
die IOU intrinsisch bereits eine Einrichtung mit hoher Priorität ist, ist
es auch erforderlich, einen Zähler
zu haben, der sie davor bewahrt, ein Anschlußschwein zu sein. Jedesmal
wenn der IOU die Benutzung des Anschlusses zuerteilt wird, wird
ein Zähler
dekrementiert. Wenn der Zähler
einmal 0 erreicht hat, wird die IOU so behandelt, als habe sie den
Bus zu häufig
benutzt, und der Prioritätspegel der
IOU wird verringert. Das Absenken des Prioritätspegels der IOU bezieht sich
nur auf Anfragen mit normaler Priorität und nicht auf Eingabe-/Ausgabe-Anfragen
mit hoher Priorität.
Wenn einer IOU die Benutzung eines Anschlusses für einen Anfragezyklus nicht
zu erteilt wird, wird das Schweineprioritätsbit gelöscht.
-
Ein
anderer Faktor, der die intrinsische Priorität der Anfrage verändert, ist
die Zeilenübereinstimmung.
Zeilenübereinstimmung
wird hauptsächlich
für den
Befehlsspeicher wichtig. Wenn eine Einrichtung eine Speicherstelle
nachfragt, die dieselbe Zeilenadresse wie eine zuvor bediente Anfrage
besitzt, wird die Prorität
der anfragenden Einrichtung erhöht.
Dies wird so gemacht, dass die RAS nicht neu bekräftigt zu
werden braucht.
-
Wie
auch immer, es gibt eine Grenze, wodurch Zeilenübereinstimmung erhalten bleiben
kann. Wieder einmal wird ein Zähler
mit einem programmierbaren maximalen Wert verwendet. Jedesmal, wenn
eine Anfrage aufgrund einer Zeilenübereinstimmungspriorität bedient
wird, wird der Zähler
dekrementiert. Wenn der Zähler
0 erreicht hat, wird das Zeilenübereinstimmungsprioritätsbit gelöscht. Der Zähler wird
dann wieder mit einem programmierbaren Wert vorgeladen, wenn ein
neuer Master des Anschlusses benannt ist oder wenn keine Anfrage
nach einer Zeilenübereinstimmung
vorliegt. Die oben beschriebenen Zähler sind in der Schaltzuteilungseinheit 58 angeordnet.
-
Eine
Schreibanfrage nach einem Speicheranschluss wird nur dann zuerteilt,
wenn der Schreibdatenbus des Schalters SW_WD verfügbar ist.
Wenn er nicht verfügbar
ist, wird eine andere Anfrage ausgewählt. Die einzige Ausnahme besteht
für das
Eingriffssignal ITV. Wenn der SW_WD nicht verfügbar ist, wird keine Anfrage
selektiert. Stattdessen wartet der Prozessor, bis der SW_WD frei
ist und übermittelt dann
die Anfrage an den Schaltzuteiler.
-
Das
Zuteilungsschema für
das Schaltnetzwerk 54 unterscheidet sich geringfügig von
dem, welches für
die Zuteilung eines Anschlusses verwendet wird. Die Schaltzuteilungseinheit 58 gemäß 3 benutzt
zwei verschiedene, durch Software selektierbare Zuteilungsschemata,
wenn sie eine Zuteilung für
einen Anschluss vornimmt:
- 1. Slavepriorität bei der
die Priorität
auf dem Slave oder auf der anfragenden Einrichtung (nämlich dem
Speicher -oder IOU-Anschluss) beruht, und
- 2. Masterpriorität,
wobei die Priorität
auf dem Master oder der anfragenden Einrichtung (nämlich der
IOU, dem Daten- und Befehlsspeicher) beruht.
-
Bei
dem Slaveprioritätsschema
wird die Priortät
immer den Speicheranschlüssen
in einem Rotationsverfahren, z. B. zuerst den Speicheranschlüssen 0,
1, 2... und dann der IOU zuerteilt. Im Gegensatz dazu, wird bei
dem Masterprioritätsschema
die Priorität
zunächst
an die IOU und dann an den Daten- und Befehlsspeicher gegeben. Selbstverständlich kann
es unter bestimmten Umständen
notwendig oder vorteilhaft sein, die höchste Priorität bei der Masterpriorität an eine
ITV Anfrage zu vergeben und es kann ebenfalls notwendig oder besser
sein, dem Befehlsspeicher eine hohe Priorität zuzuweisen, wenn der Vorabbefehlspuffer
bald leer wird. In jedem Fall ist eine Software verfügbar, um
das verwendete Prioritätsschema
so einzustellen, dass es mit den verschiedenen Betriebsbedingungen
in Einklang steht.
-
Die
dynamische Speicherauffrischung basiert ebenfalls auf einem Prioritätsschema.
Ein an eine Zustandsmaschine angeschlossener Zähler wird dazu verwendet, darüber zu informieren,
wie viel Zyklen zwischen den Auffrischungen verstrichen sind, z.
B. die Häufigkeit,
mit der eine Auffrischung nachgefragt wird und verweigert wurde,
weil der MAU Bus belegt war. Wenn der Zähler einen vorgegebenen Wert
erreicht, z.B. überschreitet,
erzeugt er ein Signal für
den Anschluss, welches dem Anschluss mitteilt, dass er eine Auffrischung
benötigt.
Wenn der Anschluss damit beschäftigt
ist, Anfragen von dem Daten- oder dem Befehlsspeicher oder der IOU
zu bedienen, wird er die Auffrischungsanfrage nicht bedienen, bis
er zuvor eine bestimmte Anzahl dieser Anfragen abgewiesen hat. Mit
anderen Worten, eine Priorität
für die
Bedienung von Auffrischungsanfragen wird dann vergeben, wenn die
Auffrischungsanfragen eine vorgegebene Anzahl von malen abgewiesen
wurden. Wenn der Anschluss bereit ist, die Auffrischungsanfrage
zu bedienen, informiert er die Buszuteilungssteuerungseinheit, um
eine Zuteilung für
den MAU Bus zu starten.
-
Eine
Zeile wird vorzugsweise alle 15 μsec aufgefrischt
und muss innerhalb einer vorgegebenen Periode, z. B. wenigstens
alle 30 μsec
aufgefrischt werden.
-
Wenn
die RAS (bestätigt)
nach unten geht und die CAS nicht bestätigt wird, wissen alle CPUs, dass
eine Auffrischung stattgefunden hat. Weil alle CPUs darüber informiert
sind, wann die Auffrischungen auftreten, kann irgendeine oder mehrere
von ihnen eine Auffrischung beantragen, falls erforderlich.
-
Die
Beschreibung oben beschreibt ein Multiprozessorsystem, das eine
Vielzahl von Mikroprozessoren und eine Speicherfeldeinheit (MAU)
umfasst. Jeder der Mikroprozessoren umfasst Master-Vorrichtungen
und Slave-Vorrichtungen, wobei die Slave-Vorrichtungen einen Speicheranschluss
oder mehrere Speicheranschlüssen,
die an die Speicherfeldeinheit angeschlossen sind, und eine Speichersteuereinheit
zum Steuern des Zugriffs auf die Speicherfeldeinheit über einen
Speicheranschluss oder mehrere Speicheranschlüsse enthalten. Die MCU umfasst
ein Schaltnetzwerk, das an einen Speicheranschluss oder mehrere
Speicheranschlüsse
angeschlossen ist, um die Daten zwischen den Master-Vorrichtungen
und dem einen Speicheranschluss oder den mehreren Speicheranschlüssen zu übertragen,
Schaltzuteilungseinrichtungen zum Zuteilen des Schaltnetzwerkes
und Anschlusszuteilungseinrichtungen zum Zuteilen des einen Speicheranschlusses oder
der mehreren der Speicheranschlüsse.
-
Der
eine Speicheranschluss oder die mehreren Speicheranschlüsse können ein
Einzelspeicheranschluss sein. Die MCU kann des Weiteren einen Speicheranschluss-Schnittstellenschaltkreis,
eine Einrichtung zum Anschließen
des Speicheranschluss-Schnittstellenschaltkreises zwischen die Speicheranschlüsse und
das Schaltnetzwerk, eine Einrichtung zum Übertragen einer Anforderung
zum Übertragen
von Daten über
den Speicheranschluss durch das Schaltnetzwerk und den Anschluss-Schnittstellenschaltkreis
zu der Anschlusszuteilungseinrichtung und eine Einrichtung zum Übertragen
eines Anschluss-Verfügbarkeitssignals von
der Anschlusszuteilungseinrichtung zu der Schaltzuteilungseinrichtung,
wann der Anschluss-Schnittstellenschaltkreis zum Bearbeiten der Anforderung
frei ist, umfassen.
-
Die
MCU kann des Weiteren einen Speicheranschluss-Schnittstellenschaltkreis
und eine Einrichtung zum Anschließen des Speicheranschluss-Schnittstellenschaitkreises
zwischen die Speicheranschlüsse
und das Schaltnetzwerk umfassen.
-
Die
Beschreibung oben offenbart ein Verfahren zum Übertragen von Daten in einer
Mehrprozessorarchitektur, das in der Lage ist, mehrere Prozessoren
zu unterstützen.
Dieses Verfahren stellt eine dynamische Priorität für IOU.D-Cache- und I-Cache-Anforderungen
als eine Funktion der intrinsischen Priorität, die jeder Vorrichtung zugewiesen
ist, und einer Vielzahl von Faktoren, einschließlich des Vorhandenseins einer
Zeilenübereinstimmung
zwischen einer Anforderungsadresse und einer vorhergehenden Anforderung,
der Anzahl von Malen, die einer Vorrichtung der Dienst verweigert
wurde, und die Anzahl von Malen, die ein Dienst ohne Unterbrechung
zugelassen wurde, bereit. Das Verfahren verfolgt des Weiteren die
Anzahl von Malen, die jeder dieser Faktoren auftritt. Das Verfahren ändert des Weiteren
die Priorität
der Vorrichtungen als eine Funktion der intrinsischen Priorität und der
Anzahl.