-
Die Erfindung betrifft eine Instrumentationsanordnung
für eine
Maschine mit nichtuniformen Speicherzugriffen im Bereich der Informationsverarbeitung.
-
Im Bereich der Informationsverarbeitung
ist es möglich,
die Leistungsfähigkeit
einer Maschine dadurch zu steigern, indem man die Anzahl der Prozessoren
erhöht,
die sie enthält.
Eine unter dem Namen SMP bekannter Maschinentyp ermöglicht es verschiedenen
Prozessoren derselben Maschine, auf seinen Speicher auf symmetrische
Weise mittels eines Bussystems zuzugreifen. Es handelt sich dabei um
Maschinen mit uniformen Speicherzugriffen bei welchen das Maß der Zeit
der Speicherzugriffe dasselbe ist wie für alle Datenzugriffe. Dennoch
steigt die Leistungskurve solcher Maschinen nicht linear als Funktion
der Anzahl der Prozessoren an. Eine erhöhte Anzahl von Prozessoren
führt dazu,
dass die Maschine mehr mit Zugriffsproblemen auf ihre Ressourcen
beschäftigt
ist, als dass sie für
die Ausführung von
Anwendungen bereit steht. Dieses hat zur Folge, dass die Leistungskurve
beachtlich nach unten gebogen wird, wenn die Anzahl der Prozessoren
einen optimalen Wert übersteigt,
welcher häufig
mit einer Größenordnung
von vier eingeschätzt
wird. Der Stand der Technik macht zur Lösung dieses Problems verschiedene
Lösungsvorschläge.
-
Eine bekannte Lösung besteht darin, mehrere
Maschinen traubenförmig
umzugruppieren, derart, dass sie untereinander mittels eines Netzwerks
kommunizieren können.
Jede Maschine besitzt eine optimale Anzahl von beispielsweise vier
Prozessoren und ihr eigenes Betriebssystem. Sie stellt jedesmal eine
Verbindung mit einer anderen Maschine her, wenn sie eine Bearbeitung
von Daten durchführt, welche
sie von dieser anderen Maschine als neuesten Stand erhalten hat.
Die für
diese Kommunikationen notwendige Zeit und die Notwendigkeit der
Bearbeitung der zusammenhängen den
Daten ergeben Verzögerungsprobleme
für die
umfangreichen Anwendungen wie beispielsweise die aufgeteilten Anwendungen,
die häufige
Kommunikation erfordern. Die Verzögerung ist die Dauer, die zwischen
dem Augenblick der Aussendung einer Anforderung für einen
Speicherzugriff und dem Augenblick liegt, in welchem die Erwiderung
auf diese Anforderung empfangen wird.
-
Eine andere bekannte Lösung sind
die Maschinen vom Typ NUMA. Dieses sind die Maschinen mit nichtuniformen
Speicherzugriffen (Non Uniform Memory Access in englischer Sprache),
bei welchen das Maß der
Zeit der Speicherzugriffe nach dem Ort der Daten variiert, auf welche
zugegriffen wird. Eine Maschine vom Typ NUMA besteht aus mehreren
Modulen, wobei jedes Modul eine optimale Anzahl von Prozessoren
und einen physischen Teil des gesamten Speichers der Maschine umfasst.
Eine solche Maschine hat einen nichtuniformen Speicherzugriff, denn
ein Modul greift im Allgemeinen viel leichter auf einen Teil des
physischen Speichers zu, den es nicht mit einem anderen Modul teilt
als auf einen Teil, welcher aufgeteilt ist. Obwohl jedes Modul ein
eigenes Bussystem aufweist, welches seine Prozessoren und seinen
physischen Speicher verbindet, ermöglicht ein allen Modulen gemeinsames
Betriebssystem die Gesamtheit der eigenen Bussysteme als ein einziges Bussystem
der Maschine zu betrachten. Eine logische Adressierung bestimmt
einen Speicherplatz an einer Stelle im physischen Speicher, die
durch ein Modul festgelegt ist. Man unterscheidet für einen
für sich
betrachteten Prozessor die Zugriffe auf einen Teil des lokalen Speichers,
welcher physisch auf demselben Modul wie dieser Prozessor angeordnet ist
und die Zugriffe auf einen Teil eines entfernten Speichers, welcher
physisch auf einem oder auf mehreren anderen Modulen angeordnet
ist als diesem, auf welchem sich dieser Prozessor befindet.
-
Eine besondere Version des Maschinentyps NUMA
ist der Typ CCNU-MA,
das heißt
solche Maschinen mit einem zusammenhängenden Pufferspeicher (Cache
Coherency in englischer Sprache). Eine Vorrichtung eines aufgeteilten
Pufferspeichers fertigt zu einem bestimmten Zeitpunkt eine gültige, das heißt eine
auf dem neu esten Stand stehende Kopie dieses Blocks an, der sich
nicht notwendigerweise mit seinem Speicherort im physischen Speicher
befindet. Eine oder mehrere gültige
Kopien dieses Blocks können
so von einem Modul zu einem anderen gelangen, je nach anwendungsbedingten
Anforderungen und Systemanforderungen. Die Leistungsfähigkeit
der Maschine hängt
direkt von der Schnelligkeit ab, mit der ein Modul auf eine gültige Kopie des
Blocks zugreift, den es bearbeitet. Es ist angeraten, das Betriebssystem
der Maschine und die durch diese Maschine ausgeführten Anwendungen so vorzusehen,
dass jedes Modul höchstens
die Kopien der auf seinem physischen Speicher lokalisierten Blocks und
soviel wie möglich
gültige
verarbeitet. Die Zugriffe auf diese gültigen Kopien sind die schnellsten, denn
diese erfordern den geringsten Datenaustausch mit anderen Modulen.
-
Die Konzeption eines Betriebssystems
in der Nachfolge der Anwendungen erfordert ein korrektes Einbeziehen
der Rückwirkungen,
welche sich auf die Leistungsfähigkeit
der Maschine auswirken. Man kann es in Betracht ziehen, das Betriebssystem
oder die Anwendungen mittels Simulationsprogrammen zu testen, welche
das Verhalten der Maschine mit diesem Betriebssystem oder mit diesen
Anwendungen simulieren. Man kann dann erhoffen, daraus abzuleiten
wie das Betriebssystem oder die Anwendungen anzupassen sind, beispielsweise
indem man mit der Aufteilung der Adressen, der Erzeugung von logischen
Tabellen oder dem Ablauf der Aufgaben spielt. Es ist indessen schwierig,
alle Fälle
vorauszusehen, welche sich beim realen Betrieb der Maschine ergeben.
-
Die Schrift "The Dash Prototype: Logic Overhead and
Performance", herausgegeben
von Daniel Lenoski, James Laudon, Truman Joe, David Nakahira, Luis
Stevens, Anoop Gupta and John Hennessy, 8353 IEEE Transactions on
Parallel and Distributed Systems, 4(1993) January, No. 1, New York,
U.S., beschreibt eine Untersuchung der verbrauchten Systemzeit für die unterschiedlichen
Teile der Architektur solcher Systeme. Sie bezieht sich im Besonderen
auf die Unterscheidung von Systemzeiten für die loka len oder entfernten
Speicherzugriffe. Die Ergebnisse einer solchen Untersuchung werden
in einer pauschalen Weise angegeben.
-
Die Schrift
US 4 068 304 beschreibt ein Überwachungssystem
für die
Verwaltung von hierarchisierten Speicherzugriffen. Dieses System
verwendet verschiedene Zähler
zum Rückwärtszählen und Verwalten
der Zugriffe und dem Ausbleiben von Zugriffen auf unterschiedlichen
höchsten
Speicherebenen.
-
Ein erstes Ziel der Erfindung, welche
durch den Anspruch 1 festgelegt ist, ist eine Maschine mit nichtuniformen
Speicherzugriffen, welche aus mehreren Modulen besteht, wobei jedes
Modul eine Verbindungseinheit mit einer Tabelle zur Verwaltung der lokalen
Zugriffe auf einen Teil eines Speichers, der sich lokal im Modul
befindet, und eine Tabelle zur Verwaltung der Zugriffe auf einen
Teil eines Speichers, der entfernt vom Modul angeordnet ist, aufweist,
wobei die Zugriffe über
ein Bussystem erfolgen, dadurch gekennzeichnet, dass die Maschine enthält:
- – einen
Zähler
der erfolgreichen Zugriffe auf den Teil des lokalen Speichers, welche
keinen Datenaustausch mit einem entfernten Modul benötigen;
- – einen
Zähler
der nicht erfolgreichen Zugriffe auf den Teil des lokalen Speichers
(5'), welche
mindestens einen Datenaustausch mit einem entfernten Modul benötigen;
- – einen
Zähler
der erfolgreichen Zugriffe auf den Teil des entfernten Speichers,
welche keinen Datenaustausch mit einem entfernten Modul benötigen;
- – einen
Zähler
der nicht erfolgreichen Zugriffe auf den Teil des entfernen Speichers,
welche mindestens einen Datenaustausch mit einem entfernten Modul
benötigen.
-
Dieses ermöglicht eine reelle Zeitmessung der
Verteilung der schnellen Zugriffe zum Speicher, die keinen Datenaustausch
zur Sicherstellung eines zusammenhängenden Pufferspeichers benötigen, und
der langsamen Zugriffe zum Speicher, die mindestens einen Datenaustausch
zur Sicherstellung eines zusammenhängenden Pufferspeichers benötigen. Ein
Problem kann sich dennoch ein stellen, wenn die notwendigen Ressourcen
für das
Hochzählen
der Zähler
die Leistungsfähigkeit
der Maschine beeinträchtigen.
-
Ein zweites Ziel der Erfindung betrifft
eine Maschine mit nichtuniformen Speicherzugriffen, dadurch gekennzeichnet,
dass die vier Zähler
stofflich in der Verbindungseinheit angeordnet sind. Somit benötigt das
Hochzählen
der Zähler
keine zusätzliche Ressource
auf dem Bussystem.
-
Ein Verfahren, welches durch den
Anspruch 7 festgelegt ist, zur Berechnung der mittleren Speicherzugriffszeit
umfasst dann:
- – die Multiplikation des Inhalts
- – des
Zählers
der erfolgreichen Zugriffe auf einen Teil des lokalen Speichers
während
der mittleren Zeit eines erfolgreichen Zugriffs auf den Teil des lokalen
Speichers,
- – des
Zählers
der nicht erfolgreichen Zugriffe auf einen Teil des lokalen Speichers
während
der mittleren Zeit eines nicht erfolgreichen Zugriffs auf den Teil
des lokalen Speichers,
- – des
Zählers
der erfolgreichen Zugriffe auf einen entfernten Teil des Speichers
während
der mittleren Zeit eines erfolgreichen Zugriffs auf den entfernten
Teil des Speichers,
- – des
Zählers
der nicht erfolgreichen Zugriffe auf einen entfernten Teil des Speichers
während
der mittleren Zeit eines nicht erfolgreichen Zugriffs auf den entfernten
Teil des Speichers,
- – die
Aufsummierung der so erhaltenen Ergebnisse,
- – und
die Division dieser Summe durch die Summe der Inhalte der vier Zähler der
Zugriffe.
-
Man kann es in Betracht ziehen, die
mittlere Zeit eines jeden Typs von Zugriff mit Hilfe eines Busanalysators
während
der Versuchsphase der Maschine zu bestimmen. Die so bestimmten mittleren
Zeiten werden dann als charakteristische Parameter mit der Maschine
zur Verfügung
gestellt. Die Zeiten der erfolgreichen Zugriffe ohne Datenaustausch
mit einem entfernten Modul, ob es sich dabei um einen Teil des lokalen
Speichers oder um einen Teil des entfernten Speichers handelt, sind
praktisch konstant, denn sie sind nur von der Belastung des lokalen
Bus' im Modul abhängig. Der
Mittelwert dieser Zugriffszeiten, welcher vorab mittels eines Standard-Busanalysators berechnet
wurde, ist somit mit einer akzeptablen Genauigkeit repräsentativ
für das
spätere
Verhalten der Maschine im Betrieb. Indessen erzeugen die nicht erfolgreichen
Zugriffe in Begleitung von Datenaustauschen mit entfernten Modulen
Verzögerungen,
welche von den Verzögerungen
der Datenaustausche selbst abhängig
sind. Wenn beim späteren
Betrieb der Maschine das Protokoll der zusammenhängenden Pufferspeicher bei
hoher Belastung der Verbindungen zwischen den Modulen stark beansprucht wird,
können
die Zugriffszeiten in deutlichem Maße variieren. Die vorab bestimmten
mittleren Zeiten der nicht erfolgreichen Zugriffe sind mit dem Risiko
behaftet, nicht mehr für
die mittleren Zeiten der wirksamen Zugriffe mit einer genügenden Genauigkeit
repräsentativ
zu sein. Eine Lösung
besteht darin, korrigierende Gewichtungskoeffizienten als Funktion
des wirksamen Betriebs der Maschine auf die mittleren Zeiten der
nicht erfolgreichen Zugriffe anzuwenden. Die mittleren Zeiten der
nicht erfolgreichen Zugriffe sind beispielsweise eine Funktion der
nicht erfolgreichen Zugriffe, bekannt durch die Zähler der
nicht erfolgreichen Zugriffe. Es ist dann vorzugsweise eine Vorabmodellierung
der Entwicklung dieser mittleren Zeiten der nicht erfolgreichen
Zugriffe mit der Anzahl der Datenaustausche vorzunehmen.
-
Ein zusätzlicher Vorteil wird geschaffen, wenn
die Maschine mit nichtuniformen Speicherzugriffen folgendes umfasst:
- – einen
Zähler
zum Aufsummieren der Verzögerungen
der Zugriffe auf den Teil des lokalen Speichers, welche einen Datenaustausch
mit einem entfernten Modul benötigen;
- – einen
Zähler
zum Aufsummieren der Verzögerungen
der entfernten Zugriffe auf den Teil des Speichers, welche einen
Datenaustausch mit einem entfernten Modul benötigen.
-
Diese zwei Zähler ermöglichen ein Erhalten von mittleren
Zugriffszeiten in Begleitung von Datenaustauschen, wirksam während eines
jeden Betriebs der Maschine, ohne sich vorher über unangebrachte Belastungen
des Protokolls des zusammenhängenden
Pufferspeichers Gedanken zu machen. Es ist dann möglich, gemäß Anspruch
8 ein Verfahren zur Berechnung der mittleren Speicherzugriffszeit
anzuwenden, welches umfasst:
- – eine Multiplikation
des Inhalts:
- – des
Zählers
der erfolgreichen Zugriffe auf den Teil des lokalen Speichers während der
mittleren Zeit eines erfolgreichen Zugriffs auf den Teil des lokalen
Speichers,
- – des
Zählers
der nicht erfolgreichen Zugriffe auf den Teil des entfernten Speichers
während
der mittleren Zeit eines erfolgreichen Zugriffs auf den Teil des
entfernten Speichers,
- – eine
Aufsummierung der so erhaltenen beiden Ergebnisse mit den Inhalten
des Zählers
zur Summierung der Verzögerungen
der Zugriffe auf den Teil des lokalen Speichers, welche einen Datenaustausch
mit einem entfernen Modul benötigen, und
des Zählers
zur Summierung der Verzögerungen
der Zugriffe auf den Teil des entfernten Speichers, welche einen
Datenaustausch mit einem entfernen Modul benötigen,
- – und
eine Division dieser Summe durch die Summe der Inhalte der vier
Zähler.
-
Die Erfindung wird mit Hilfe der
Beschreibung eines Ausführungsbeispiels
mit Bezug auf die Figuren noch weiter erläutert.
-
Die 1 zeigt
eine Architektur einer Maschine mit vier Modulen
-
Die 2 stellt
bestimmte Details der vorerwähnten
Verbindungseinheit dar, welche in einem Modul angeordnet ist, das
als ein lokales betrachtet wird.
-
Die 3 zeigt
bestimmte Details der vorerwähnten
Verbindungseinheit, welche in einem Modul angeordnet ist, das als
ein entferntes betrachtet wird.
-
Die 4 und 5 stellen weitere Details
der Verbindungseinheit zur Anwendung der Erfindung dar.
-
Die 1 zeigt
ein Beispiel einer Architektur einer Maschine mit nichtuniformen
Speicherzugriffen, welche aus vier Modulen 10, 20, 40 und 60 besteht,
die mittels eines Ringnetzwerks 16 untereinander verbunden
sind. Die folgende Beschreibung mit Bezug auf die 1 gilt auch für irgendeine Anzahl von Modulen
größer oder
gleich zwei. Die Verbindung zwischen den Modulen kann mittels eines
oder mehrerer gemeinsamer Ringnetzwerke oder mittels jedes anderen
Verbindungstyps wie solche, die die Verbindungen mit Gattern, Hyperwürfel oder
Kreuzschienenwähler
(crossbar in englischer Sprache) herstellen, um nur einige unter
den meist bekannten zu nennen. Die Verbindung der Module untereinander
gestattet die Durchführung
von Datenaustauschen zwischen den Modulen, welche das Protokoll des
Zusammenhangs des Speichers benutzen.
-
Das Modul 10 umfasst vier
Prozessoren 1 bis 4, einen Speicher 5 und
eine Verbindungseinheit 6 zu den anderen Modulen über das
Ringnetzwerk 16. Die unterschiedlichen Bauteile 1 bis 6 sind
untereinander über
ein Bussystem 7 in dem Modul 10 verbunden. Das
Modul 20 umfasst vier Prozessoren 21 bis 24,
einen Speicher 25 und eine Verbindungseinheit 26 zu den
anderen Modulen über
das Ringnetzwerk 16. Die unterschiedlichen Bauteile 21 bis 26 sind
untereinander über
ein Bussystem 27 in dem Modul 20 verbunden. Das
Modul 40 umfasst vier Prozessoren 41 bis 44,
einen Speicher 45 und eine Verbindungseinheit 46 zu
den anderen Modulen über
das Ringnetzwerk 16. Die unterschiedlichen Bauteile 41 bis 46 sind
untereinander über
ein Bussystem 47 in dem Modul 40 verbunden. Das
Modul 60 umfasst vier Prozessoren 61 bis 64,
einen Speicher 65 und eine Verbindungseinheit 66 zu
den anderen Modulen über
das Ringnetzwerk 16. Die unterschiedlichen Bauteile 61 bis 66 sind
untereinander über
ein Bussystem 67 in dem Modul 60 verbunden. Die
jeweilige Verbindungseinheit 6, 26, 46, 66 ist
mit dem Ringnetzwerk 16 jeweils mittels eines Anschlusses 17, 37, 57, 77 verbunden.
-
Jeder Prozessor 1 bis 4, 21 bis 24, 41 bis 44, 61 bis 64 umfasst
jeweils einen eigenen internen oder externen Pufferspei cher 11 bis 14, 31 bis 34, 51 bis 54, 71 bis 74.
Das Modul 10 umfasst weiterhin einen Pufferspeicher 15 für entfernte
Zugriffe, bezeichnet mit RC; das Modul 20 umfasst weiterhin
einen Pufferspeicher 35 für entfernte Zugriffe, bezeichnet mit
RC; das Modul 40 umfasst weiterhin einen Pufferspeicher 55 für entfernte
Zugriffe, bezeichnet mit RC; das Modul 60 umfasst weiterhin
einen Pufferspeicher 75 für entfernte Zugriffe, bezeichnet
mit RC. Um die Größe der Pufferspeicher 15, 35, 55 und
oder 75 parametrieren zu können, ist es vorteilhaft, diesen
physisch in einem reservierten Bereich des jeweiligen Speichers 5, 25, 45, 65 anzuordnen,
wie die 1 zeigt. In
diesem Fall betrachtet die folgende Beschreibung den jeweiligen
Speicher 5', 25', 45', 65' so als wenn
er aus Datenblöcken
des jeweiligen Speichers 5, 25, 45, 65 besteht,
welche nicht die Datenblöcke
der jeweiligen Pufferspeicher 15, 35, 55, 75 umfassen.
In dem Fall, in dem die Pufferspeicher 15, 35, 55, 75 durch
physische Komponenten verkörpert
werden, die unterschiedlich zu denen der Speicher 5, 25, 45, 65 sind,
müssen
die Bezugszeichen 5', 25', 45', 65' identisch mit
den Bezugszeichen 5, 25, 45, 65 verstanden
werden.
-
Jeder Prozessor 1 bis 4, 21 bis 24, 41 bis 44, 61 bis 64 greift
auf Datenblöcke
zu, welche in den Speichern 5', 25', 45', 65' enthalten sind. Dieses erfolgt
mittels logischer Adressen eines einzigen Adressraumes, ohne zu
unterscheiden, ob die Speicher 5', 25', 45', 65' lokal angeordnet sind, also zu dem
selben Modul wie der Prozessor gehören, oder entfernt angeordnet
sind, und zu einem anderen Modul gehören, zu dem der Prozessor nicht
gehört.
In dem Modul 10 ist es die Verbindungseinheit 6,
welche unterscheidet, ob die logische Adresse einer physischen lokalen
Adresse des in dem Speicher 5' angeordneten Blocks entspricht,
oder ob die logische Adresse einer physischen entfernten Adresse
eines in den Modulen 20, 40, 60 angeordneten
Blocks entspricht, zum Beispiel mittels der höherwertigen Bits der logischen
Adresse, welche das Modul anzeigen, in dem sich die Speicheradresse
physisch befindet, wobei die niederwertigen Bits dann die physische Adresse
innerhalb des Moduls des Speiche rorts angeben. In dem Modul 20 ist
es die Verbindungseinheit 26, welche unterscheidet, ob
die logische Adresse einer physischen lokalen Adresse des in dem
Speicher 25' angeordneten
Blocks entspricht, oder ob die logische Adresse einer physischen
entfernten Adresse eines in den Modulen 40, 60, 10 angeordneten Blocks
entspricht, zum Beispiel mittels der höherwertigen Bits der logischen
Adresse, welche das Modul anzeigen, in dem sich die Speicheradresse
physisch befindet, wobei die niederwertigen Bits dann die physische
Adresse innerhalb des Moduls des Speicherorts angeben, und so weiter
in dieser Folge für
die anderen Module. Die oben erwähnten
höherwertigen Bits
bilden ein Feld A4 der logischen Adresse. Die Datenblöcke, auf
die so zugegriffen wird, bilden eine Einheit SM des auf alle Prozessoren
aufgeteilten Speichers.
-
Das Beispiel, welches mit Bezug auf
den Prozessor 1 folgt, gilt auch für jeden der anderen Prozessoren 2 bis 4 mit
Bezug auf das Modul 10 sowie 21 bis 24 mit
Bezug auf das Modul 20, und 41 bis 44 mit
Bezug auf das Modul 40, und 61 bis 64 mit
Bezug auf das Modul 60.
-
Der Prozessor 1 behandelt
ein in einem Block B1 der Daten der Einheit 5M enthaltenes Wort mittels
seines eigenen Pufferspeichers 11 gemäß einer bekannten Prozedur
des Pufferspeichers, wie solche mit direkter Übereinstimmung, assoziativer Übereinstimmung
oder assoziativ durch Blockeinheiten, ohne dass es notwendig ist,
hier auf die unterschiedlichen Abläufe einzugehen.
-
Wir erinnern einfach daran, dass
ein Pufferspeicher vor allem einen Speicher mit schnellem Zugriff
und eine Verbindungstabelle umfasst, die nicht in den Figuren dargestellt
sind. In dem Fall einer direkten Übereinstimmung unterscheidet
man vor allem drei Felder in der logischen Adresse eines Wortes
in der absteigenden Reihenfolge der Wertigkeit der Bits. Ein erstes
Feld A1, das Etikett beziehungsweise Kennzeichen genannt wird, ein
zweites Feld A2, das Index heißt
und ein drittes Feld A3, das die Adresse des Wortes in dem Datenblock
bezeichnet, der das Wort enthält.
Das erste und zweite Feld bilden gewöhnlich die logische Adresse
des Blocks B1. Der Index A1 zeigt auf eine Zeile einer Verbindungstabelle, die
vor allem zwei Werte enthält.
Der erste Wert ist das Kennzeichen A1' eines Blocks B2, von dem eine physische
Abbildung in dem Speicher mit schnellem Zugriff durch diesen Index
direkt adressiert wird. Der zweite Wert ist ein Statuscode, welcher
anzeigt, ob der Block B2 von dem Prozessor exklusiv gehalten wird,
auf einen anderen Prozessor aufgeteilt ist, und in diesem Fall,
ob sein Inhalt gültig
ist oder ob er von diesem anderen Prozessor verändert worden ist.
-
Wenn das Kennzeichen A1 des Blocks
B1 gleich dem Kennzeichen A1' des
Blocks B2 ist und wenn der Statuscode eine Exklusivität oder einen gültigen Inhalt
anzeigt, ist der Block B2 kein anderer als der Block B1, physisch
enthalten in dem Speicher mit schnellem Zugriff, und der Prozessor
kann die in dem Block befindlichen Wörter direkt verarbeiten, indem
er sie physisch in dem Speicher mit schnellem Zugriff mittels des
zweiten und dritten Feldes der logischen Adresse adressiert. Wenn
der Statuscode eine Aufteilung anzeigt, wird durch die Prozedur
des Pufferspeichers ein Signal S1 auf den Bus 7 gegeben,
um eine Veränderung
der Adresse des Blocks B1 anzuzeigen, um den Statuscodes dieses
Blocks in den Pufferspeichern, auf die er aufgeteilt ist, zu modifizieren.
-
Wenn das Kennzeichen A1 des Blocks
B1 unterschiedlich zum Kennzeichen A1' des Blocks B2 ist, oder wenn der Statuscode
eine Aufteilung und einen veränderten
Inhalt anzeigt, kann der Prozessor die in diesem Block enthaltenen
Worte nicht direkt bearbeiten, indem er sie physisch in dem Speicher mit
schnellem Zugriff mittels des zweiten und dritten Feldes der logischen
Adresse adressiert. Wenn der Statuscode eine Exklusivität anzeigt,
wird durch den Ablauf des Pufferspeichers eine Anforderung Q2 zum Einschreiben
des Blocks B2 in den aufgeteilten Speicher gesendet, damit ein Platz
in dem Pufferspeicher an der durch den Index A2 angezeigten physischen Adresse
frei wird; dann wird eine Anforderung Q1 zum Lesen des Blocks B1
in dem aufgeteilten Speicher gesendet, damit der Block B1 in den
Pufferspeicher an die durch den Index A2 angezeigte Adresse geladen
wird. Andernfalls wird durch den Ablauf des Pufferspeichers eine
Anforderung Q1 zum Lesen des Blocks B1 in dem aufgeteilten Speicher
gesendet, damit der Block B1 in den Pufferspeicher an die durch den
Index A2 angezeigte Adresse geladen wird.
-
Die 2 stellt
eine erste Stufe der Einzelheiten der Verbindungseinheit 6 dar,
welche mit den stofflichen und logischen Bauteilen eingesetzt wird, wenn
eine Adresse des die Felder A1 und A2 bildenden Blocks auf dem Bus 7 umläuft, wobei
sie mit einem Signal S1, einer Anforderung Q1 oder Q2 verknüpft ist.
Die Verbindungseinheit 6 mit der Bezeichnung RCC umfasst
eine Tabelle 8 mit der Bezeichnung LMD, eine Tabelle 9 mit
der Bezeichnung RCT, ein Register 18 und ein Register 19.
Die Adresse des Blocks ist ebenfalls auf drei Felder A4 bis A6 oder
auf zwei Felder A7 und A8 aufgeteilt. Das Feld A4 wird von Bits
gebildet, die höherwertiger
als die des Feldes A5 sind, und das Feld A6 wird von Bits gebildet, die
niederwertiger als die des Feldes A5 sind. Das Feld A8 wird von
niederwertigen Bits gebildet, und das Feld, A7 wird von höherwertigen
Bits in größerer Anzahl
als die des Feldes A4 gebildet, damit das Feld A4 von einer Anzahl
von höherwertigen
Bits verdeckt wird. Der Nutzen der Felder A4 bis A8 wird im Folgenden
der Beschreibung erläutert.
Die Folgerichtigkeit des Einschreibens in die Register 18 und 19 als Funktion
der Werte der Felder A4 bis A8 wird mittels der Zellen dargestellt,
in welchen logische Funktionen bearbeitet werden. Jedes Paar von
Zellen, die denselben Term enthalten, wobei in der einen das Zeichen
= und in der anderen das Zeichen vorangestellt ist, bilden einen
Komparator, in welchem das Ergebnis in Laufrichtung eine logische
Stufe aktiviert. In jedem der Register 18 und 19 ist
einer der beiden logischen Zustände
eines Signals eingeschrieben, die symbolisch durch ein Paar von
Zellen repräsentiert werden.
Die beschriebene Logik kann mittels eines Mikroprozessors realisiert
werden, welcher speziell für
die Verbindungseinheit 6 vorgesehen ist. Indem diese Logik
mittels stofflicher Schaltkreise verwirklicht wird, vergrößert man
seine Ausführungsgeschwindigkeit.
Die Erläuterungen
mit Bezug auf die 2 für die Verbindungseinheit 6,
welche für
das Modul 10 als lokal und für die Module 20, 40, 60 als entfernt
betrachtet wird, gelten für
die Verbindungseinheiten 26, 46, 66,
wobei die Bezugszeichen im Kreis ersetzt werden, und im Besonderen
gemäß der gleichen
Umbesetzung im Kreis 8 durch 28, 48 oder 68,
und 9 durch 29, 49 oder 69 gemäß dem betrachteten
Modul ersetzt werden.
-
Wenn die Verbindungseinheit 6 das
Signal S1, die Anforderung Q1 oder die Anforderung Q2 auf dem Bus 7 feststellt
bearbeitet sie den betreffenden Block mit einer Pufferspeicherprozedur
mit Hilfe ihrer Tabelle 8, wenn die in dem Feld A4 der
logischen Adresse enthaltenen höherwertigen
Bits anzeigen, dass sich der betreffende Block physisch in dem Speicher 5' befindet, lokal
im Modul 10, und mit Hilfe ihrer Tabelle 9, wenn
die höherwertigen
Bits des Kennzeichens anzeigen, dass sich der betreffende Block
physisch in einem der entfernten Module 20, 40 oder 60 befindet.
-
Die Tabelle 8 wird mit m
Bits indiziert, welche ein Feld A5 der logischen Adresse den höherwertigen
Bits des Kennzeichens nachfolgend bilden. Der Wert der Nummer m
bestimmt direkt die Größe der Tabelle 8,
deren Zeilenanzahl dann gleich 2m beträgt. Jede
Zeile der Tabelle 8 enthält die niederwertigen Bits,
welche ein Feld A6 der logischen Adresse eines auf ein oder mehrere
entfernte Module aufgeteilten Blocks und einen Statuscode S2 bilden.
Der Statuscode S2 ist zum Beispiel ein Byte, welches wenigstens
soviel Bits enthält
wie die Maschine Module aufweist. Jedem vom Modul 10 entfernten
Modul, in welchem sich der durch die Felder A5 und A6 gekennzeichnete
Block befindet, ist ein Bit zur Identifikation zugeordnet, welches
das Vorhandensein einer Aufteilung dieses Blocks auf das entfernte
Modul angibt. Ein Bit zeigt an, wenn der Block von einem entfernten Modul
verändert
worden ist. Zu einem bestimmten Zeitpunkt hält ein einzelnes Modul die
modifizierte Kopie, welche die aktuellste des Blocks ist. Das heißt, dass
wenn der Statuscode S2 eine Veränderung
anzeigt, gibt es kein Bit mehr außer einem einzigen Bit des
Vorhandenseins, das die Aufteilung dieses Blocks auf eine entferntes
Modul anzeigt, das ist das Bit, welches dem Modul zugeordnet ist,
das die aktuellste Version enthält.
Die Kopien des Blocks in den anderen Modulen sind ungültig. Die
niederwertigen Bits der logischen Adresse eines Blocks sind hier die
Bits, welche den vorab erwähnten
m Bits nachfolgen, sodass die Verkettung der Felder A4, A5 und A6 die
Verkettung der Felder A1 und A2 verdeckt. Die Felder A5 und A6 ermöglichen
es, den Block physisch in dem lokalen Speicher zu adressieren, welcher
durch den Speicher 5' gebildet
wird.
-
Wenn die durch die m Bits des Feldes
A5 indizierte Zeile des Feldes A5 einen Adresswert enthält, der
verschieden von dem des bearbeiteten Blocks ist, bedeutet das, dass
kein anderes Modul außer
dem Modul 10 dort zugreift. Die Bearbeitung des Blocks
bleibt dann lokal im Modul 10 und es ist nicht notwendig,
dies in die Tabelle 8 aufzunehmen, denn seine Aktualisierung
in dem Speicher 5' und
gegebenenfalls in den eigenen Pufferspeichern 11 bis 14 ist
ausreichend. Die Verbindungseinheit 6 erzeugt ein Signal
LH für
einen lokalen Erfolg, um einen erfolgreichen lokalen Zugriff (local
hit in englischer Sprache) anzuzeigen, ohne einen Datenaustausch mit
einem entfernten Modul. Das Signal LH wird in das Register 18 eingeschrieben.
Es ist dasselbe, wenn kein einziges Bit des Statuscodes S2 die Aufteilung
auf ein entferntes Modul anzeigt.
-
Wenn die Zeile der Tabelle 8,
indiziert von den m Bits des Felds A5, einen Adresswert A6 enthält, der
dem des bearbeiteten Blocks entspricht, und dass wenigstens ein
Bit des Statuscodes einen Aufteilung anzeigt, bedeutet dies, dass
ein anderes Modul als das Modul 10, zum Beispiel das Modul 20, dort
vorher zugegriffen hat. Die Bearbeitung des Blocks hängt dann
von seinem vorherigen Zugriff durch das entfernte Modul 20 und
von der mit diesem Block verknüpften
Bearbeitung ab. Wenn der Statuscode S2 anzeigt, dass der Block zur
Zeit in aufgeteilter Benutzung steht, bestimmte die Verbindungseinheit 6,
wenn ein Datenaustausch mit dem entfernten Modul 20 notwendig
wird.
-
Wenn der Statuscode S2 anzeigt, dass
der Block von einem entfernten Modul verändert worden ist, erfordert
eine Anforderung Q1 zum Lesen einen Datenaustausch mit dem entfernten
Modul, welches eine gültige
Kopie des Blocks hält,
um diese gültige Kopie
in den im Modul 10 befindlichen physischen Speicher wieder
einzuspeichern, erzeugt die Verbindungseinheit 6 dann ein
Signal LM eines lokalen Misserfolges, um anzuzeigen, dass ein lokaler
nicht erfolgreicher Zugriff (local miss in englischer Sprache) stattgefunden
hat, der wenigstens einen Datenaustausch mit einem entfernten Modul
mit sich bringt. Das Signal LM wird in das Register 18 geschrieben, dann
aktualisiert die Verbindungseinheit 6 den Statuscode S2
auf einen nicht veränderten
Status am Ende des Datenaustausches.
-
Wenn der Statuscode 2 nicht
anzeigt, dass der Block nicht von einem entfernten Modul verändert worden
ist, macht eine Anforderung Q1 zum Lesen es nicht erforderlich,
einen Datenaustausch mit einem entfernten Modul vorzunehmen, denn
das Modul 10 hält
eine gültige
Kopie des Blocks, die Verbindungseinheit 6 erzeugt dann
ein Signal LH für
einen erfolgreichen lokalen Zugriff. Andererseits erfordert ein
Signal S1 zur Modifikation oder eine Anforderung Q2 zum Lesen des
Blocks einen Datenaustausch mit jedem entfernten Modul für welches
ein Bit des Statuscodes S2 ein Vorhandensein anzeigt, sodass ihr signalisiert
wird, dass die Kopie des Blocks, die sie hält, ungültig ist, und so die Verbindungseinheit 6 dann
ein Signal LM eines lokalen Misserfolges erzeugt.
-
Die Erzeugung der Signale LH und
LM ist hier mit einer Pufferspeicherprozedur des Wiedereinschreibens
(write back in englischer Sprache) erläutert worden. Unter einer Pufferspeicherprozedur
von simultanem Einschreiben (write through in englischer Sprache)
versteht man, dass die Anforderung Q1 keinen Datenaus tausch erforderlich
macht, denn das Modul 10 hält eine aktuelle Kopie des
Blocks, dann erzeugt die Verbindungseinheit 6 ein Signal
LH, und dass die Anforderung Q2 oder das Signal S1 einen Datenaustausch
mit wenigstens einem entfernten Modul 20 erforderlich macht,
um die aktuelle Kopie des Blocks ins dieses Modul zurückzuschicken,
dann erzeugt die Verbindungseinheit 6 ein Signal LM.
-
Die Tabelle 9 wird durch
n Bits der niederwertigen Bits der logischen Adresse indiziert,
welche ein Feld 8 bilden. Der Wert der Nummer n bestimmt
direkt die Größe der Tabelle 9,
deren Zeilenanzahl dann gleich 2n beträgt. Jede
Zeile der Tabelle 9 enthält einen Statuscode S3 und
das Feld A7 der logischen Adresse, die sich auf eine Kopie des direkt
indizierten Blocks in dem Pufferspeicher 15 durch das Feld
A8 bezieht. Die Größe des Pufferspeichers 15 beträgt somit
2n Blöcke.
Der Statuscode S3 wird zum Beispiel aus zwei Bits gebildet, um drei
Zustände
Inv, Sha, Mod zu kodieren, welche den Zustand eines in der Tabelle 9 durch
das Feld A8 bezeichneten Blocks anzeigen. Der Zustand Inv gibt an,
dass der bezeichnete Block ungültig
ist, das heißt,
dass der bezeichnete Block von einem entfernten Modul 20, 40 oder 60 verändert worden
ist. Der Zustand Sha gibt an, dass der bezeichnete Block wenigstens
auf ein entferntes Modul 20, 40 oder 60 aufgeteilt
ist. Der Zustand Mod gibt an, dass der bezeichnete Block von dem
lokalen Modul 10 verändert
worden ist, und dass seine Kopie in dem Pufferspeicher 15 aktuell
ist.
-
Wenn die durch die n Bits des Felds
A8 indizierte Zeile einen Wert des Felds A7 enthält, der dem des bearbeiteten
Blocks entspricht, so bedeutet dies, dass der sich in einem anderen
als dem Modul 10 befindende Block, zum Beispiel in dem
Modul 20, in dem den Prozessoren 1 bis 4 gemeinsamen
Pufferspeicher 15 verändert
worden ist. Die Größe des Pufferspeichers
ist so dimensioniert, dass sie 2n Blöcke enthält, die
in der Tabelle 9 bezeichnet sind. Die Größe der Tabelle 9 ist
durch die Wahl des Wertes von n parametrierbar, es ist dasselbe
bei der Größe des Pufferspeichers 15.
Ein interessantes Mittel zur Ermöglichung dieser
Parametrierbarkeit ist es, in dem Speicher 5 einen reservierten
Adressbereich abzugrenzen und diesen dem Pufferspeicher 15 zuzuordnen.
Dieses Mittel wird dann auf jedes entfernte Modul 20, 40, 60 übertragen,
um einen reservierten Adressbereich in dem Speicher 25, 45, 65 einem
Pufferspeicher 35, 55, 75 zuzuordnen.
Die Größe der Pufferspeicher 15, 35, 55, 75 ist
gering vor denen der Speicher 5, 25, 45, 65 und
das Mittel vermindert die Größe des allen
Modulen gemeinsamen Speichers nur geringfügig.
-
Die Verbindungseinheit 6 betrachtet
dann den Statuscode S3 des bezeichneten Blocks in der Tabelle 9,
das heißt,
des durch das Signal S1 oder einer Anforderung Q1, Q2 bearbeiteten
Blocks. Wenn der Statuscode S3 anzeigt, dass der Block ungültig ist,
erzeugt die Verbindungseinheit 6 dieselben Datenaustausche
und dieselben Signale als wenn die durch die n Bits des Felds 8 indizierte
Zeile einen Wert des Felds A7 enthält, der unterschiedlich zu
diesem des bearbeiteten Blocks ist, so wie zuvor in der Beschreibung
aufgeführt.
-
Wenn der Statuscode S3 anzeigt, dass
der Block nicht auf ein anderes Modul aufgeteilt ist, wird kein
Datenaustausch mit einem entfernten Modul erforderlich, und die
Verbindungseinheit 6 erzeugt ein Signal RH für einen
erfolgreichen entfernten Zugriff, um einen erfolgreichen entfernten
Zugriff (remote hit in englischer Sprache) ohne Datenaustausch mit
einem entfernten Modul anzuzeigen.
-
Wenn der Statuscode in der Tabelle 9 anzeigt,
dass der Block zur Zeit in aufgeteilter Nutzung steht, bestimmt
die Verbindungseinheit 6, wenn es erforderlich wird, einen
Datenaustausch mit dem entfernten Modul 30 aufzunehmen.
Für das
Signal S1 ist ein Datenaustausch notwendig, um in den Statuscode
D2 des Moduls 20, in welchem sich der Block befindet, einzuschreiben,
dass der Block verändert worden
ist, und um in den Statuscode 53 des Moduls 40 oder 60,
welcher eine Kopie des Blocks in seinem Pufferspeicher 55, 75 besitzt,
einzuschreiben, dass der Block ungültig ist; dann erzeugt die
Verbindungseinheit 6 ein Signal RM eines entfernten Misserfolgs, um
einen entfernten nicht erfolgreichen Zugriff (remote miss in englischer
Sprache) anzuzeigen, für
welchen mindestens ein Datenaustausch mit einem entfernten Modul
ausgelöst
worden ist. Die Verbindungseinheit 6 sagt mit ihrem Statuscode
S3 aus, dass der Block verändert
worden ist. Für
die Anforderung Q1 zum Lesen ist kein Datenaustausch erforderlich,
wenn der Statuscode S3 in der Tabelle 9 anzeigt, dass der
Inhalt des Blocks in dem Modul 10 gültig ist, und die Verbindungseinheit 6 erzeugt
dann ein Signal RH eines entfernten Erfolgs; wenn der Statuscode
in der Tabelle 9 anzeigt, dass der Inhalt des Blocks in
dem Modul 10 ungültig
ist, wird ein Datenaustausch erforderlich, um den Inhalt des Blocks
in dem Modul 10 zu aktualisieren, und die Verbindungseinheit 6 erzeugt
dann ein Signal RM eines entfernten Misserfolgs und deklariert in
ihrem Statuscode S3 am Ende des Datenaustausches, dass der Block
gültig
ist. Für
die Anforderung Q2 zum Lesen im Speicher entfernt vom Modul 10,
ist kein Datenaustausch erforderlich, und die Verbindungseinheit 6 erzeugt ein
Signal RH eines entfernten Erfolgs. Die Erzeugung der Signale RH
und RM ist hier mit einer Pufferspeicherprozedur des Wiedereinschreibens
erläutert worden.
Mit einer Pufferspeicherprozedur von simultanem Einschreiben (write
through in englischer Sprache) genügt es, die eingeschriebene
Logik so zu modifizieren, dass das Signal S1 und die Anforderung
Q2 einen Datenaustausch mit dem entfernten Modul 20, 40, 60 erforderlich
machen, um dort den Block zu aktualisieren, wobei die Verbindungseinheit 6 dann
ein Signal RM erzeugt, damit die Anforderung Q1 keinen Datenaustausch
erforderlich macht, denn der Inhalt des Blocks ist systematisch
aktualisiert worden.
-
Wenn die von den n Bits indizierte
Zeile einen unterschiedlichen Adresswert zu dem des bearbeiteten
Blocks enthält,
bedeutet dies, dass der in dem Pufferspeicher 15 durch
die Indizierung der Tabelle 9 logisch adressierte Block
unterschiedlich zu dem bearbeiteten Block ist. Die Verbindungseinheit 6 erzeugt
dann ein Signal RM. Die Verbindungseinheit 6 erzeugt in
diesem Fall auch ein Signal S4, um einen Ersatz des aufgenommenen
Blocks durch den bearbeiteten Block in dem Pufferspeicher 15 anzuzeigen. Das
Signal S4 wird auf den Bus 7 gesendet, um in den eigenen
Pufferspeichern 11 bis 14 den im Pufferspeicher 15 aufgenommenen
Block für
ungültig
zu erklären,
denn die Tabelle 9 kann seinen Zusammenhang nicht mehr
gewährleisten.
Die Verbindungseinheit 6 bewirkt dann eine Aktualisierung
der Tabelle 9 mittels eines Datenaustausches mit den entfernten Modulen 20, 40 und 60,
um den bearbeiteten Block wieder an einen physischen logisch adressierten Platz
im Pufferspeicher durch die Tabelle 9 einzuspeichern. Der
Datenaustausch besteht vor allem darin, eine Leseanforderung mit
dem Bestimmungsort entferntes Modul 20, 40 oder 60 der
Platzierung des Blocks auszusenden. Um die Beschreibung zu vereinfachen,
gehen wir zum Beispiel davon aus, dass das Modul der Platzierung
des Blocks das Modul 20 ist.
-
Die 3 stellt
eine zweite Stufe der Einzelheiten der Verbindungseinheit 6, 26, 46, 66 mit
stofflichen und logischen Elementen dar, welche in Gebrauch genommen
werden, wenn eine Blockadresse, die aus den Feldern A1 und A2 gebildet
ist, in dem Modul ankommt, in dem der Block platziert ist, wobei diese
Blockadresse über
die Anschlüsse 17, 37, 57, 77 von
anderen Modulen herstammt. Die Anmerkungen in dem Vorspann der Einführung zur 2 gelten auch für die 3. Insbesonders sind die
Bezugszeichen in der 3 die
der Verbindungseinheit 25, um den Ablauf der Beschreibung
zu erleichtern.
-
Wenn der bearbeitete Block in die
Tabelle 28 aufgenommen ist, wird sein Statuscode S2 aktualisiert,
um anzuzeigen, dass der Block auf das Modul 10 aufgeteilt
ist. Wenn die Zeile der Tabelle 28 den bearbeiteten Block
aufnimmt und der Statuscode S2 anzeigt, dass der Block von keinem
anderen Modul 40, 60 verändert worden ist, sendet die
Verbindungseinheit 26 eine Kopie des Blocks an die Verbindungseinheit 6.
Diese Kopie wird durch Lesen in dem Speicher 25 oder in
einem der Pufferspeicher 31 bis 34 erhalten. Wenn
der Statuscode anzeigt, dass der Block verändert ist, sendet die Verbindungseinheit 26 eine Leseanfor derung
an eines der Module 40, 60, welches die aktuelle
Version des Blocks besitzt. Die Verbindungseinheit 46, 66,
welche die aktuelle Kopie besitzt, sendet die Kopie des Blocks an
die Verbindungseinheit 6 des Moduls 10 und an
die Verbindungseinheit 26 des Moduls 20. Die Verbindungseinheit 26 aktualisiert
ihren lokalen Speicher 25' und
ihren Statuscode S2 auf den aufgeteilten Status. Die Verbindungseinheit 6 nimmt
den Block mit einem aufgeteilten und nicht veränderten Statuscode in der Tabelle 9 auf
und schreibt den Block in den Pufferspeicher 15. Darauf
sendet die Verbindungseinheit 6 eine Bestätigung an
die Verbindungseinheit 26, welche in ihrem Statuscode S2
die Aufteilung auf das Modul 10 berichtigt.
-
Wenn der bearbeitete Block nicht
in die Tabelle 28 aufgenommen ist, erzeugt die Verbindungseinheit 26 ein
Signal S5, um anzuzeigen, dass der aufgenommene Block durch den
bearbeiteten Block ersetzt werden wird. Wenn der Statuscode S2 des aufgenommenen
Blocks anzeigt, dass dieser von einem Modul 10, 40 oder 60 verändert worden
ist, sendet die Verbindungseinheit 26 in Leseanforderung
an die der Module 10, 40, 60, welche
die aktuelle Version des Blocks enthalten. Diejenige Verbindungseinheit 6, 46, 66,
deren Statuscode S3 des betreffenden Blocks anzeigt, dass ihre Kopie
des Blocks nicht ungültig
ist, sendet eine Kopie des Blocks an die Verbindungseinheit 26 des
Moduls 20, um seinen lokalen Speicher 25' zu aktualisieren.
Das Signal S5 wird an die eine oder die Verbindungseinheiten 6, 46, 66 gesandt,
welche einen Verweis auf den Block in einer Zeile ihre Tabelle 8, 48, 68 haben,
damit jede ihren Statuscode S3 auf den Status ungültig aktualisiert. Dann
nimmt die Verbindungseinheit 26 den bearbeiteten Block
in ihre Tabelle 28 mit einem Statuscode S2 auf, welcher
anzeigt, dass der Block unverändert mit
auf das Modul 10 aufgeteilt ist. Dann sendet die Verbindungseinheit 26 den
Inhalt des bearbeiteten Blocks an die Verbindungseinheit 6,
welche den Block in ihre Tabelle 9 mit einem Statuscode
auf, der anzeigt, dass der Block gültig, aufgeteilt und unverändert ist,
und schreibt den Block in den Pufferspeicher 15 ein. Wenn
der Statuscode S2 des in der Tabelle 28 auf genommenen Blocks
nicht anzeigt, dass dieser verändert
worden ist, wird das Signal 55 an die eine oder die Verbindungseinheiten 6, 46, 66 gesandt,
welche einen Verweis auf den Block in einer Zeile ihre Tabelle 8, 48, 68 haben,
damit jede ihren Statuscode S3 auf den Status ungültig aktualisiert. Dann
nimmt die Verbindungseinheit 26 den bearbeiteten Block
in ihre Tabelle 28 mit einem Statuscode S2 auf, welcher
anzeigt, dass der Block unverändert mit
auf das Modul 10 aufgeteilt ist. Dann sendet die Verbindungseinheit 26 den
Inhalt des bearbeiteten Blocks an die Verbindungseinheit 6,
welche den Block in ihre Tabelle 9 mit einem Statuscode
auf, der anzeigt, dass der Block gültig, aufgeteilt und unverändert ist,
und schreibt den Block in den Pufferspeicher 15 ein.
-
Die voranstehenden Erläuterungen
stützen sich
auf eine Pufferspeicherprozedur mit direkter Übereinstimmung. Die Anwendung
der so gegebenen Lehre darf dem Fachmann keine unüberwindlichen
Schwierigkeiten bereiten, um andere bekannte Pufferspeicherprozeduren,
wie solche mit assoziativer Übereinstimmung
oder mit assoziativer Übereinstimmung
durch Blockeinheiten, in allen oder Teilen der eigenen Pufferspeicher 11 bis 14, 31 bis 34, 41 bis 44, 61 bis 64 und
den Tabellen 8, 9, 28, 29, 48, 49, 68, 69 zu
verwenden.
-
Inbesonders ist es interessant, in
den Tabellen 8, 28, 48, 68 eine
assoziative Übereinstimmung durch
Blockeinheiten, beispielsweise durch vier Blockeinheiten zu verwenden.
Denn ein Ersatz einer Zeile jeweils in der Tabelle 9 und 29 induziert
häufig einen
Ersatz einer Zeile jeweils in der Tabelle 28 und 8.
-
Die 4 zeigt
zusätzliche
Details der Verbindungseinheit 6. Die Verbindungseinheiten 6, 26, 46, 66 sind
identisch. Das Abtrennen einer Adresse des auf dem Bus 7 zirkulierenden
Blocks ist hier nur durch die Felder A4 bis A8 dargestellt, denn
wir haben bereits vorab gesehen, dass die Felder A1 und A2 im Besonderen
nützlicher
für die
Stufen der eigenen Pufferspeicher
11 bis 14 waren.
Ein Filter 85 leitet die Blockadresse zur Tabelle 8,
wenn das Feld A4 eine Adresse eines Blocks betrifft, der sich im
Modul 10 befindet, oder zur Tabelle 9, wenn das
Feld A4 eine Adresse eines Blocks betrifft, der sich im Modul 20, 40, 60 entfernt
vom Modul 10 befindet. Ein Indexregister 84 zeigt
auf einen Eingang der Tabelle 8, welcher durch das Feld
A5 der Blockadresse adressiert wird. Ein Indexregister 94 zeigt
auf einen Eingang der Tabelle 9, welcher durch das Feld
A8 der Blockadresse adressiert wird.
-
Wenn der Filter 85 die Blockadresse
an die Tabelle 8 leitet, erzeugt ein Logik-Kombinationselement 80 ein
Signal LH oder ein Signal LM und einen entfernten Datenaustausch
als Funktion der Werte des Statuscodes und des Felds A6, die in
der Tabelle 8 gespeichert sind, zu der Zeile, welche vom
Indexregister 84 angewiesen ist. Das Element 80 führt eine Umgruppierung
zum Beispiel der verschiedenen Vergleicher und logischen Tore der 2 in Verbindung mit der
Tabelle 8 durch. Jeder gleichzeitig zum Signal LM erzeugte
entfernte Datenaustausch wird in ein Pufferregister 83 geschrieben,
um bei einer Anforderung über
den Anschluss 17 in Erwartung einer Antwort über denselben
Anschluss 17 ausgesendet zu werden. Ein Einschreiben des
jeweiligen Signals LH und LM in das Register 18 inkrementiert
jeweils einen Zähler 81 und 82.
Der Inhalt des Zählers 81 und 82 ist über den
Bus 7 zugreifbar, zum Beispiel beim Lesen vom Typ Eingang/Ausgang.
-
Wenn der Filter 85 die Blockadresse
an die Tabelle 9 leitet, erzeugt ein Logik-Kombinationselement 90 ein
Signal RH oder ein Signal RM und einen entfernten Datenaustausch
als Funktion der Werte des Statuscodes und des Felds A7, die in
der Tabelle 9 gespeichert sind, zu der Zeile, welche vom
Indexregister 94 angewiesen ist. Das Element 90 führt eine Umgruppierung
zum Beispiel der verschiedenen Vergleicher und logischen Tore der 2 in Verbindung mit der
Tabelle 9 durch. Jeder gleichzeitig zum Signal RM erzeugte
entfernte Datenaustausch wird in ein Pufferregister 93 geschrieben,
um bei einer Anforderung über den
Anschluss 17 in Erwartung einer Antwort über denselben
Anschluss 17 ausgesendet zu werden. Ein Einschreiben des
jeweiligen Signals RH und RM in das Register 19 inkrementiert
jeweils einen Zähler 91 und 92.
Der Inhalt des Zählers 91 und 92 ist über den
Bus 7 zugreifbar, zum Beispiel beim Lesen vom Typ Eingang/Ausgang.
-
Jeder der Zähler 81, 82, 91, 92 ist
dazu vorgesehen, einen Interrupt im Falle eines Überlaufs auf den Bus 7 zu
senden. Man unterscheidet überdies
in der 4 ein Kontrollregister 86 und
ein Zustandsregister 87. Das Register 86 ist über den
Bus 7 für
Lese- und Schreibvorgänge
zugreifbar. Das Register 87 ist über den Bus 7 für Lesevorgänge zugreifbar
und wird nach dem Lesevorgang seines Inhalts systematisch auf Null
gesetzt.
-
Das Register 87 beinhaltet
für jeden
Zähler 81, 82, 91, 92 ein
Bit, dessen einer logischer bestimmter Zustand einen Überlauf
des Zählers
signalisiert, für
den dieses Bit zugewiesen ist.
-
Das Register 86 beinhaltet
Bits zur Kontrolle der Zähler 81, 82, 91, 92 mittels
einer logischen Kombinationsschaltung, die nicht dargestellt ist,
um die Figur nicht zu unübersichtlich
zu machen. Ein erstes Bit ist zur unbedingten Deaktivierung des
Zählers
vorgesehen, dergestalt, dass ein logischer Zustand des Bits verhindert,
dass die Inhalte der Zähler
nicht durch Einschreibvorgänge
in die Register 18 und 19 verändert werden können, und
dass der komplementäre
logische Zustand des Bits ermöglicht,
dass die Inhalte der Zähler
durch Einschreibvorgänge
in die Register 18 und 19 verändert werden können. Ein zweites
Bit ist zur bedingten Deaktivierung der Zähler vorgesehen, dergestalt,
dass ein logischer Zustand des Bits verhindert, dass die Inhalte
der Zähler
nicht durch Einschreibvorgänge
in die Register 18 und 19 im Anschluss an einen
durch ein Bit des Registers 87 signalisierten Überlauf
verändert
werden können, und
dass der komplementäre
logische Zustand des Bits ermöglicht,
dass die Inhalte der Zähler
durch Einschreibvorgänge
in die Register 18 und 19 verändert werden können, unabhängig vom
Inhalt des Registers 87. Ein drittes Bit ist zur Deaktivierung
des Interrupts im Falle eines oben erwähnten Überlaufs vorgesehen, dergestalt,
dass ein logischer Zustand des Bits den Interrupt ermöglicht,
und dass der komplementäre
logische Zustand des Bits den Interrupt verhindert. Ein viertes
Bit ist zum Rücksetzen
der Inhalte der Zähler 81, 82, 91, 92 auf
Null vorgesehen. Man kann ein allen Zählern oder gemeinsames viertes
Bit oder soviele vierte Bits wie Zähler vorhanden sind vorsehen,
wobei jedes vierte Bit sich dann auf den Zähler auswirkt, für den es
aktiviert wird.
-
Es empfiehlt sich, sich eine richtige
Vorstellung davon zu machen, dass die Verwaltung des Zählers, die
sich physisch in der Verbindungseinheit 6 befindet, ausgeführt wird,
ohne dass die von den Prozessabläufen
durch die Prozessoren 1 bis 4, 21 bis 24, 41 bis 44, 61 bis 64 durchgeführten Speicherzugriffe über den
Bus 7 und den Anschluss 17 davon gestört werden.
Somit erzeugt das Zählen
der erfolgreichen und der nicht erfolgreichen Zugriffe auf den lokalen
und entfernten Speicherraum selbst keine erfolgreichen oder nicht
erfolgreichen Pufferspeicherzugriffe. Außerdem können bei der Ausführung der Zugriffe über den
Bus 7 zu den Zählern 81, 82, 91, 92 und
zu den Registern 18, 19, 86, 87 durch
Lese- oder Schreibvorgänge
des Typs Eingang/Ausgang die mit den Tabellen 8 und 9 verknüpften Pufferspeicherprozeduren
nicht intervenieren. Die einzigen Prozeduren, die zu einer Störung der
Pufferspeicherprozeduren fähig
sind, sind die Betriebsprozeduren der Zähler 81, 82, 91, 92,
zweckdienlich zum Editieren der Auswertungen bei den Leistungen
des Betriebssystems oder der ausgeführten Anwendungen durch die Maschine,
ja sogar zweckdienlich für
ein eventuelles Auslösen
von Optimierungsprozeduren in Realzeit, wie zum Beispiel solche
zur Relokalisierung des Speichers. Indessen können diese Prozeduren in Bezug
auf die anderen von der Maschine ausgeführten Prozeduren genügend unbedeutend
sein, damit die Maßnahmen,
welche sie ermöglichen,
praktisch identisch mit denen sind, die bei den Pufferspeicherprozeduren
in vollkommener Abwesenheit einer Beeinflussung durch diese Prozedurmaßnahmen
erlangt werden Die Architektur der Register 86 und 87 gestattet
es, unterschiedliche Typen von Maßnahmeprozeduren mit den in
den Prozessoren 1 bis 4 ausgeführten Programmen anzuwenden.
Man kann angeben, dass diese durch einen von dem Register 87 erzeugten
Interrupt ausgelöst
werden, oder dass diese periodisch im Zusammenwirken mit dem Register 86 ausgelöst werden.
Eine Maßnahmeprozedur
liest simultan den Inhalt der vier Zähler 81, 82, 91, 92 aus und
bearbeitet die so erhaltenen Werte.
-
Die Summe der in den vier Zählern 81, 82, 91, 92 enthaltenen
Werten ergibt eine Zahl N0 von Speicherzugriffen, zum Beispiel zwischen
zwei Überlaufzählern oder
in regelmäßigen Zeitintervallen.
Das Verhältnis
des Inhalts des Zählers 81 zur
Zahl der Speicherzugriffe ergibt eine Rate TL1 der lokalen Zugriffserfolge.
Das Verhältnis
des Inhalts des Zählers 82 zur
Zahl der Speicherzugriffe ergibt eine Rate TL2 der lokalen Zugriffsmisserfolge,
das heißt
der Zugriffe auf in dem Speicher 5' befindliche Blöcke. Das Verhältnis des
Inhalts des Zählers 91 zur
Zahl der Speicherzugriffe ergibt eine Rate TR1 der entfernten Zugriffserfolge.
Das Verhältnis
des Inhalts des Zählers 92 zur
Zahl der Speicherzugriffe ergibt eine Rate TR2 der entfernten Zugriffsmisserfolge,
das heißt
der Zugriffe auf in dem Speicher 25', 45', 65' befindliche Blöcke. Die Summe der in den Registern 81 und 91 enthaltenen
Werte ergibt eine Zahl von N1 von erfolgreichen Speicherzugriffen
ohne entfernten Datenaustausch. Die Summe der in den Registern 82 und 92 enthaltenen
Werte ergibt eine Zahl von N2 von nicht erfolgreichen Speicherzugriffen
entfernten Datenaustausches. Das Verhältnis der Zahl N1 zur Zahl
N0 ergibt eine Rate TR3 der Lokalität der Speicherzugriffe. Das
Verhältnis
der Zahl N2 zur Zahl N0 ergibt eine Rate TR4 der Entfernung der
Speicherzugriffe. Man sieht bei diesen wenigen Beispielen die Vielfältigkeit von
möglichen,
durch den stofflichen Aufbau der Verbindungseinheit 6 veranlassten,
Aus wertungen der Inhalte der Zähler 81, 82, 91, 92 für den Benutzer
der Maschine, um damit die Leistungsfähigkeit zu steigern.
-
Die 5 zeigt
weitere mögliche
Details der Verbindungseinheit 6. Jedesmal, wenn das Logik-Kombinationselement 80 ein
Signal LM erzeugt, wird die Anforderung an den Ursprung des Signals LM
in einem Stapel 96 mit den Daten des Eintrags dieser Anforderung
in der Verbindungseinheit 6 durch den Filter 85 in
Erwartung der Bearbeitung zur Erledigung dieser Anforderung gespeichert.
Jedesmal, wenn das Logik-Kombinationselement 90 ein Signal
RM erzeugt, wird die Anforderung an den Ursprung des Signals RM
in einem Stapel 97 mit den Daten des Eintrags dieser Anforderung
in Erwartung der Bearbeitung zur Erledigung dieser Anforderung gespeichert.
Wir haben oben gesehen, dass jedes Signal LM und RM von einem ersten
Datenaustausch mit einem entfernten Modul begleitet war, welches selbst
weitere Zwischen-Datenaustausche
in einer Kaskade auslösen
konnte. Dieser erste Datenaustausch hört auf, wenn die Verbindungseinheit 6 über den
Anschluss 17 eine Antwort empfängt, die es ihr ermöglicht,
die Bearbeitung der Anforderung an den Ursprung des Signals LM oder
RM fertigzustellen. Die Bearbeitung einer Anforderung wird fertiggestellt, wenn
die Verbindungseinheit 6 eine gültige Kopie des Blocks auf
den Bus 7 sendet, im Anschluss an eine Leseanforderung,
oder einfacher eine Begleichung im Anschluss an eine Anforderung
zum Einschreiben. Zur Fertigstellung der Bearbeitung einer gespeicherten
Anfrage in dem Stapel 96 zieht ein Subtrahierer-Addierer 89 die
Daten des Eintrags der Anforderung von den Daten der Fertigstellung
der Bearbeitung der Anforderung ab und fügt die erhaltenen Differenz
D dem Inhalt S eines Registers 88 hinzu. Das Register 88 verhält sich
wie ein Zähler
von kumulierter Zeit und trennt die Daten des Eintrags der Anforderung
und die Fertigstellung der Bearbeitung durch die Verbindungseinheit 6.
Das außerdem
Zähler 88 genannte
Register ist über
den Bus 7 zum Lesen zugreifbar. Zur Fertigstellung der Bearbeitung
einer gespeicherten Anforderung in dem Stapel 97 zieht
ein Subtrahierer-Addierer 99 die Daten des Eintrags der Anforderung
von den Daten der Fertigstellung der Bearbeitung der Anforderung
ab und fügt
die erhaltenen Differenz D dem Inhalt S eines Registers 98 hinzu.
Das Register 98 verhält
sich wie ein Zähler
von kumulierter Zeit und trennt den Eintrag der Anforderung und
die Fertigstellung der Bearbeitung durch die Verbindungseinheit 6.
Das außerdem
Zähler 98 genannte
Register ist über
den Bus 7 zum Lesen zugreifbar.
-
Das Register 87 enthält für jeden
Zähler 88, 98 ein
Bit, von dem ein bestimmter logischer Zustand einen Überlauf
des Zählers
signalisiert, für
welchen dieses Bit zugewiesen ist. Die Bits des Registers 86 kontrollieren
die Zähler 88 und 98 in
identischer Weise zu der mit Bezug auf die 4 für
die Zähler 81, 82, 91, 92 beschriebenen.
-
Der Lesezugriff auf die Zähler 88 und 98 ermöglicht einer
im Modul 10 ausgeführten
Prozedur, die Verzögerung
der Datenaustausche mit den entfernten Modulen 20, 40, 60 auszuwerten,
was sowohl Zugriffe auf in dem Modul 10 befindliche Blöcke dank dem
Zähler 88,
als auch Zugriffe auf in einem entfernten Modul 20, 40, 60 befindliche
Blöcke
dank dem Zähler 98 betrifft.
-
Die verschiedenen beschriebenen Bauteile der
Verbindungseinheit 6 sind zweckmäßig zur Berechnung der mittleren
Zugriffszeit auf den Speicher und bilden eine Hilfe zur Diagnose
der Lokalität.