DE2841041A1 - Datenverarbeitungsanlage mit mindestens zwei mit einem schnellen arbeitsspeicher ausgeruesteten prozessoren - Google Patents

Datenverarbeitungsanlage mit mindestens zwei mit einem schnellen arbeitsspeicher ausgeruesteten prozessoren

Info

Publication number
DE2841041A1
DE2841041A1 DE19782841041 DE2841041A DE2841041A1 DE 2841041 A1 DE2841041 A1 DE 2841041A1 DE 19782841041 DE19782841041 DE 19782841041 DE 2841041 A DE2841041 A DE 2841041A DE 2841041 A1 DE2841041 A1 DE 2841041A1
Authority
DE
Germany
Prior art keywords
memory
data
main memory
command queue
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE19782841041
Other languages
English (en)
Inventor
Eugene Joseph Annunziata
Robert Sidney James
Kwang Gun Tan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE2841041A1 publication Critical patent/DE2841041A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions

Description

Die Erfindung betrifft eine Anordnung für den Betrieb von schnellen Pufferspeichern in einer mit mehreren Prozessoren arbeitenden Datenverarbeitungsanlage und einem von allen Prozessoren gemeinsam benutzten Hauptspeicher.
Stand der Technik
Anmelderin: International Business Machines
Corporation, Armonk, N.Y. 10504
heb-om
Datenverarbeitungsanlage mit mindestens zwei mit einem schnellen Arbeitsspeicher ausgerüsteten Prozessoren
Der in IEEE Computer Group News, März 1969, erschienene Aufsatz von C. J. Conti "Concepts for Buffer Storage" beschreibt einen hierarchischen Speicher, bei dem ein großer langsam arbeitender, dreidimensionaler Kernspeicher mit einem relativ kleinen, sehr schnell arbeitetenden Pufferspeicher zusammenarbeitet, der in integrierter Schaltungstechnik hergestellt ist. Bei Verwendung dieser Pufferspeicher/ Hauptspeicher-Anordnung kann die Zentraleinheit (CPU) Daten mit hoher Geschwindigkeit von dem Pufferspeicher abrufen, dessen Arbeitsgeschwindigkeit weitgehend an den Maschinenzyklus der CPU angepaßt ist. Wenn die CPU die Adresse der gewünschten Information an das Speichersystem abgibt, bestimmt eine Steuerschaltung, ob die adressierten Daten vom Hauptspeicher nach dem Pufferspeicher übertragen worden sind oder nicht. Werden die Daten im Pufferspeicher aufgefunden, dann kann die CPU zum Pufferspeicher mit hoher Geschwindigkeit zugreifen. Liegen die Daten jedoch nicht im Pufferspeicher, dann werden durch Steuerungen die Daten vom Hauptspeicher nach dem Pufferspeicher übertragen. Ein Benutzer-Algorithmus stellt sicher, daß die am häufigsten benutzten Daten im schnellen Puffer-
PO 976 OO1
909832/0486
2041041
speicher abgespeichert sind. Bei einem wirkungsvollen Algorithmus werden die meisten Zugriffe für Daten erfolgen, die im j schnellen Pufferspeicher liegen. Dadurch erhält man ein korn- \ biniertes System, das zwar effektiv mit einer Geschwindigkeit
arbeitet, die die des schnellsten Speichers nahezu erreicht, ! während die Kosten mehr die des langsamsten und billigsten j Speichers sind. ;
Im Stand der Technik sind solche Pufferspeicher/Hauptspeicher- · Anordnungen für den Benutzer transparent, und die Arbeitsweise
des Pufferspeichers wird durch Steuerschaltungen gesteuert. j Wenn die CPU einen Speicherzugriff einleitet, dann wird die | hauptspeicheradresse an die Speicherhierarchie abgegeben. Die j Steuerungen adressieren eine Suchanordnung oder einen Listen- I speicher des schnell arbeitenden Pufferspeichers und bestimmen, ob die gesuchte Adresse derzeit im schnellen Pufferspeicher
liegt. Ist dies der Fall, so stehen die Daten unmittelbar für
äie CPü zur Verfügung. Liegt die angeforderte Information
derzeit nicht im Pufferspeicher, dann wird eine Zugriffs-Dperation nach dem Hauptspeicher eingeleitet. Die zur Aufnahme ier vom Hauptspeicher kommenden Information dienenden Pufferspeicherplätze werden durch eine Austauschlogik bestimmt,
lie gemäß einem vorbestimmten Algorithmus bestimmt, welche im
Pufferspeicher liegenden Daten durch die vom Hauptspeicher
commenden neuen Daten ersetzt werden sollen. Wird der Speichersugriff im Hauptspeicher eingeleitet, dann erfolgt zunächst
ier Zugriff zu dem exakt gesuchten Wort, das dann unmittelbar
an die CPU und den Pufferspeicher übertragen wird. Die im
gleichen Datenblock enthaltenen Datenworte werden ebenfalls
/om Hauptspeicher abgerufen und im Pufferspeicher abgespeichert robei sich die Größe eines solchen Datenblocks entsprechend
len Systemdaten bestimmt.
3erzeit gibt es drei Verfahren zur Durchführung von Speicherjperationen. Das sogenannte "Durchspeichern" wird in den
po 976 °01 909832/0486
j 2641041
ι
ί
meisten bestehenden Systemen benutzt. Bei diesem Verfahren werden Daten immer unmittelbar im Hauptspeicher abgespeichert iund das Pufferadressregister wird überprüft, ob der adressierte Datenblock sich derzeit im Pufferspeicher befindet. Ist der Datenblock in dem Pufferspeicher, dann können die Daten auch dort abgespeichert werden. Bei einigen Systemen, bei denen in Eingabe/Ausgabe-Operationen nur im Hauptspeicher !abgespeichert wird, wird der zugehörige Datenblock im Pufferspeicher dadurch ungültig gemacht, daß ein sogenanntes Gültigkeitsbit auf Null eingestellt wird, so daß alle folgenden 'Zugriffe zum gleichen Datenblock einen Zugriff zum Hauptspeicher mit Überführung der Daten nach dem Pufferspeicher !erforderlich machen.
[Beim zweiten Verfahren wird das Pufferadressregister daraufhin überprüft, ob der adressierte Datenblock sich derzeit im 'Pufferspeicher befindet. Ist dies der Fall, dann werden die Daten ohne weiteres unmittelbar im Pufferspeicher abgespeichert ilst dies nicht der Fall, dann werden die Daten im Hauptspeicher iabgespeichert.
Beim dritten Verfahren "Speichere im Pufferspeicher" werden die Daten grundsätzlich im Pufferspeicher abgespeichert. Wenn ein Speicherbefehl nicht im Pufferspeicher liegende Daten adressiert, dann holt das System den Datenblock vom Hauptspeicher nach dem Pufferspeicher und speichert dann die neuen Daten in dem Block im Pufferspeicher ab.
Der oben erwähnte Aufsatz beschreibt verschiedene Verfahren für eine Datenorganisation und für einen Zugriff zu solchen Daten in einem schnell arbeitenden Pufferspeicher. Ein solches Verfahren, das auch im Zusammenhang mit der vorliegenden Erfindung bevorzugt werden soll, ist beispielsweise in der US-Patentschrift 3 588 Ö29 der Anmelderin, die der Deutschen !Patentanmeldung P 19 56 604.2 entspricht, beschrieben. Bei
PO 976 001
909832/0486
diesem Verfahren wird die Adresseninformation in Bücher, Seiten und Worte unterteilt. Entsprechend der Speichergröße gibt es eine Anzahl von Büchern mit einer Anzahl von Seiten, und jede Seite enthält eine bestimmte Anzahl von Worten. Beispielsweise kann festgelegt sein, daß jedes Buch 128 Seiten enthält und daß jede Seite eine vorbestimmte Anzahl von Worten enthalten soll. Ist diese Festlegung getroffen, dann steht damit fest, daß der schnell arbeitende Pufferspeicher 128 Speicherabschnitte enthält, wobei jeder Speicherabschnitt die Anzahl der Worte in einer Seite enthält. Den 128 Abschnitten des Pufferspeichers ist ein Listenspeicher oder eine Adressenindex-Anordnung zugeordnet, die 128 Register enthält. Bei diesem assoziativen Zugriffsverfahren findet man die entsprechende Seitenzahl eines jeden der vorbestimmten Anzahl von Büchern immer im gleichen Abschnitt des schnellen Pufferspeichers. Das heißt, daß Seite 10 eines jeden Buches im Hauptspeicher immer am Speicherplatz 10 im Pufferspeicher aufzufinden ist. Das zugehörige Register im Listenspeicher enthält dann einen Eintrag, der das bestimmte Buch kennzeichnet, zu dem diese Seite 10 gehört. Zur Feststellung, ob die angeforderten Daten im schnellen Pufferspeicher liegen, werden die die Seiten kennzeichnenden Ädressbits zum Ansteuern des Listenspeichers und gleichzeitig damit zum Zugriff für den Pufferspeicher benutzt. Die Eintragung im Register 10 des Listenspeichers wird mit der zugeführten Adresse verglichen und damit festgestellt, ob der Buchwert der angelegten Adresse dem im Register eingespeicherten Buchwert entspricht. Ist dies der Fall, dann zeigt dies, daß die angeforderte Seite 10 des angeforderten Buches die im Pufferspeicher an dieser Stelle enthaltenen Daten darstellt.
Sind die Daten nicht in dem angeforderten Buch, dann wird die Seite 10 des angeforderten Buches vom Hauptspeicher nach dem Pufferspeicher übertragen und im Speicherabschnitt 10 des Pufferspeichers eingefügt, und die Kennung des angeforderten
909832/0486
Buches wird dann im zugehörigen Register des Listenspeichers eingegeben.
Ein anderes Verfahren, das bereits bei Multiprozessoren Berücksichtigung gefunden hat, ist ein sogenanntes "Volles Assoziativ-Verfahren". Bei diesem Verfahren kann der schnell arbeitende Pufferspeicher beispielsweise mit 16 Speicherabschnitten versehen sein. Jedem Speicherabschnitt ist ein Register zugeordnet. Die Größe eines jeden Speicherabschnitts kann dabei für die Speicherung eines ganzen Buches ausreichen. In einem zugehörigen Register wird ein in einem bestimmten Speicherabschnitt abgespeichertes Buch gekennzeichnet. Wenn eine Adresse zugeführt wird, dann wird der Buchadressteil mit den Eintragungen in allen Registern verglichen, und wenn eine entsprechende Eintragung festgestellt wird, dann liegen die gesuchten Daten in dem diesem Register zugeordneten Speicherabschnitt. Bei einem vollen assoziativen Verfahren können vom Hauptspeicher nach dem Pufferspeicher übertragene Daten in irgendeinem der Speicherabschnitte eingespeichert werden. Müssen Daten eingefügt werden, dann bestimmt ein Austauschalgorithmus, welcher der Abschnitte erset'zt werden soll, dann werden neue Daten in diesen Speicherabschnitt eingespeichert, und die Kennzeichnung des Buches wird im zugehörigen Register des Listenspeichers aufgenommen.
Ein aus dem Stand der Technik bekanntes Verfahren wurde in Verbindung mit einer Multiprozessor-Anordnung dargestellt unter Verwendung einer voll-assoziativen Speicherung und einer Durchspeicherung. Ein Speicherschutzregister, das zum Schutz einer vorbestimmten Datenmenge im Hauptspeicher dient, weist zusätzliche binäre Bits auf, die angeben, welcher der verschiedenen Prozessoren Daten vom Hauptspeicher nach seinem eigenen zugeordneten Pufferspeicher abgerufen hat. Wenn ein Prozessor Daten im Hauptspeicher unter Verwendung von Durchspeicherung abspeichert, dann xtfird das Speicherschutzregister
P0 97δΟ01 909832/0486
jabgefragt, und wenn festgestellt wird, daß der Datenblock im Pufferspeicher eines anderen Prozessors liegt, dann werden die Daten in dem anderen Prozessor ungültig gemacht,
ι so daß dieser Prozessor beim nächsten Mal die Daten vom Haupt-j speicher holen muß. Dieses aus dem Stand der Technik bekannte j Verfahren ist auf eine Pufferspeicheranordnung beschränkt, bei j der jeder Speicherabschnitt die gleiche Datenmenge enthalten j muß, wie das Speicherschutzregister dies angibt, und befaßt ' sich nicht mit einer assoziativen Pufferanordnung, noch werden jdabei die Probleme angesprochen, die bei Benutzung des I jVerfahrens "Speichere im Puffer" auftreten. I
Die US-Patentschrift 3 735 360 beschreibt ein System mit einem sehr schnell arbeitenden Pufferspeicher in einem Multiprozessor-System mit einem gemeinsam ausgenutzten Hauptspeicher und einer Anzahl von Prozessoren. Jeder dieser Prozessoren enthält dabei seinen eigenen schnell arbeitenden Pufferspeicher, einen zugeordneten Listenspeicher, der die vom gemeinsam benutzten Hauptspeicher nach dem jeweiligen schnell arbeitenden Pufferspeicher übertragenen Daten kennzeichnet, und eine Speichersteuerschaltung für die Aufnahme von aus dem zugeordneten Prozessor kommenden Signalen einschließlich der Adressen von aus dem gemeinsam benutzten Speicher stammenden und zu verarbeitenden Daten sowie eines ZugriffSteuersignals, das angibt, daß die Daten für eine übertragung nach dem Prozessor abgerufen werden sollen, oder daß der Prozessor Daten in der Operandenposition abspeichern soll.
Das System enthält dabei alle Prozessoren miteinander verbindende Schaltmittel, die eine gegenseitige Verriegelung bewirken, in dem unter bestimmten Bedingungen von einem der Prozessoren Adressinformation an alle übrigen Prozessoren übertragen wird, um zusätzlich zum Zugriffssteuersignal anzu- j zeigen, ob die beabsichtigte Operation ein Speicheraufruf oder ein Speichervorgang ist oder nicht. Diese an alle übrigen
PO976001 909832/0486
Prozessoren übertragene Adresse und die Zugriffssteuersignale werde durch die Speichersteuerschaltung aller übrigen Prozessoren dazu benutzt, den weiteren Ablauf in Verbindung mit ■den durch diesen einen Prozessor angeforderten Daten durchzuführenden Ablauf zu bestimmen.
Die den einzelnen Prozessoren jeweils zugeordneten, schnell ,arbeitenden Pufferspeicher haben eine vorbestimmte Anzahl von jspeicherabschnitten und ein zugeordnetes Verzeichnisregister, in dem die Adresse der dem gemeinsam ausgenutzten Hauptspeicher entstammenden, derzeit im schnell arbeitenden Pufferspeicher abgespeicherten Daten gekennzeichnet ist. Durch verschiedene Kombinationen von zusätzlichen binären Bits in den Registern des VerzeichnisSpeichers lassen sich verschiedene Formen der Speicherorganisation und der Zugriffsverfahren durch die an alle übrigen Prozessoren übertragene Adresse und die Zugriffssteuerinformation steuern, wodurch sichergestellt wird, daß jeder Prozessor nur zum jeweils neuesten Wert des im gemeinsamen Hauptspeicher gekennzeichneten Operanden Zugriff erhält.
Wenn für jedes Verzeichnisregister nur ein zusätzliches Steuerbit vorgesehen ist, das die Gültigkeit der Daten im zugeordneten Speicherabschnitt kennzeichnet, dann muß jeder Prozessor immer dann, wenn durch einen bestimmten Prozessor Daten abgespeichert werden sollen, die Adresse und die Zugriffs Steuerinformation an die anderen Prozessoren übertragen. Der Verzeichnisspeicher eines jeden Prozessors wird daraufhin abgesucht, ob sich die gleichen Daten im zugeordneten Speicher des Prozessors befinden oder nicht. Ist dies der Fall, dann wird das Gültigkeitsbit zurückgestellt und zeigt damit an, daß die im zugeordneten eigenen Speicher liegenden Daten nicht länger gültig sind. Ein weiteres, in den Verzeichnisregistern vorzusehendes Bit wird als "Nur-Abrufbit" bezeichnet. Dieses Bit wird eingestellt bzw. rückgestellt und zeigt damit an, ob die in einem dem bestimmten Prozessor zugeordneten eigenen Speicher abgespeicherten Daten nur in diesem einen Speicher
PO 976 001
909832/0486
abgespeichert sind. Das heißt, wenn ein bestimmter Prozessor Daten aus dem gemeinsamen Hauptspeicher nach seinem eigenen Speicher abgerufen und übertragen hat, und wenn es bekannt ist, daß dies die einzige Abspeicherung dieser Daten in einem dem Prozessor eigenen Speicher ist, dann wird dieses Nur-Abrufbit dies kennzeichnen. In diesem Fall wäre es für eine Speicheroperation nicht erforderlich, die Adresse und die Zugriffssteuersignale an andere Prozessoren zu übertragen. Ein weiteres binäres Bit kann in den Registern des Verzeichnisspeichers oder der Indexanordnung als ein sogenanntes Speicherbit vorgesehen werden. Der binäre Wert dieses Bits zeigt einen Zustand an, bei dem sich die im schnell arbeitenden Speicher eines bestimmten Prozessors abgespeicherten Daten von den im gemeinsam benutzten Speicher liegenden Daten unterscheiden. Das heißt wenn Speicherung im Pufferspeicher benutzt wird, dann werden alle Zugriffe zu Daten durch bestimmte Prozessoren im schnell arbeitenden Pufferspeicher einschließlich Zugriffe für die Speicherung von Daten durchgeführt. Sind die Daten nach dem Pufferspeicher eines bestimmten Prozessors übertragen und sind diese Daten danach in dem Pufferspeicher abgespeichert, dann wird das Speicherbit eingestellt. Wenn jedoch ein bestimmter Prozessor die Übertragung von neuen Daten aus dem gemeinsam benutzten Hauptspeicher nach dem Pufferspeicher für eine Speicherung oder einen Abruf anfordert, dann werden die Adresse und Zugriffssteuersignale nach den anderen Prozessoren übertragen. Die Adressinformation der angeforderten Daten wird dann für einen Suchvorgang in den Verzeichnisspeichern aller übrigen Prozessoren benutzt, und es wird festgestellt, ob diese angeforderten Daten in einem der den einzelnen Prozessoren unmittelbar zugeordneten, schnell arbeitenden Pufferspeichern liegen oder ob die Daten dort eingespeichert worden sind oder nicht. Sind die Daten durch einen anderen Prozessor eingespeichert worden, dann müssen die Daten zunächst in ihrer modifizierten Form nach dem gemeinsam benutzten Hauptspeicher zurückübertragen werden,
PO976001 909832/0486
28410A1
so daß der die Daten anfordernde Prozessor aus dem gemeinsam benutzten Speicher die auf den neuesten Stand gebrachten Daten erhält. Dieses Erfordernis ist nicht notwendig, wenn festgestellt wird, daß die im anderen Prozessor befindlichen Daten nicht dort eingespeichert sind und somit die gleichen Werte aufweisen, wie die im gemeinsam benutzten Hauptspeicher liegenden Operanden.
In einem Multiprozessor-System mit Abspeicherung im schnellen Arbeitsspeicher ist es besonders wichtig, daß Abrufanforderungen an den Hauptspeicher nur dann zugelassen werden, wenn der Hauptspeicher die neueste Version der angeforderten Daten enthält. Um zu verhindern, daß ein Prozessor veraltete Daten erhält, d. h. Daten, die im Arbeitsspeicher eines andern Prozessors bereits geändert sind, werden Abrufanforderungen an den Hauptspeicher solange nicht bedient, bis die derzeitige Form der angeforderten Daten in dem Hauptspeicher abgespeichert ist. Dies kann durch eine besondere Art von Schaltung erzielt werden, die veranlaßt, daß der Prozessor periodisch seine Abrufanforderungen erneut abgibt, bis durch eine entsprechende Anordnung im System eine Anzeige erfolgt, daß die angeforderten Daten im Hauptspeicher auf den neuesten Stand gebracht sind. In einem typischen Fall würde die ursprüngliche Abrufanforderung dann, wenn das System dabei erkennt, daß die angeforderten Daten im Arbeitsspeicher eines anderen Prozessors liegen, dazu benutzt werden, ein Signal nach dem die Daten speichernden Prozessor abzugeben, damit dieser diese Daten ausspeichert und eine auf den neuesten Stand gebrachte Version an den Hauptspeicher abgibt. Es ist dabei jedoch möglich, daß zwei oder mehr Prozessoren praktisch zur gleichen Zeit versuchen, die gleichen Daten abzurufen, während diese Daten dabei im Arbeitspeicher eines weiteren Prozessors liegen. Der die Daten besitzende Prozessor wird natürlich ein Signal aufnehmen, daß er diese Daten ausspeichern soll und versuchen soll, die auf den neuesten Stand gebrachten Daten im Hauptspeicher abzuspeichern,
P0976001 9*9832/0486
~ '784TOiT"
dabei jedoch mit anderen Prozessoren in Konkurrenz geraten, die den Abruf der gleichen Daten versuchen. Dieser nahezu gleichzeitig erfolgende Zugriff könnte eine ganz wesentliche Verzögerung der Abspeicherung der auf den neuesten Stand zu bringenden Daten im Hauptspeicher zur Folge haben und könnte, was durchaus denkbar ist, einen Zustand herbeiführen, wo die Gleichzeitigkeit des Speicherzugriffs den Hauptspeicher permanent darin hindert, daß die Daten auf den neuesten Stand gebracht werden, so daß die Datenverarbeitung eingestellt wird
Aufgabe der Erfindung ist es also, einen völligen Stillstand des System zu verhindern, der dadurch entstehen könnte, daß einerseits ein Prozessor versucht, im Hauptspeicher liegende Daten auf den neuesten Stand zu bringen, während gleichzeitig zwei oder mehr weitere Prozessoren versuchen, diese Daten aus dem Hauptspeicher abzurufen.
Kurze Beschreibung der Erfindung
Gemäß einer bevorzugten Ausführungsform der Erfindung wird die der Erfindung zugrunde liegende Aufgabe durch eine Systemsteuereinheit (SCU) gelöst, die unter anderem den Speicherzugriff durch zwei oder mehr Prozessoren koordiniert. Die Systemspeichereinheit enthält für jeden der zugeordneten rozessoren ein Doppel des Arbeitsspeichers-Verzeichnisses, inen BefehlsSchlangenspeicher für den Hauptspeicher und ein jedem Prozessor zugeordnetes Adressregister für auszuspeichernäe Adressen. Wenn immer ein Prozessor einen Zugriff zu Daten unternimmt (Abruf oder Speichern), die bereits in eigenen Arbeitsspeichern liegen, dann beeinflußt dieser Zugriff die SCU nicht. Versucht jedoch ein Prozessor Zugriff zu Daten zu erhalten, die nicht bereits in seinem eigenen Arbeitsspeicher liegen, dann wird diese Zugriffsanforderung an die SCU übertragen, wo sie für nachfolgende Übertragung nach dem Hauptspeicher in eine Warteschlange eingereiht wird. Wird
PO 976 001
909832/0486
eine Zugriffsanforderung an den Hauptspeicher übertragen, dann wird die Adresse der angeforderten Daten mit den Arbeitsspeicherverzeichnissen in der SCU verglichen um festzustellen, ob die angeforderten Daten im Arbeitsspeicher eines andern Prozessors liegen. Ist dies nicht der Fall, dann wird die Zugriffsanforderung zugelassen. Liegen dagegen die angeforderten Daten im Arbeitsspeicher eines anderen Prozessors, dann wird ein Quer-Abfragesignal benutzt, das verhindert, daß Daten aus dem Hauptspeicher nach dem Arbeitsspeicher des anfordernden Prozessors ausgelesen werden, während gleichzeitig dem Prozessor, bei dem die gesuchten Daten im Arbeitsspeicher liegen, ein Signal abgegeben wird, diese Daten nach dem Hauptspeicher auszuspeichern.
Die Zugriffsanforderung zum Hauptspeicher kommt dann in eine Warteschlange, bei der die zuerst eingegebenen Anforderungen auch zuerst wieder ausgegeben werden (FIFO), wobei diese Warteschlange zu einem späteren Zeitpunkt angesteuert wird.
Eine bevorzugte Ausführungsform der Erfindung kann in einem System verwirklicht werden, das zwei oder mehr SCUs verwendet, wobei jeder dieser SCUs zwei oder mehr Prozessoren zugeordnet sind. Wenn in einem solchen System jede SCU nur eine Kopie der Verzeichnisse der ihr zugeordneten Prozessoren enthält, dann muß die Adresse der vom Hauptspeicher angeforderten Daten für eine überprüfung gegen alle Verzeichnisse an jede SCU übertragen werden, um festzustellen, ob die angeforderten Daten innerhalb eines Arbeitsspeichers eines der Prozessoren liegen. Die Erfindung schafft auch eine Koordination, wenn mehr als eine SCU Zugriff zum Hauptspeicher wünscht.
Der wesentlichste Vorteil der Erfindung ist darin zu sehen, daß dadurch eine ordentliche Folge von Zugriffen zum Hauptspeicher ermöglicht wird, während gleichzeitig ein Systemstillstand vermieden wird.
PO 976 001
909832/0486
Die Erfindung wird nunmehr anhand von Ausführungsbeispielen in Verbindung mit den beigefügten Zeichnungen im einzelnen erläutert werden.
In den Zeichnungen zeigt
. 1 ein Blockschaltbild eines System unter Verwendung der wesentlichsten Teile der Erfindung,
Fig. 2 ein Blockschaltbild zur Darstellung von Teilen
der Systemsteuereinheit (SCU) gemäß der Erfindung ,
Fig. 3 Teile der SCU, die für die Erfindung von
besonderer Bedeutung sind,
Fi.g 4 die Organisation der SCU für die Ablauffolge,
5 eine logische Schaltung zum Peststellen des Status innerhalb der SCU,
Fig. 6 die logische Schaltung zum Auswählen von Befehlen aus der Befehlsschlange der SCU,
. 7 ein System unter Verwendung von mehreren SCUs,
?ig. 8 eine Anordnung für die Koordination mehrerer SCUs und
f. 9 . eine Logische Schaltung für den Bedienungsablauf der Prozessoren durch eine SCU.
E1Ig. 1 zeigt ganz allgemein die Umgebung, in der die Erfindung Anwendung finden kann. Im System zu benutzende Operanden sind Ln einem gemeinsam benutzten Hauptspeicher 10 enthalten.
PO 976 001
909832/0486
Zugriff zu diesen Operanden haben eine Reihe von Datenprozessoren 11 und 12. Jeder der Prozessoren steuert die gewünschten Operanden im gemeinsam benutzten Speicher 10 über Adressleitungen 13 bzw. 14 an. Die Prozessoren 11 und 12 haben ihre eigenen schnellen Arbeitsspeicher 15 und 16 sowie Datenleitungen 17 bzw. 18 für die Übertragung von Daten zwischen den Prozessoren und dem jeweiligen Arbeitsspeicher. Eine Zugriffsanforderung zu Speicherplätzen von Operanden, die auf den Adressleitungen 13 oder 14 bezeichnet sind, werden über Zugriffssteuerleitungen 19 und 20 angezeigt. Adresssteuersignale geben dabei an, daß der Prozessor zum Speicherplatz eines Operanden Zugriff zu erhalten wünscht, entweder um einen Operanden nach dem Prozessor abzurufen oder aber, um aus dem Prozessor kommende Daten nach dem angesteuerten Speicherplatz zu übertragen.
Die über Adressleitungen 13 und 14 übertragene Adressinformation wird einer örtlichen Speichersteuerung 21 bzw. 22 zugeführt, die bestimmt, ob die angeforderten Daten im eigenen Arbeitsspeicher 15 oder 16 des zugeordneten Prozessors 11 bzw. 12 abgespeichert sind, ist dies der fall, dann werden die Daten unmittelbar über die Datenleitungen 17 oder 18 übertragen. Stellt die Speichersteuerung 21 oder 22 fest, daß die angeforderten Daten nicht in den Arbeitsspeichern 15 oder 16 liegen, dann wird über Steuerleitung 23 oder 24 eine Anforderung abgegeben, die die Übertragung der Daten vom gemeinsam benutzten Hauptspeicher 10 über Speicherdatenleitungen
oder 26 nach dem Arbeitsspeicher 15 oder 16 einleitet. Ob <ä£o aage£©2<äe£fee& Datssi in dem jeweiligen Arbeitsspeicher iogoa eäQS &&©hfeff i-Jisdl etaseh ©iaen S^etaioehanisHius mit den 27 mtS. 28
wisd ©ia© SjofcemsfcGuesuiag (SCO) 29 <ä,io Qieh®SBtQllt,ο <äaß joäQr Peos©ss©s wax solche
aastouoetj, on dosea die sulGtst
PO 2>7β 001
10S832/048
gültige Fassung des Operanden abgespeichert ist, da jeder der Prozessoren unabhängig von den anderen die Werte eines Operanden verändern kann. Die SCU 29 koordiniert außerdem die Speicherzugriffe der Systemprozessoren. Die SCU enthält dabei eine Kopie eines jeden Verzeichnisses 27 und 28, so daß überprüft werden kann, ob Daten aus einer gegebenen Hauptspeicherposition in einem der Arbeitsspeicher 15 oder 16 liegt.
In Fig. 2 sind weitere Einzelheiten der SCU 29 (Fig. 1) gezeigt. Insbesondere zeigt Fig. 2 die Teile der SCU, die sie befähigen, mit den Prozessoren zu verkehren und den Hauptspeicherzugriff durch die Prozessoren zu steuern. Nachdem die im Prozessor liegenden Schaltungen bestimmt haben, daß die bei einer Speicherzugriffsanforderung angeforderten Daten nicht im Arbeitsspeicher dieses Prozessors liegen, wird die Speicherzugriffsanforderung an ein Speichereingaberegister PIR 31 in der SCU übertragen. Während des nächsten Maschinenzyklus wird der vom Prozessor aufgenommene Befehl über Leitung 32 nach einem Speichereingangsregister SIR 33 übertragen, von wo aus das Hauptspeichermodul BSM adressiert wird. Gleichzeitig mit dieser letztgenannten Datenübertragung wird der im PIR 31 liegende Befehl über Leitung 34 nach einem Quer-Abfrageregister XIR 35 und an einen Speicherbefehlspuffer MCB 36 und in einen Befehlsschlangenspeicher 37 übertragen. Der in XIR 35 liegende Befehl dient zum Abfragen der Verzeichniskopien 38, die in der SCU für jeden dieser zugeordneten Prozessoren unterhalten wird. Besteht keine Übereinstimmung zwischen dem Inhalt von XIR 35 und einer der Verzeichniskopien 38, dann wird der Hauptspeicher die angeforderten Daten nach dem Arbeitsspeicher des anfordernden Prozessors über das Speicherausgangsregister SOR 39 und das Prozessor-Ausgangsregister POR 40 übertragen. In der bevorzugten Ausführungsform der Erfindung findet die Übertragung vom Hauptspeicher nach dem Arbeitsspeicher immer in Form einer Seite statt, die aus 16 Doppelworten besteht.
po 976 001 9 0 9 8 3 2/0486
Besteht Übereinstimmung mit dem Inhalt von XIR 35 mit einer Eintragung in einem der Verzeichnisse 38, dann gibt eine der Vergleichsstufen 41 über Leitung 42 ein Signal ab, das eine positive Quer-Abfrage Da Das die SCU ein Verzeichnis für den Arbeitsspeicher eines jeden Prozessors enthält, kann sie feststellen, welcher Prozessor die Daten in seinem Arbeitsspeicher gespeichert hält. Dieser Prozessor erhält dann ein Signal, das ihn auffordert, durch Rückspeicherung in den Hauptspeicher die durch einen anderen Prozessor gewünschten Daten auszuspeichern. Dieses Querabfragesignal wird auch dazu benutzt, ein Wartebit in dem Befehl einzustellen, der die Quer-Abfrage veranlaßte, um damit zu verhindern, daß die aus dem Hauptspeicher ausgelesenen Daten nach dem anfordernden Prozessor übertragen werden. Dies ist deshalb notwendig, da zur Verbesserung des Systemwirkungsgrads in der bevorzugten Ausführungsform ein Speicherzugriff nach dem BSM eingeleitet wird, so bald ein Befehl in das SIR 33 eingelesen wird.
Der Prozessor, der eine Ausspeicherung durchführen soll, wird dann für eine Übertragung von Daten aus seinem Arbeitsspeicher nach dem Hauptspeicher einen Speicherbefehl abgeben. Wenn der Prozessor ein die Ausspeicherung von Daten und die Rückspeicherung dieser Daten im Hauptspeicher anordnendes Signal aufgenommen hat, dann muß das mit diesem Prozessor verbundene Verzeichnis berichtigt werden, da der Prozessor diese Daten nicht länger gespeichert hält. Solange jedoch der Speichervorgang nicht erfolgreich abgeschlossen ist, kann kein anderer Prozessor für diese Daten im Hauptspeicher Zugriff erhalten. Zur Durchführung dieser Funktionen muß diejenige Eintragung in einem der Verzeichnisse 38 des zugehörigen Prozessors, welche ausgespeichert werden soll, nach dem Ausspeicherregister COR 43 übertragen werden. COR 43 ist eine Vergleichsstufe 44 zugeordnet, die ein Eingangssignal von COR 43 und ein anderes Eingangssignal von XIR 35 (vorzugsweise über Verzeichnisregister 64) aufnimmt. Die Vergleichsstufe 44 kann
P0 976001 909832/048B
dann ein Quer-Abfragesignal erzeugen, wenn ein Prozessor einen Zugriff zu einem solchen Abschnitt des Hauptspeichers versucht, der noch nicht vom Arbeitsspeicher eines anderen Prozessor ausgespeichert worden ist, obwohl dieser letztgenannte Prozessor diese Daten nicht mehr im ausschließlichen Besitz hat. Das durch die Vergleichsstufe 44 erzeugte Quer-Abfragesignal wird in genau der gleichen Weise benutzt, wie ein durch eine der Vergleichsstufen 41 erzeugtes Quer-Abfragesignal, jedoch mit der Ausnahme, daß das durch die Vergleichsstufe 44 erzeugte Signal kein Ausspeichersignal erzeugen wird. Nachdem die Ausspeicherung durch übertragung der Daten von einem Arbeitsspeicher des Prozessors nach dem Hauptspeicher abgeschlossen ist, werden alle Wartekennzeichen von im MCB 36 liegenden Befehlen zurückgestellt, und es wird vom MCB 36 über Leitung 45 nach PIR 31 ein Befehl übertragen, daß die Befehlsverarbeitung erneut versucht werden kann.
Pig. 3 zeigt eine vereinfachte Darstellung von Teilen der SCU, die solche Teile der SCU getrennt darstellt und besonders hervorhebt, die für die Erfindung von besonderer Wichtigkeit sind. Ein vom Prozessor kommender Befehl läuft nach PIR 31 und wird von dort in einen Befehlsschlangenspeicher eingesetzt und dann über Leitung 34 an den Hauptspeicher abgegeben. Zur gleichen Zeit wird die Adresse des Befehls im PIR 31 nach den Vergleichsstufen 41 übertragen um festzustellen, ob die angeforderten Daten im Arbeitsspeicher eines anderen Prozessors gehalten sind, wie dies durch eines der Verzeichnisse 38 angezeigt würde, und diese Adresse wird außerdem nach den Vergleichsstufen 44 übertragen um festzustellen, ob diese Adresse eine der Adressen im Ausspeicherregister 43 ist. Der als Verzeichnis 38 arbeitende Vier-Weg-Aesoziativspeicher wird durch das Adressregister 46 »dressiert, dem der Teil niedriger Ordnung der Adresse des
976 001 909832/0486
Befehls in PIR 31 zugeleitet wird. Ist die Quer-Abfrage negativ verlaufen, dann wird der Speicherzugriff bis zu seiner Erledigung ablaufen, ist jedoch die Quer-Abfrage positiv verlaufen, dann erzeugt eine der Vergleichsstufen 41 oder 44 ein Signal, das verhindert, daß die Daten vom Hauptspeicher nach dem anfordernden Prozessor übertragen werden. Dabei wird das Wartebit des entsprechenden Befehls eingestellt und der Prozessor wird benachrichtigt, dessen Arbeitsspeicher die Daten enthält, daß diese Daten ausgespeichert werden müssen (wenn allerdings die positive Quer-Abfrage durch eine der Vergleichsstufen 41 erzeugt wurde). In einem nachfolgenden Zyklus wird ein Befehl aus dem Befehlsschlangenspeicher 37 in PIR 31 eingesetzt und die soeben beschriebene Folge läuft erneut ab.
In Fig. 4 ist die Anordnung gezeigt, durch die die Befehlsschlange nach dem Prinzip "zuerst rein, zuerst raus" (FIFO) betrieben wird. Jedem der Befehle in der Befehlsschlange ist ein Kennzeichnenregister zugeordnet, das den Status des Befehls betreffende Information enthält, wie dies weiter unten besprochen wird. Jedes Kennzeichenregister enthält ein Sültigkeitsbit, das anzeigt, ob der zugeordnete Befehl gültig ist, d. h. ob er noch abgearbeitet werden muß. In dieser bevorzugten Ausführungsform enthält die Befehlsschlange 8 Befehlspositionen, und es gibt daher auch 8 Kennzeichenregister 0, 1, 2, 3, 4, 5, 6 und 7. Von der Gültig-Position sines jeden Kennzeichenregisters wird ein Signal nach einem abrufmechanismus 45 übertragen, der eine Anzeige für die nächste freie Adresse in der Befehlsschlange liefert. Tatsächlich, wie sich dies aus der nachfolgenden Beschreibung loch ergibt, könnte die nächste freie Adresse aus den freien Adressen der Befehlsschlange beliebig ausgewählt werden» En der bevorzugten Ausführungsform wird ein Abrufmechanismus aenutzt, der willkürlich die Befehlsschlangen-Adresse mit ler niedrigsten Nummer als die nächste frei® Adresse auswählt«. 3iese Adresse, die duseh den Ort eines einzigen Bit in
P0 976001 909832/0488
- Δλ -
einem 8-Bit-Byte dargestellt ist, wird nach einem Befehlskennzeichen-Adressregister 46 übertragen und läuft von dort nach einem Codierer 47, der die Adresse in eine 3-Bit-Adresse codiert. Diese Adresse wird über Leitung 48 zur Adressierung des Befehlsschlangenspeichers 37 und des zugehörigen Kennzeichenregisters über das in Fig. 3 gezeigte Adressregister 49 adressiert. Diese Adresse wird außerdem in die oberste Position (Pos. O) eines Kellerspeichers 50 (LIFO = Last in First out) eingegeben, der aus acht 4-Bit-Registern besteht. Jedes Register im Kellerspeicher 50 hält eine oben beschriebene 3-Bit-Adresse und ein Kennzeichenbit F, das anzeigt, daß die j Eintragung gültig ist. Der Kellerspeicher 50 ist so ausgelegt, ■ äaß jedesmal dann eine Verschiebung nach unten erfolgt (d. h. j in Richtung auf das unterste Register Nr. 7), wenn irgendeine !
aiedrigere Position (d. h. niedrigere Nummern einer Register- \
i position mit Register Nr. 7 als die niedrigste und Register j
tfr. 0 als die höchste Position) keine durch ein Kennzeichenbit ( angezeigte gültige Eintragung enthält. Auf diese Weise zeigen lie Register des Kellerspeichers 50 die gültige Eintragungen änthalten, die Reihenfolge an, in der die Befehle in den Be-Eehlsschlangenspeicher 37 (Fig. 3) eingespeichert worden sind, biegt im Register 7 des Kellerspeichers 50 eine Eintragung, dann enthält diese Eintragung die Adresse desjenigen Befehls in lern Befehlsschlangenspeicher 37, welcher am längsten in der Be-Eehlsschlange wartet. Das Register 0 enthält dann, wenn darin äine gültige Eintragung eingespeichert ist, die Adresse des suletzt in die Befehlsschlange eingespeicherten Befehls. So, ixe die Befehle in der Befehlsschlange abgearbeitet werden, !nüssen die entsprechenden Eintragungen im Kellerspeicher unjültig gemacht werden. Sie werden dabei nach Abarbeitung (oder früherer Beendigung) eines Befehls ungültig gemacht. Dieses Ungültig- (oder Rückstell-) Signal wird über Leitung 6 6 von der Abruf- oder Abspeichersteuerung oder von der Fehler-Logik (nicht gezeigt) aufgenommen.
po 976 °01 909832/0488
28 4TWI
Fig. 5 zeigt zusätzliche Einzelheiten der den Befehlen in der Befehlsschlange zugeordneten Kennzeichenregister. Jedes dieser Register enthält eine den Status des zugeordneten Befehls kennjzeichnende Information. Die Kennzeichenregister in Fig. 5 zeigen sieben Statusbits: Die Gültigkeitsbits VAL zeigen an, daß der zugehörige Befehl noch nicht ausgeführt ist, d. h.,
daß nach Durchführung des Befehls das Bit VAL zurückgestellt wird; das Bit CHKD wird nach Durchführung einer Quer-Abfrage eingestellt, wenn dabei kein Ergebnis erzielt ist. Das Bit ISS zeigt an, daß der zugehörige Befehl an den Speicher abgegeben worden ist. Das Bit CNCL wird dann eingestellt, wenn eine Quer-Abfrage positiv verlaufen ist, so daß ein ausgegebener Befehl gelöscht wird. Das Bit MC zeigt eine Maschinenprüfung an. Das Bit HLD wird dann eingesetzt, wenn eine iQuer-Abfrage ohne Ergebnis bleibt und der Speicher für eine Datenübertragung bereit ist, aber der Prozessor derzeit belegt ist. Das Warten-Bit wird eingestellt, wenn eine Quer-Abfrage mit Erfolg durchgeführt ist, und wird durch ein Ausspeichersignal zurückgestellt, nachdem die Daten vom Arbeitsspeicher des Prozessors an den Hauptspeicher zurückübertragen sind.
Fig. 5 zeigt außerdem eine Prüfung, ob der Hauptspeicher belegt ist oder nicht. Auf diese Weise werden die Leitungen aller Hauptspeichermoduls (in der bevorzugten Ausführungsform sind dies 16) ständig überwacht. Eine Gruppe von 8 Registern 52, die logisch als Erweiterung der Kennzeichenregister 51 angesehen werden können, enthält für jeden zugeordneten Befehl eine 4-Bit BSM-Adresse. Jede BSM-Adresse wird durch einen der Decodierer 53 in einen 1-aus-16 Code decodiert, der den Teil des BSM darstellt, der adressiert wird. Jeder der Decodierer 53 steuert eine Gruppe von UND-Sliedern 54 an (es ist jeweils eine Gruppe von UND-Gliedern für jeden der 8 Decodierer vorgesehen), wobei diesen UND-Gliedern außerdem Eingangssignale von den 16 BSM über die
PÜ976001 909832/0486
Belegt-Leitungen zugeführt werden. Wenn somit ein Befehl an einem Speicherplatz QN versucht, einen belegten BSM zu adressieren, dann wird die UND-Bedingung für die Leitung "QN belegt BSM" befriedigt, so daß auf dieser Leitung für diesen bestimmten Befehl ein Belegt-Signal erzeugt wird.
Fig. 6 zeigt die Einzelheiten der logischen Schaltung zum Auswählen der Befehle aus der Befehlsschlange. Die jedem Kennzeichenregister (51, Fig. 5) zugeordneten Kennzeichen werden dem UND-Glied 55 zugeführt. Die in jedem der Register 0 bis 7 des Kellerspeichers (Fig. 4) enthaltene 3-Bit Adresse wird dem zugeordneten Decodierer 56 zugeleitet. Für jedes der Register im Kellerspeicher 50 (Fig. 4), welches eine durch das Kennzeichen F gekennzeichnete gültige Eintragung enthält, wird die 3-Bit-Adresse (durch PDRn DCD für das Register n) in ein 1-aus-8 Signal decodiert, das anzeigt, in welchem der 8 Befehlsschlangenregister der zugeordnete Befehl liegt. Wegen der Art der Steuerung der FIFO-Befehlsschlange durch den Kellerspeicher 50 (Fig. 4) enthält das Register 7, wenn es eine gültige Eintragung enthält, die Adresse desjenigen Befehls, der am längsten in der Befehlsschlange liegt. Wenn der an der durch das Register 7 gekennzeichnete Befehlsschlangenadresse liegende Befehl für eine Ausgabe bereitsteht, jedoch noch nicht ausgegeben ist, dann liefert eines der UND-Glieder 57 auf Leitung 58 ein Signal PD REG 7 RDY, das gemäß Fig. 4 bewirkt, daß die im Register 7 liegende Adresse nach der Adressleitung 49 der Befehlsschlange übertragen wird, so daß der am längsten in dem Befehlsschlangenspeicher 37 liegende Befehl nach dem PIR 31 übertragen wird und von dort nach dem Hauptspeicher gelangt, vorausgesetzt daß eine Quer-Abfrage durchgeführt wird, wie dies oben beschrieben ist. Tritt auf der Leitung PD REG 7 RDY kein Signal auf (weil das Register 7 keine gültige Eintragung enthält, oder weil das durch das dieser Eintragung zugeordnete Kommando adressierte BSM belegt war, oder weil der Befehl nicht gültig war, oder weil eine zuvor
PO976001 909832/0486
durchgeführte Quer-Abfrage das Wartebit eingestellt hat oder weil der Befehl ohne Löschung bereits ausgegeben worden war), dann tritt wegen der Inverterstufe 60 auf der Leitung 59 ein positives Signal auf. Dann können die Bedingungen für eines der UND-Glieder 61, die sowohl durch ein UND-Glied 5 5 als auch über eine vom Decodierer PDR 6 DCD kommende Leitung angesteuert werden, befriedigt werden und ein Signal PD REG RDY abgeben, so daß der im Register 6 des Kellerspeichers gekennzeichnete Befehl der Befehlsschlange nach dem PIR 31 ausgelesen wird. Man sieht also, daß die Schaltung in Fig. ein Prioritätsnetzwerk bildet, das bewirkt, daß der am längsten in der Befehlsschlange liegende Befehl, der den entsprechenden Status hat, nach dem Prozessor für eine mögliche Durchführung ausgelesen wird.
Wie in Fig. 7 angedeutet, läßt sich die Erfindung in einem System mit mehr als einer SCU, wie zum Beispiel mit einer SCU A 62 und einer SCU B 63 einsetzen, wobei jeder SCU zwei Dder mehr Prozessoren zugeordnet sind, und diese SCUs eine gemeinsame Steuerung gegenüber dem gemeinsam ausgenutzten Hauptspeicher 10 ausüben. Bei einer derartigen Anordnung tann jede SCU genauso aufgebaut sein, wie beschrieben, lur mit der Ausnahme, daß die Quer-Abfrage innerhalb einer 3CU auch nach der anderen SCU übertragen werden muß, so daß alle Verzeichnisspeicher abgefragt werden können. Wie bereits aus Fig. 2 zu erkennen, ist eine der Eingangsleitungen nach lern Quer-Abfrageregister XIR 35 mit SCU B bezeichnet. Dies Lst vorgesehen, damit eine nach dem Hauptspeicher gerichtete Ln einer anderen SCU eingeleitete Zugriffsanforderung eine 2uer-Abfrage bewirken kann, die nach dieser (in Fig. 2 gezeigten) SCU gerichtet ist. In gleicher Weise werden über die leitung SCU B, die am Ausgang von XIR 35 angeschlossen ist, befehle an das Quer-Abfrageregister einer anderen SCU über- :ragen, so daß die dort befindlichen Verzeichnisse einer 2uer-Abfrage unterworfen werden können. Der Fachmann wird
909832/0486
dabei sofort feststellen, daß diese Ergebnisse der Quer-Ab- j fragen natürlich auch zwischen den verschiedenen SCüs über- ι tragen werden müssen. Die Querverbindung zwischen den SCüs
ist in Fig. 7 durch die Leitung 64 angedeutet.
In der bevorzugten Ausführungsform, wenn mehr als eine SCU ! verwendet wird, ist eine Schaltung vorgesehen, die die Zugriff et durch mehrere SCüs koordiniert. Fig. 8 zeigt dabei eine J einfache logische Schaltung, die in jeder der beiden SCüs ! für diesen Zweck vorgesehen werden kann. ·
Fig. 9 zeigt eine logische Schaltung für eine geordnete Be- |
dienung von 3 Prozessoren A, B und C. Das logische Netzwerk \
besteht aus UND-Gliedern, Verriegelungsschaltungen (V.S.), ;
Inverterstufen (N) und einem ODER-Glied. Wenn alle Anforderun- \
gen zur gleichen Zeit ankommen, dann ist die Prioritäts- ;
reihenfolge A, dann B, dann C. Wenn nach Bedienung von A sich j
dieser Prozessor erneut meldet, während B und C noch warten, !
dann wird A nicht bedient werden, bevor nicht B und C bedient j
worden sind. Wenn B und C gleichzeitig anfordern und warten j und A dann ankommt, bevor B und C bedient sind, dann ist
die Priorität der Bedienung B, dann A, dann C. Wenn A und B
zum gleichen Zeitpunkt ankommen und A bedient ist und mit C
wiederkommt, bevor B bedient ist, dann ist der Prioritätsablauf B, dann A, dann C.
Dem Fachmann leuchtet ohne weiteres ein, daß die Anzahl der
einer SCU zugeordneten Prozessoren und die Anzahl der SCUs
in einem System den Anforderungen entsprechend verschieden
sein kann. Im vorhergehenden wurden Systeme mit einer und
mit zwei SCUs beschrieben, es könnten jedoch auch drei oder
mehr SCüs verwendet werden. Es könnten außerdem jeder
SCU vier oder mehr Prozessoren zugeordnet sein.
M976O°1 909832/0486
Leerseite

Claims (5)

  1. PATENTANSPRÜCHE
    '/l. Datenverarbeitungsanlage mit mindestens zwei mit einem schnellen Arbeitsspeicher ausgerüsteten Prozessoren, einem allen Prozessoren gemeinsamen Hauptspeicher und einer Systemsteuerung für die Koordinierung von Hauptspeicherzugriffen der einzelnen Prozessoren, und den jeweiligen schnellen Arbeitsspeicher eines Prozessors mit dem Prozessor, der Systemsteuerung und dem Hauptspeicher verbindenden Anforderungs-, Adress-Daten- und Steuerleitungen (13, 14; 17, 18; 19, 20; 25, 26; 23, 24), wobei jedem Arbeitsspeicher eines jeden Prozessors eine Speichersteuerung und ein Verzeichnisspeicher zugeordnet ist, in dem die in dem zugehörigen Arbeitsspeicher liegenden Daten erfaßbar sind, dadurch gekennzeichnet, daß in der Systemsteuerung (SCU) eine Quer-Abfrageschaltung (PIR 31, SIR 33, XIR 35, 38) für eine Abfrage der Verzeichnisspeicher (27, 28) aller zugeordneter Prozessoren (11, 12) vorgesehen ist,
    daß ferner eine Vergleichsschaltung (41) vorgesehen ist, die bei einem Vergleich der im Verzeichnisspeicher (27, 28) der jeweils anderen Prozessoren liegenden Adressen von im Arbeitsspeicher liegenden Daten mit den Adressen der angeforderten Daten ein Signal abgibt, das eine Rückübertragung dieser Daten über ein Rückspeicherregister (COR 43) nach dem Hauptspeicher (10) veranlaßt, daß für die zeitweilige Abspeicherung von Datenzugriffsanforderungen ein Speicherbefehlspuffer (36) und ein Befehlsschlangenspeicher (37) vorgesehen sind und
    daß eine Folgesteuerung für den Befehlsschlangenspeicher (37) vorgesehen ist, so daß Zugriffsanforderungen, die sich auf die angeforderten Daten beziehen, aus dem Speicherbefehlspuffer nach dem Prinzip "zuerst rein, zuerst raus" (FIFO) ausgegeben werden.
  2. 2. Anlage nach Anspruch 1, dadurch gekennzeichnet, daß eine Prioritätsschaltung (50, Fig. 4, Fig. 6) vorgesehen ist, durch die feststellbar ist, weiche Position in dem Befehlsschlangenspeicher am längsten durch eine gültige Zugriffsanforderung belegt ist.
    PO 976 001
    909832/0486 ORIGINAL INSPECTED
    28A1041
    j j
  3. 3. Anlage nach Anspruch 2, dadurch gekennzeichnet,
    daß die Folgesteuerung einen Kellerspeicher (50) und eine entsprechende Anzahl von Speicherregistern (PDReg 0 bis PDReg 7) zur Speicherung derjenigen Speicherstellen in dem Befehlsschlangenspeicher (37) aufweist, welche für eine Speicherung von Datenzugriffsanforderungen verfügbar sind,
    daß eine Schaltung (45, 46, 47) für die Auswahl verfügbarer Speicherplätze für Datenzugriffsanforderungen in dem Befehlsschlangenspeicher (37) vorgesehen ist und ; daß durch die Speicherregister (PDReg) in Verbindung mit von einem der Befehlsschlange zugeordneten Kennzeichenregister (51) kommenden Startsignalen die den Speicherzugriffsanforderungen zugewiesenen Speicherplätze in der Befehlsschlange feststellbar sind. ;
  4. 4. Anlage nach Anspruch 3, dadurch gekennzeichnet,
    daß für die Überwachung der den Hauptspeicher (10) bildenden ;
    Speichermoduls (BSM) den Kennzeichenregistern (51) zugeordnete Speichermodul-Adressregister (52) vorgesehen sind, die jeweils mit einem zugeordneten Decodierer (54) verbunden sind, i
    daß für die Feststellung, ob eines der Speichermoduln belegt ist, j eine Gruppe von UND-Gliedern vorgesehen ist, die zur Erzeugung einer Belegt-Anzeige durch den entsprechenden Decodierer (54) und ein Hauptspeicher-Modul-Belegtsignal ansteuerbar sind, wodurch !
    die Ansteuerung eines belegten Hauptspeichermoduls durch eine |
    Speicherzugriffsanforderung gesperrt wird, j
    daß bei Beendigung der Rückspeicherung der Daten aus dem Arbeitsspeicher des Prozessors nach dem Hauptspeicher (10) ein Signal abgegeben wird und
    daß eine auf dieses Signal und eine "Nicht-Belegt" Bedingung eines Hauptspeichermoduls ansprechende Schaltung vorgesehen ist, die eine Übertragung der ältesten in der Befehlsschlange (37) liegenden Speicherzugriffsanforderung nach dem nicht-belegten Hauptspeichermodul veranlaßt.
    PO 976 001
    909832/0486
  5. 5. Anlage nach Anspruch 4, dadurch gekennzeichnet, daß der Kellerspeicher (50) die Adressen der Speicherplätze in der Befehlsschlange enthält und
    daß dabei die Reihenfolge der Adressen in dem Kellerspeicher einen Hinweis für die Reihenfolge liefert, mit der Zugriffsanforderungen in der Befehlsschlange abgespeichert wurden.
    Anlage nach Anspruch 5, dadurch gekennzeichnet, daß der Kellerspeicher (50) eine Anzahl Speicherregister (51) enthält, in denen jeweils die Adresse eines Speicherplatzes in der Befehlsschlange und ein Kennzeichen abgespeichert ist, das anzeigt, ob die Befehlsschlange eine noch nicht ausgeführte Speicherzugriffsanforderung gespeichert hält und
    daß dieses Kennzeichen nach Durchführung der an dem angegebenen Speicherplatz in der Befehlsschlange liegenden Speicherzugriffsanforderung rückstellbar ist, worauf die in dem Kellerspeicher noch eingespeicherten Eintragungen um eine Stelle nach oben verschoben werden.
    Anlage nach Anspruch 2, dadurch gekennzeichnet, daß der Befehlsschlangenspeicher (37), also "FIFO"-Speicher und der dazugehörige Kellerspeicher (50) mit seinen Speicherregistern (PD 0 - PD 7) als 11LIFO" Speicher ausgebildet sind und daß durch die Zuordnung der einzelnen Stufen der beiden Speicher zueinander die am längsten im Befehlsschlangenspeicher eingespeicherte Speicherzugriffsanforderung ableitbar ist.
    PO 976 001
    909832/0486
DE19782841041 1977-10-06 1978-09-21 Datenverarbeitungsanlage mit mindestens zwei mit einem schnellen arbeitsspeicher ausgeruesteten prozessoren Ceased DE2841041A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US05/840,070 US4136386A (en) 1977-10-06 1977-10-06 Backing store access coordination in a multi-processor system

Publications (1)

Publication Number Publication Date
DE2841041A1 true DE2841041A1 (de) 1979-08-09

Family

ID=25281374

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19782841041 Ceased DE2841041A1 (de) 1977-10-06 1978-09-21 Datenverarbeitungsanlage mit mindestens zwei mit einem schnellen arbeitsspeicher ausgeruesteten prozessoren

Country Status (6)

Country Link
US (1) US4136386A (de)
JP (1) JPS5459047A (de)
DE (1) DE2841041A1 (de)
FR (1) FR2405515B1 (de)
GB (1) GB1555300A (de)
IT (1) IT1174447B (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0028335A1 (de) * 1979-11-06 1981-05-13 International Business Machines Corporation Multiprozessorsystem mit Ein-/Ausgabe-Unterbrechungsbehandlungsmechanismus

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5849945B2 (ja) * 1977-12-29 1983-11-08 富士通株式会社 バツフア合せ方式
US4228503A (en) * 1978-10-02 1980-10-14 Sperry Corporation Multiplexed directory for dedicated cache memory system
US4488217A (en) * 1979-03-12 1984-12-11 Digital Equipment Corporation Data processing system with lock-unlock instruction facility
US4293910A (en) * 1979-07-02 1981-10-06 International Business Machines Corporation Reconfigurable key-in-storage means for protecting interleaved main storage
FR2472232B1 (fr) * 1979-12-14 1988-04-22 Honeywell Inf Systems Dispositif et procede d'effacement d'antememoire
US4322795A (en) * 1980-01-24 1982-03-30 Honeywell Information Systems Inc. Cache memory utilizing selective clearing and least recently used updating
US4345309A (en) * 1980-01-28 1982-08-17 Digital Equipment Corporation Relating to cached multiprocessor system with pipeline timing
US4323990A (en) * 1980-02-04 1982-04-06 Mobil Oil Corporation Seismic exploration system
US4399506A (en) * 1980-10-06 1983-08-16 International Business Machines Corporation Store-in-cache processor means for clearing main storage
US4394731A (en) * 1980-11-10 1983-07-19 International Business Machines Corporation Cache storage line shareability control for a multiprocessor system
DE3176632D1 (en) * 1980-11-10 1988-03-03 Ibm Cache storage hierarchy for a multiprocessor system
US4425615A (en) 1980-11-14 1984-01-10 Sperry Corporation Hierarchical memory system having cache/disk subsystem with command queues for plural disks
US4513367A (en) * 1981-03-23 1985-04-23 International Business Machines Corporation Cache locking controls in a multiprocessor
US4445171A (en) * 1981-04-01 1984-04-24 Teradata Corporation Data processing systems and methods
US4499535A (en) * 1981-05-22 1985-02-12 Data General Corporation Digital computer system having descriptors for variable length addressing for a plurality of instruction dialects
JPS5856277A (ja) * 1981-09-29 1983-04-02 Toshiba Corp 情報処理装置ならびに方法
JPS6145272B2 (de) * 1981-12-04 1986-10-07 Burroughs Corp
US4803655A (en) * 1981-12-04 1989-02-07 Unisys Corp. Data processing system employing a plurality of rapidly switchable pages for providing data transfer between modules
US4442487A (en) * 1981-12-31 1984-04-10 International Business Machines Corporation Three level memory hierarchy using write and share flags
AU542447B2 (en) * 1982-02-27 1985-02-21 Fujitsu Limited System for controlling key storage unit
DE3376590D1 (en) * 1982-04-28 1988-06-16 Int Computers Ltd Data processing system
US4587609A (en) * 1983-07-01 1986-05-06 Honeywell Information Systems Inc. Lockout operation among asynchronous accessers of a shared computer system resource
JPH0760422B2 (ja) * 1983-12-30 1995-06-28 株式会社日立製作所 記憶ロツク方式
DE3502147A1 (de) 1984-01-23 1985-08-08 Hitachi Microcomputer Engineering Ltd., Kodaira, Tokio/Tokyo Datenverarbeitungssystem mit verbesserter pufferspeichersteuerung
US4561051A (en) * 1984-02-10 1985-12-24 Prime Computer, Inc. Memory access method and apparatus in multiple processor systems
US4896262A (en) * 1984-02-24 1990-01-23 Kabushiki Kaisha Meidensha Emulation device for converting magnetic disc memory mode signal from computer into semiconductor memory access mode signal for semiconductor memory
CA1241768A (en) * 1984-06-22 1988-09-06 Miyuki Ishida Tag control circuit for buffer storage
US4710868A (en) * 1984-06-29 1987-12-01 International Business Machines Corporation Interconnect scheme for shared memory local networks
US4755930A (en) * 1985-06-27 1988-07-05 Encore Computer Corporation Hierarchical cache memory system and method
WO1988007720A1 (en) * 1987-04-02 1988-10-06 Stellar Computer Inc. Dynamically assignable shared register sets
US4897786A (en) * 1987-09-04 1990-01-30 Digital Equipment Corporation Bus window interlock
JPH0727492B2 (ja) * 1988-01-21 1995-03-29 三菱電機株式会社 緩衝記憶装置
US5023776A (en) * 1988-02-22 1991-06-11 International Business Machines Corp. Store queue for a tightly coupled multiple processor configuration with two-level cache buffer storage
US5032985A (en) * 1988-07-21 1991-07-16 International Business Machines Corporation Multiprocessor system with memory fetch buffer invoked during cross-interrogation
US5081572A (en) * 1988-10-28 1992-01-14 Arnold Michael E Manipulation of time-ordered lists and instructions therefor
US5222224A (en) * 1989-02-03 1993-06-22 Digital Equipment Corporation Scheme for insuring data consistency between a plurality of cache memories and the main memory in a multi-processor system
ATE157183T1 (de) * 1989-07-06 1997-09-15 Digital Equipment Corp Eingabewarteschlange für speichersubsysteme
US5230070A (en) * 1989-09-08 1993-07-20 International Business Machines Corporation Access authorization table for multi-processor caches
JP3102495B2 (ja) * 1989-12-28 2000-10-23 株式会社日立製作所 仮想記憶管理方法
US5123094A (en) * 1990-01-26 1992-06-16 Apple Computer, Inc. Interprocessor communications includes second CPU designating memory locations assigned to first CPU and writing their addresses into registers
US5301290A (en) * 1990-03-14 1994-04-05 International Business Machines Corporation Method for minimizing lock processing while ensuring consistency among pages common to local processor caches and a shared external store
US5297269A (en) * 1990-04-26 1994-03-22 Digital Equipment Company Cache coherency protocol for multi processor computer system
DE4015190A1 (de) * 1990-05-11 1991-11-21 Gore W L & Ass Gmbh Flachbodentank und verfahren zur leckueberwachung von flachbodentanks
US5263144A (en) * 1990-06-29 1993-11-16 Digital Equipment Corporation Method and apparatus for sharing data between processors in a computer system
JPH04195577A (ja) * 1990-11-28 1992-07-15 Hitachi Ltd マルチプロセッサにおけるタスクスケジューリング方式
US5249283A (en) * 1990-12-24 1993-09-28 Ncr Corporation Cache coherency method and apparatus for a multiple path interconnection network
JP2743608B2 (ja) * 1991-03-27 1998-04-22 日本電気株式会社 共有レジスタ制御方式
US5265233A (en) * 1991-05-17 1993-11-23 Sun Microsystems, Inc. Method and apparatus for providing total and partial store ordering for a memory in multi-processor system
US5459849A (en) * 1991-08-02 1995-10-17 International Business Machines Corporation Method and apparatus for compressing cacheable data
US5361368A (en) * 1991-09-05 1994-11-01 International Business Machines Corporation Cross interrogate synchronization mechanism including logic means and delay register
US5485586A (en) * 1992-01-10 1996-01-16 Digital Equipment Corporation Queue based arbitration using a FIFO data structure
US5450563A (en) * 1992-10-30 1995-09-12 International Business Machines Corporation Storage protection keys in two level cache system
US5666515A (en) * 1993-02-18 1997-09-09 Unisys Corporation Information processing system having multiple modules and a memory on a bus, where any module can lock an addressable portion of the memory by sending retry signals to other modules that try to read at the locked address
TW234174B (en) * 1993-05-14 1994-11-11 Ibm System and method for maintaining memory coherency
US5809525A (en) * 1993-09-17 1998-09-15 International Business Machines Corporation Multi-level computer cache system providing plural cache controllers associated with memory address ranges and having cache directories
US5623628A (en) * 1994-03-02 1997-04-22 Intel Corporation Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue
JP3872118B2 (ja) * 1995-03-20 2007-01-24 富士通株式会社 キャッシュコヒーレンス装置
US5564062A (en) * 1995-03-31 1996-10-08 International Business Machines Corporation Resource arbitration system with resource checking and lockout avoidance
US5940826A (en) * 1997-01-07 1999-08-17 Unisys Corporation Dual XPCS for disaster recovery in multi-host computer complexes
US5949970A (en) * 1997-01-07 1999-09-07 Unisys Corporation Dual XPCS for disaster recovery
US6088740A (en) * 1997-08-05 2000-07-11 Adaptec, Inc. Command queuing system for a hardware accelerated command interpreter engine
GB2331379A (en) 1997-11-13 1999-05-19 Advanced Telecommunications Mo Controlling access to a shared memory by dual mapping
US7305524B2 (en) * 2004-10-08 2007-12-04 International Business Machines Corporation Snoop filter directory mechanism in coherency shared memory system
US8949549B2 (en) * 2008-11-26 2015-02-03 Microsoft Corporation Management of ownership control and data movement in shared-memory systems
CN101692173B (zh) * 2009-10-16 2011-11-23 北京联合大学生物化学工程学院 双单片机共用一个串行存储器电路
US10769068B2 (en) 2017-11-10 2020-09-08 International Business Machines Corporation Concurrent modification of shared cache line by multiple processors

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3771137A (en) * 1971-09-10 1973-11-06 Ibm Memory control in a multipurpose system utilizing a broadcast
US3848234A (en) * 1973-04-04 1974-11-12 Sperry Rand Corp Multi-processor system with multiple cache memories

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1218761B (de) * 1963-07-19 1966-06-08 International Business Machines Corporation, Armonk, N. Y. (V. St. A.) Datenspeidbereinrichtung
US3469239A (en) * 1965-12-02 1969-09-23 Hughes Aircraft Co Interlocking means for a multi-processor system
US3510844A (en) * 1966-07-27 1970-05-05 Gen Electric Interprocessing multicomputer systems
US3618040A (en) * 1968-09-18 1971-11-02 Hitachi Ltd Memory control apparatus in multiprocessor system
US3581291A (en) * 1968-10-31 1971-05-25 Hitachi Ltd Memory control system in multiprocessing system
DE2064383C3 (de) * 1970-01-12 1981-02-26 Fujitsu Ltd., Kawasaki, Kanagawa (Japan) Datenverarbeitungsanlage mit mehreren zentralen Verarbeitungseinrichtungen
US3735360A (en) * 1971-08-25 1973-05-22 Ibm High speed buffer operation in a multi-processing system
US3761883A (en) * 1972-01-20 1973-09-25 Ibm Storage protect key array for a multiprocessing system
US3886525A (en) * 1973-06-29 1975-05-27 Ibm Shared data controlled by a plurality of users
JPS5617753B2 (de) * 1973-07-17 1981-04-24
US3940743A (en) * 1973-11-05 1976-02-24 Digital Equipment Corporation Interconnecting unit for independently operable data processing systems
US3845474A (en) * 1973-11-05 1974-10-29 Honeywell Inf Systems Cache store clearing operation for multiprocessor mode
US3889237A (en) * 1973-11-16 1975-06-10 Sperry Rand Corp Common storage controller for dual processor system
JPS5440182B2 (de) * 1974-02-26 1979-12-01
US4065809A (en) * 1976-05-27 1977-12-27 Tokyo Shibaura Electric Co., Ltd. Multi-processing system for controlling microcomputers and memories

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3771137A (en) * 1971-09-10 1973-11-06 Ibm Memory control in a multipurpose system utilizing a broadcast
US3848234A (en) * 1973-04-04 1974-11-12 Sperry Rand Corp Multi-processor system with multiple cache memories

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0028335A1 (de) * 1979-11-06 1981-05-13 International Business Machines Corporation Multiprozessorsystem mit Ein-/Ausgabe-Unterbrechungsbehandlungsmechanismus

Also Published As

Publication number Publication date
FR2405515A1 (fr) 1979-05-04
US4136386A (en) 1979-01-23
GB1555300A (en) 1979-11-07
IT7827918A0 (it) 1978-09-21
JPS5459047A (en) 1979-05-12
IT1174447B (it) 1987-07-01
FR2405515B1 (fr) 1985-11-29
JPS5733623B2 (de) 1982-07-17

Similar Documents

Publication Publication Date Title
DE2841041A1 (de) Datenverarbeitungsanlage mit mindestens zwei mit einem schnellen arbeitsspeicher ausgeruesteten prozessoren
DE2241257C3 (de) Datenverarbeitende Anlage
DE2415900C3 (de) Rechenautomat mit mehreren mit je einem Vorratsspeicher versehenen Rechenanlagen
DE2226382C3 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE3131341C2 (de)
DE2235841C2 (de) Datenverarbeitungsanlage mit Speichersteuerung für mindestens einen Prozessor und diesen zugeordneten Pufferspeichern
DE2227882C2 (de) Virtuelle Speicheranordnung
DE2523414C3 (de) Hierarchische Speicheranordnung mit mehr als zwei Speicherstufen
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE2240433C3 (de) Hierarchische Datenspeicheranordnung für mehrere über Pufferspeicher angeschlossene Einheiten und ein Verfahren zu deren Betrieb
DE2807476C2 (de) Speichereinrichtung mit mehreren virtuellen Adreßräumen
DE2847960A1 (de) Speichersteuereinrichtung
DE3102150A1 (de) &#34;schaltungsanordnung mit einem cachespeicher fuer eine zentraleinheit einer datenverarbeitungsanlage
DE2231146B2 (de) Datenverarbeitungsanlage mit virtueller Adressierung
DE3621321A1 (de) Cache-speicher- bzw. multiprozessor-system und betriebsverfahren
DE2847216A1 (de) Datenverarbeitungssystem mit mehrprogrammbetrieb
DE3224034A1 (de) Mehrprozessorensystem
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE3046912C2 (de) Schaltungsanordnung zum selektiven Löschen von Cachespeichern in einer Multiprozessor-Datenverarbeitungsanlage
DE69721641T2 (de) Verfahren und Vorrichtung für ein verzeichnisloses Speicherzugriffsprotokoll in einem Rechnersystem mit verteiltem gemeinsamen Speicher
DE2422732C2 (de) Hierarchische Speicheranordnung
DE60003426T2 (de) Statusbits für cachespeicher
DE69532006T2 (de) Speichersteuerverfahren und Vorrichtung geeignet für ein Informationsverarbeitungssystem
DE2710477A1 (de) Anordnung zur kohaerenten leitung des informationsaustauschs zwischen zwei aneinanderstossenden niveaus einer speicherhierarchie
DE3832758C2 (de) Verfahren zum Adressieren eines im Rückschreib-Modus betriebenen virtuellen Cache-Speichers

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8131 Rejection