-
Die
Erfindung betrifft eine Instrumentationsanordnung für eine Maschine
mit nichtuniformen Speicherzugriffen und zusammenhängendem
Pufferspeicher.
-
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 jedes Mal 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ängenden
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 CCNUMA, 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 neuesten 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. Der in einem betrachteten
Modul angeordnete physische Speicher ist derjenige, auf welchen
das betrachtete Modul am schnellsten zugreift, denn dieses erfolgt über seinen lokalen Systembus.
Der physische Speicher, welcher entfernt in einem anderen Modul
angeordnet ist, ist derjenige, auf den das betrachtete Modul am
langsamsten zugreift, denn dazu werden einer oder mehrere Datenaustausche
zwischen Modulen erforderlich. Der in dem betrachteten Modul angeordnete physische
Speicher beinhaltet einen ersten Teil, welcher speziell den Datenblöcken zugewiesen
ist, die in dem Modul resident sind, und einen zweiten Teil, welcher
speziell den Kopien von Blöcken
zugewiesen ist, die in den anderen Modulen resident sind. Der zweite Teil
des physischen Speichers weist einen Puffer des entfernten Speichers
in den anderen Modulen auf.
-
Ein
in dem ersten Teil des physischen Speichers residenter Block ist
nicht sofort verfügbar,
wenn sein Inhalt keine aktuelle Kopie darstellt, das ist zum Beispiel
dann der Fall, wenn ein oder mehrere weitere Module sich diesen
Block teilen, und wenn das eine dieser weiteren Module davon eine
aktuelle Kopie aufweist, im Zustand zusammenhängende Speicher. Zur Erzeugung
der Aufteilung von in seinem ersten Teil des physischen Speichers
residenten Blöcken
auf weitere Module, stellt das betrachtete Modul eine Tabelle des
lokalen Speichers LMD (Local Memory Directory in englischer Sprache)
auf. Die Tabelle LMD besteht aus mehreren Zeilen, von denen jede dazu
vorgesehen ist, einen in dem Modul angeordneten beziehungsweise
residenten und auf einen oder mehrere weitere Module aufgeteilten
Block zu bezeichnen.
-
Ein
Block, der nicht in dem ersten Teil des physischen Speichers resident
ist, ist sofort verfügbar,
wenn eine aktuelle Kopie dieses Blocks in dem zweiten Teil des physischen
Speichers erreichbar ist. Zur Erzeugung des Vorhandenseins von aktuellen Kopien
in dem zweiten Teil des physischen Speichers erstellt das betrachtete
Modul eine Tabelle des entfernte Speichers RCT (Remote Cache Table
in englischer Sprache). Die Tabelle RCT besteht aus mehreren Zeilen,
von denen jede dazu vorgesehen ist, mit einem Ort des zweiten Teils
des physischen Speichers zu korrespondieren, wobei jeder Ort dazu
vorgesehen ist, eine Kopie des durch diese Zeile bezeichneten Blocks
zu beinhalten.
-
Der
Nutzen einer Maschine mit nichtuniformen Speicherzugriffen und zusammenhängendem Pufferspeicher
besteht darin, dass jedes Modul Datenblöcke, die in einem ersten Teil
seines lokalen Speichers resident sind, oder Kopien von in einem ersten
Teil des Speichers eines anderen Moduls residenten Blöcken in
einem zweiten Teil seines lokalen Speichers bearbeitet. Ein betrachtetes
Modul braucht dann nur mit anderen Modulen zu kommunizieren, um
für das
Bearbeiten der aktuellen Kopien eine Übereinstimmung der Daten abzusichern.
Bei der Ausführung
ist es somit a priori irrelevant, ob ein Datenblock in einem Modul
oder in einem anderen resident ist, wobei jedes Modul, wenn erforderlich,
Kopien von benötigten
Blöcken
in seinen lokalen Speicher abspeichert. Indessen ist es für eine Ausführung des gemeinsamen
Betriebssystems für
alle Module oder bestimmte aufgeteilte Anwendungen möglich, dass bestimmte
Daten häufig
der Einheit von Modulen verwendbar sind. Diese Daten betreffen beispielhaft aber
nicht einschränkend
Unterstützungstabellen
für Prozesse,
Tabellen von offenen Dateien oder Tabellen für Zugriffserlaubnis auf aufgeteilte
Ressourcen. Das Zusammenhängen
dieser Daten bringt die Gefahr mit sich, dass umfangreicher Datenaustausch zwischen
den Modulen erforderlich wird und die von diesen Maschinen erreichte
Leistungserhöhung
somit gestört
wird. Das Problem liegt darin, dass es schwierig ist, a priori das
Maß einzuschätzen, in
welchem die auf mehrere Module aufgeteilten Daten es mit sich bringen,
die Leistung der Maschine zu beeinträchtigen, wobei diese Beeinträchtigung
außerdem von
der Betriebsart der Maschine sowie gleichviel von den Anwendungen
abhängig
sind, die mit dieser Maschine durchgeführt werden. Andererseits würde eine
Investition von Optimierungsgeldern nachteilig sein, die Daten betreffen,
welche die Leistungen nur gering beeinträchtigen, auf die Gefahr hin,
Daten zu vernachlässigen,
deren Lokalisation die Gefahr mit sich bringt, diese Leistungen
wesentlich mehr zu beeinträchtigen.
-
Während Untersuchungen
von Systemen mit Architekturen von Multiprozessoren besonders in
der 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. beschrieben werden,
werden die Ergebnisse der erwähnten
Untersuchungen in statistischer Form in prozentualer Prozessor-Nutzungszeit
in Histogrammen dargestellt. Eine solche Untersuchung ermöglicht keine Überwachung
und Ermittlung von „heißen" Zugriffsstellen
im zugehörigen
Speicher von Prozessoren mit einer Architektur von Multiprozessoren.
-
Obwohl
die Überwachung
von Zugriff unter den Speicheradressen eines Prozessors in der US-A-4 845 615 beschrieben
ist, betrifft eine solche Überwachung
einzig und allein die Überwachung
einer Software und insbesondere an den Speicherbereichen, die zu
einem Prozessor gehören,
während die
Ausführung
dieser Software mit einem Rechner in einer Einzelplatz-Version erfolgt.
Eine solche Überwachung
kann nicht den Anspruch erheben, das Gewährleisten einer Zugriffssteuerung
auf diesen Speicherbereich ausgehend von einer Vielzahl von weiteren
Prozessoren einer Architektur von Multiprozessoren zu ermöglichen.
-
Die
durch die Ansprüche
festgelegte Erfindung schlägt
eine Maschine mit nichtuniformen Speicherzugriffen und zusammenhängendem
Pufferspeicher vor, welche aus mehreren Modulen besteht, wobei ein
betrachtetes Modul eine Einrichtung zur Sicherstellung eines Zusammenhangs
von Daten mit anderen Modulen beinhaltet, dadurch gekennzeichnet,
dass diese Einrichtung mindestens Folgendes aufweist:
-
- – ein
erstes Register, das für
die Aufnahme einer ersten physischen Adresse des Speichers vorgesehen
ist,
- – ein
zweites Register, das für
die Aufnahme einer zweiten physischen Adresse des Speichers vorgesehen
ist,
- – erste
Einrichtungen zum Messen einer Anzahl von Aktivitäten bezüglich Daten,
deren Adressen zwischen dieser ersten physischen Adresse und dieser
zweiten physischen Adresse enthalten sind,
- – ein
drittes Register, das für
die Aufnahme eines Schwellenwerts für das Messen der Anzahl von Aktivitäten vorgesehen
ist,
- – zweite
Einrichtungen zur Ermittlung, ob dieser Schwellenwert von der durch
die ersten Einrichtungen gemessenen Anzahl von Aktivitäten überschritten
wird.
-
Eine
Messung der Anzahl von Aktivitäten
bezüglich
Daten, deren Adressen unter zwei physischen Adressen enthalten sind,
welche ein Fenster im Speicherraum der Maschine bilden, ermöglicht es, eine
charakteristische Latenzzeit dieses Fensters abzuschätzen, eine
Zeitdauer, die die Aussendung einer Anforderung durch einen eigenen
Pufferspeicher eines Prozessors und die Verfügbarkeit einer zu dieser Anforderung
korrespondierenden Erwiderung in diesen eigenen Pufferspeicher trennt.
Die Abschätzung
kann ausgehend von einer absoluten Zeit oder ausgehend von einer
Anzahl von Datenaustauschen durchgeführt werden.
-
Die
Erfindung wird mit Hilfe der Beschreibung eines Ausführungsbeispiels
mit Bezug auf die Figuren noch weiter verständlich.
-
Die 1 zeigt eine Architektur
einer Maschine mit vier Modulen
-
Die 2 stellt bestimmte Details
der vorerwähnten
Einrichtung dar, welche in einem Modul angeordnet ist, das als ein
lokales betrachtet wird.
-
Die 3 zeigt bestimmte Details
der vorerwähnten
Einrichtung, welche in einem Modul angeordnet ist, das als ein entferntes
betrachtet wird.
-
Die 4 bis 6 stellen weitere Details der Einrichtung
zur Anwendung der Erfindung dar.
-
Die 7 stellt einen Funktionsablauf
der Einrichtung mit den Details aus 6 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 Einrichtung 6 zur Verbindung
mit 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 Einrichtung 26 zur
Verbindung mit 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 Einrichtung 46 zur
Verbindung mit 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 Einrichtung 66 zur Verbindung
mit 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 Einrichtung zur Verbindung 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 besitzt
jeweils einen eigenen internen oder externen Pufferspeicher 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 Einrichtung zur Verbindung 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 Speicherorts angeben. In dem Modul 20 ist
es die Einrichtung zur Verbindung 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 SM 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.
-
Es
ist bekannt, 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 Einrichtung zur Verbindung 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 Einrichtung zur Verbindung 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 Einrichtung zur Verbindung 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 Einrichtung
zur Verbindung 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 Einrichtungen zur Verbindung 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 Einrichtung zur Verbindung 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 AG 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 Präsenz-
und Zustandsbits aufweist. Jedem vom Modul 10 entfernten
Modul 20, 40, 60, in welchem sich der
durch die Felder A5 und A6 gekennzeichnete Block befindet, ist ein
Präsenzbit
zur Identifikation zugeordnet, welches das Vorhandensein einer Aufteilung
dieses Blocks auf das entfernte Modul 20, 40, 60 angibt.
Das Zustandsbit zeigt an oder die Zustandsbits zeigen an, wenn der
Block von einem entfernten Modul verändert worden ist. Zu einem
bestimmten Zeitpunkt hält
ein einzelnes Modul die modifizierie 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 Präsenzbit,
das die Aufteilung dieses Blocks auf ein entferntes Modul anzeigt,
das ist das Bit, welches dem Modul zugeordnet ist, das die aktuellste Version
enthält.
Die Kopie des Blocks im Modul 10 ist nicht mehr aktuell,
und die Kopien des Blocks in den anderen Modulen sind ungültig. Wenn
der Statuscode keine Modifikation angibt, bedeutet das, dass das
Modul 10 eine aktuelle Kopie des Blocks aufweist, und dass
alle die Module, bei denen das Präsenzbit erhöht ist, eine aktuelle Kopie
des Blocks halten, aufgeteilt auf das Modul 10. Wenn kein
Präsenzbit
das Vorhandensein einer Aufteilung auf ein entferntes Modul anzeigt,
ist die Kopie des aktuellsten Blocks die des Blocks, der sich im
Modul 10 befindet. Die korrespondierende Zeile der Tabelle
8 ist in der Tat verfügbar,
um Bezug auf einen anderen Block zu nehmen, falls notwendig. 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 Einrichtung zur Verbindung 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, bestimmt die Einrichtung zur Verbindung 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 Einrichtung zur Verbindung 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 Einrichtung zur Verbindung 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 Einrichtung zur Verbindung 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 Einrichtung zur Verbindung 6 dann ein Signal
LM eines lokalen Misserfolges erzeugt.
-
Die
Erzeugung der Signale LH undLM 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 Datenaustausch erforderlich macht, denn das Modul 10 hält eine
aktuelle Kopie des Blocks, dann erzeugt die Einrichtung zur Verbindung 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 Einrichtung zur Verbindung 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
Einrichtung zur Verbindung 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 Einrichtung
zur Verbindung 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 Einrichtung zur Verbindung 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 Einrichtung zur Verbindung 6, wenn
es erforderlich wird, einen Datenaustausch mit dem entfernten Modul 20 aufzunehmen.
Für das
Signal S1 ist ein Datenaustausch notwendig, um in den Statuscode
S2 des Moduls 20, in welchem sich der Block befindet, einzuschreiben,
dass der Block verändert
worden ist, und um in den Statuscode S3 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 Einrichtung
zur Verbindung 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 Einrichtung
zur Verbindung 6 sagt mit ihrem Statuscode S3 aus, dass
der Block verändert worden
ist. Für
die Anforderung Q2 zum Einschreiben in den zum Modul 10 entfernten
Speicher, ist kein Datenaustausch notwendig, und die Einrichtung
zu Verbindung 6 erzeugt ein Signal RH eines entfernten Erfolgs.
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 Einrichtung zur Verbindung 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 Einrichtung zur
Verbindung 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. 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 Einrichtung
zur Verbindung 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. Es ist dann notwendig, den in der Tabelle 9 bezeichneten
Block durch den bearbeiteten Block auszutauschen. Die Einrichtung zur
Verbindung 6 erzeugt dann ein Signal RM. Die Einrichtung
zur Verbindung 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 Einrichtung zur Verbindung 6 informiert auch die Einrichtung
zur Verbindung 26, 46 oder 66 des Moduls
der Platzierung beziehungsweise Residenz, dass sie den Block nicht
mehr bezeichnet, sodass die Einrichtung zur Verbindung 26, 46 oder 66 das
Präsenzbit
erniedrigt, korrespondierend zum Modul 10 in der Zeile
der Tabelle 28, 48 oder 68, wo der Block bezeichnet war. Die Einrichtung
zur Verbindung 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 Indizierung der 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 Einrichtung zur Verbindung 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 Einrichtung zur Verbindung 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 Einrichtung zur Verbindung 26 eine Kopie
des Blocks an die Einrichtung zur Verbindung 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 Einrichtung
zur Verbindung 26 eine Leseanforderung an eines der Module 40, 60,
welches die aktuelle Version des Blocks besitzt. Die Einrichtung
zur Verbindung 46, 66, welche die aktuelle Kopie
besitzt, sendet die Kopie des Blocks an die Einrichtung zur Verbindung 6 des
Moduls 10 und an die Einrichtung zur Verbindung 26 des
Moduls 20. Die Einrichtung zur Verbindung 26 aktualisiert
ihren lokalen Speicher 25' und
ihren Statuscode S2 auf den aufgeteilten Status. Die Einrichtung
zur Verbindung 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 Einrichtung zur Verbindung 6 eine Bestätigung an
die Einrichtung zur Verbindung 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 Einrichtung zur Verbindung 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 Einrichtung zur Verbindung 26 in Leseanforderung
an die der Module 10, 40, 60, welche
die aktuelle Version des Blocks enthalten. Diejenige Einrichtung
zur Verbindung 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 Einrichtung zur Verbindung 26 des
Moduls 20, um seinen lokalen Speicher 25' zu aktualisieren.
Das Signal SS wird an die eine oder die Einrichtungen) zur Verbindung 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 Einrichtung zur Verbindung 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 Einrichtung
zur Verbindung 26 den Inhalt des bearbeiteten Blocks an die Einrichtung
zur Verbindung 6, welche den Block in ihre Tabelle 9 mit
einem Statuscode aufnimmt, 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 aufgenommenen Blocks
nicht anzeigt, dass dieser verändert
worden ist, wird das Signal SS an die eine oder die Einrichtungen)
zur Verbindung 6, 46, 66 gesandt, welche
einen Verweis auf den Block in einer Zeile ihre Tabelle 9, 49, 69
haben, damit jede ihren Statuscode S3 auf den Status ungültig aktualisiert.
Dann nimmt die Einrichtung zur Verbindung 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 Einrichtung
zur Verbindung 26 den Inhalt des bearbeiteten Blocks an
die Einrichtung zur Verbindung 6, welche den Block in ihre
Tabelle 9 mit einem Statuscode aufnimmt, 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.
-
Insbesonders
ist es interessant, in den Tabellen 8, 28, 48, 68 eine
assoziative Übereinstimmung durch
Blockeinheiten zu verwenden. Für
eine gleiche Zahl m von Bits, die das Feld A5 ausmachen, erfordert
eine assoziative Übereinstimmung
durch Einheiten, beispielsweise von vier Blöcken, viermal so viel Speicher
für die
Tabelle 8 als bei einer direkten Übereinstimmung, denn jede Zeile
kann dann vier Blöcke mit
jedem dazugehörigen
Statuscode 2 bezeichnen. Indessen gibt es bei der direkten Übereinstimmung, wenn
ein Block eine Bezeichnung in einer durch sein Feld A5 indizierten
Zeile benötigt,
kein Problem, wenn die Zeile verfügbar ist, aber es ist notwendig, einen
Ersatz durchzuführen,
wenn die Zeile schon einen anderen Block bezeichnet, dessen Feld
A6' sich vom Feld
A6 des zu bezeichnenden Blocks unterscheidet. Eine Zeile ist verfügbar, wenn
dort kein Block bezeichnet ist, oder wenn der Statuscode S2 des
schon bezeichneten Blocks kein Vorhandensein einer Aufteilung auf
ein entferntes Modul anzeigt, wobei dann die Bezeichnung eines solchen
Blocks als ungültig
erklärt
wird. Vorteilhafterweise ist bei assoziativer Übereinstimmung durch Einheiten,
beispielsweise von vier Blöcken,
eine Zeile verfügbar,
wenn weniger als vier von den Blöcken
bezeichnet sind, oder wenn die Bezeichnung mindestens eines schon bezeichneten
Blocks ungültig
ist. Die Aussichten, dass die Bezeichnung eines schon bezeichneten Blocks
ungültig
ist, bevor ein neuer Block bezeichnet wird, sind somit größer im Vergleich
zu einem Vorgang mit direkter Übereinstimmung.
Wenn ein Ersatz notwendig ist, weil eine Zeile nicht verfügbar ist,
kann dieses bei dem ältesten
Block oder bei dem Block mit der kleinsten Anzahl von Präsenzbits,
die in seinem Statuscode S2 erhöht
sind, durchgeführt
werden. Man verringert so die Möglichkeit,
dass ein weiteres Modul sofort wieder verlangt, dass ein Block bezeichnet
wird, der gerade ersetzt worden ist.
-
Die 4 zeigt zusätzliche
Details der Einrichtung zur Verbindung 6. Ein Register 81 ist
vorgesehen zur Aufnahme einer ersten logischen Adresse im Inneren
des Speicherraums der Maschine. Ein Register 82 ist vorgesehen,
eine zweite logische Adresse im Inneren des Speicherraums der Maschine
aufzunehmen. Die erste logische Adresse, die sogenannte Startadresse,
ist kleiner als die zweite logische Adresse, die sogenannte Endadresse.
Wenn die Einrichtung zur Verbindung 6 einen Datenaustausch
relativ zu einer Blockadresse erzeugt, welche zuvor vom Bus 7 oder
der Verbindung 17 in Bearbeitung genommen wurde, wird diese
Adresse mit dem Inhalt des Registers 81 mittels eines Komparators 84 und
mit dem Inhalt des Registers 82 mittels eines Komparators 85 verglichen.
Wenn die Blockadresse größer als
der Inhalt des Registers 81 und kleiner als der Inhalt
des Registers 82 ist, signalisiert ein logischer Schaltkreis 87 eine
Zugehörigkeit
des Blocks zu einem Fenster des Speichers der Maschine, welches
durch die obige Start- und Endadresse bestimmt ist.
-
Mit
Bezug auf die 2 und 3 wurde ersichtlich, dass
im Anschluss an eine Bearbeitung einer Blockadresse verschiedene
logische Elemente der Einrichtung zur Verbindung 6 einen
oder mehrere Datenaustausche in Funktion des Inhalts der Tabellen
8 und 9 erzeugen. Diese unterschiedlichen logischen Elemente sind
symbolisch in einem logischen Schaltkreis 80 zusammengefasst,
damit die Figur nicht unnötigerweise überladen
wird. Jedes Mal, wenn die Einrichtung zur Verbindung 6 einen
Datenaustausch über
die Verbindung 17 aussendet oder empfängt, inkrementiert ein logischer
Schaltkreis einen Zähler 90, wenn
der logische Schaltkreis 87 eine Zugehörigkeit des Blocks zu dem Fenster
des Speichers der Maschine signalisiert, welches durch die obige
Start- und Endadresse bestimmt ist.
-
Der
Inhalt des Zählers 90 repräsentiert
dann eine Anzahl von Aktivitäten,
welche die adressierten Daten in dem durch die Startadresse und
Endadresse festgelegten Fenster betrifft, in der Gestalt der Anzahl
von Datenaustauschen des lokalen Moduls 10 mit den entfernten
Modulen 20, 40, 60. Man definiert in
diesem Fall eine Wärme
dieses Fensters als eine proportionale Größe zu dieser Anzahl von Aktivitäten.
-
Ein
Register 83 ist zur Aufnahme eines Schwellwerts in der
Gestalt der Anzahl von Datenaustauschen des lokalen Moduls 10 mit
den entfernten Modulen 20, 40, 60 vorgesehen.
Ein Komparator 91 sendet ein Interrupt-Signal auf den Bus 7,
wenn der Inhalt des Registers 83 kleiner ist als der Inhalt des
Zählers 90.
-
Die 5 zeigt weitere Details
der Einrichtung zur Verbindung 6. Ein Register 81 ist
zur Aufnahme einer ersten logischen Adresse im Innenraum des Speicherbereichs
der Maschine vorgesehen. Ein Register 82 ist vorgesehen,
eine zweite logische Adresse im Innenraum des Speicherbereichs der Maschine
aufzunehmen. Die erste logische Adresse wird als Startadresse benannt
und ist kleiner als die zweite logische Adresse, die als Endadresse
benannt wird. Wenn die Einrichtung zur Verbindung 6 einen
Datenaustausch relativ zu einer Blockadresse erzeugt, die sie vorher
zur Bearbeitung vom Bus 7 oder von der Verbindung 17 erhalten
hat, wird diese Adresse mittels eines Komparators 84 mit
dem Inhalt des Registers 81 und mittels eines Komparators 85 mit
dem Inhalt des Registers 82 verglichen. Wenn die Blockadresse
größer als
der Inhalt des Registers 81 und kleiner als der Inhalt
des Registers 82 ist, signalisiert ein logischer Schaltkreis 87 ein
Vorhandensein des Blocks in einem Fenster des Speichers der Maschine,
welches durch die Startadresse und die Endadresse festgelegt ist.
-
Mit
Bezug auf die 2 und 3 wurde ersichtlich, dass
im Anschluss an eine Bearbeitung einer Blockadresse verschiedene
logische Elemente der Einrichtung zur Verbindung 6 einen
oder mehrere Datenaustausche in Funktion des Inhalts der Tabellen 8 und 9 erzeugen.
Diese unterschiedlichen logischen Elemente sind symbolisch in einem
logischen Schaltkreis 80 zusammengefasst, damit die Figur
nicht unnötigerweise überladen
wird. Wenn die Einrichtung zur Verbindung 6 zu einem Zeitpunkt
n einen letzten Datenaustausch Tn über die Verbindung 17 erhält, der
aus der Bearbeitung der Blockadresse zu einem Zeitpunkt 0 erfolgt,
subtrahiert eine Arithmetikeinheit 92 den Zeitpunkt 0 von
dem Zeitpunkt n, wenn der logische Schaltkreis 87 ein Vorhandensein
des Blocks in einem Fenster des Speichers der Maschine signalisiert,
welches durch die Startadresse und die Endadresse festgelegt ist.
Die Arithmetikeinheit 92 fügt dann das so erhaltene Ergebnis
dem Inhalt des Zählers 95 hinzu.
-
Der
Inhalt des Zählers 95 repräsentiert
dann eine Anzahl von Aktivitäten,
welche die adressierten Daten in dem durch die Startadresse und
Endadresse festgelegten Fenster betrifft, in der Gestalt der Anzahl
der kumulierten Latenzzeiten von Datenaustauschen des lokalen Moduls 10 mit
den entfernten Modulen 20, 40, 60. Man
definiert in diesem Fall eine Wärme
dieses Fensters als eine proportionale Größe zu dieser Anzahl von Aktivitäten.
-
Ein
Register 93 ist zur Aufnahme eines Schwellwerts in der
Gestalt der Anzahl von kumulierten Latenzzeiten von Datenaustauschen
des lokalen Moduls 10 mit den entfernten Modulen 20, 40, 60 vorgesehen.
Ein Komparator 94 sendet ein Interrupt-Signal auf den Bus 7,
wenn der Inhalt des Registers 93 kleiner ist als der Inhalt
des Zählers 95.
-
Die
Register 81, 82, 93 und 93 sind über den Bus 7 zum
Lesen und Schreiben zugreifbar. Die Zähler 90, 95 sind über den
Bus 7 nur auslesbar. Zu einem Kontrollregister 86 besteht
ein Schreib-/Lesezugriff, um einem auf dem Modul 10 durchgeführten Prozess
das Lesen der Zähler 90, 95 als
Funktion eines erniedrigten und erhöhten beziehungsweise nicht
gesetzten und gesetzten Zustands von zum Beispiel fünf Bits
zu ermöglichen,
die von Null bis Vier nummeriert sind. Der erniedrigte beziehungsweise nicht
gesetzte Zustand des Bits Null verhindert jegliche Inkrementierung
des Zählers 90 durch
den logischen Schaltkreis 88 oder des Zählers 95 durch die Arithmetikeinheit 92.
Der erhöhte
beziehungsweise gesetzte Zustand des Bits Null verhindert keine
Inkrementierung des Zählers 90 durch
den logischen Schaltkreis 88 oder des Zählers 95 durch die
Arithmetikeinheit 92. Der erniedrigte beziehungsweise nicht
gesetzte Zustand des Bits Eins verhindert jeglichen von den Komparatoren 91, 94 erzeugten
Interrupt des Eingreifens auf das Inkrementieren des Zählers 90 durch
den logischen Schaltkreis 88 oder des Zählers 95 durch die
Arithmetikeinheit 92. Der erhöhte beziehungsweise gesetzte
Zustand des Bits Eins verhindert jegliche Inkrementierung des Zählers 90 durch
den logischen Schaltkreis 88 oder des Zählers 95 durch die
Arithmetikeinheit 92 im Anschluss an einen durch den Komparator 91, 94 erzeugten
Interrupt. Der erniedrigte beziehungsweise nicht gesetzte Zustand
des Bits Zwei deaktiviert jegliche Erzeugung von Interrupts durch
die Komparatoren 91 und 94. Der erhöhte beziehungsweise
gesetzte Zustand des Bits Zwei aktiviert die Erzeugung von Interrupts
durch die Komparatoren 91 und 94, wenn der Inhalt
des Zählers 90 den
Inhalt des Registers 83 oder der Inhalt des Zählers 95 den
Inhalt des Registers 93 überschreitet. Der erniedrigte
beziehungsweise nicht gesetzte Zustand des Bits Drei greift nicht
in die Funktion des Zählers 90 ein.
Der erhöhte
beziehungsweise gesetzte Zustand des Bits Drei setzt den Inhalt
des Zählers 90 auf
einen Null-Wert. Der erniedrigte beziehungsweise nicht gesetzte
Zustand des Bits Vier greift nicht in die Funktion des Zählers 95 ein.
Der erhöhte
beziehungsweise gesetzte Zustand des Bits Vier setzt den Inhalt
des Zählers 95 auf
einen Null-Wert.
-
Wenn
die Einrichtung zur Verbindung 6 eine auf dem Bus 7 umlaufende
Blockadresse bearbeitet, unterscheidet man im Wesentlichen drei
verschiedene Klassen von Speicherbereichen der Maschine, einen Bereich
für einen
nicht aufgeteilten Zugriff, einen Bereich für einen aufgeteilten Lesezugriff
und einen aufgeteilten Bereich zum Schreiben oder Lesen.
-
Für einen
Block, der im nicht aufgeteilten Zugriffsbereich vorhanden ist,
ist kein Datenaustausch des lokalen Moduls 10 mit einem
entfernten Modul 20, 40, 60 notwendig,
denn das Modul 10 ist dann das einzige, welches eine gültige Kopie
des Blocks besitzt. Ein Fenster des Speichers der Maschine, welches
durch die Startadresse und Endadresse festgelegt ist, ist in diesem
Bereich vollständig
enthalten und wird als kalt benannt, denn sein Wärmewert, der mit Bezug auf
die 4 oder mit Bezug
auf die 5 definiert
worden ist, beträgt
Null.
-
Für einen
Block, der im aufgeteilten Zugriffsbereich zum Lesen oder Schreiben
vorhanden ist, sind ein oder mehrere Datenaustausche des lokalen Moduls 10 mit
einem entfernten Modul 20, 40, 60 notwendig,
insbesondere wenn das Modul 10 keine aktuelle Kopie des
Blocks besitzt. Ein Fenster des Speichers der Maschine, welches
durch die Startadresse und Endadresse festgelegt ist, dessen Überschneidung
mit diesem Bereich nicht Null beträgt, wird heiß benannt,
denn sein mit Bezug auf die 4 oder
mit Bezug auf die 5 definierter
Wärmewert
ist positiv.
-
Der
materielle Aufbau der Einrichtung zur Verbindung 6, der
vorstehend beschrieben ist, ermöglicht
es, verschiedene Softwareprozesse zur Messung der Wärme eines
Fensters des Speichers einer Maschine auszuführen.
-
Es
wird als Beispiel ein Prozess zur Messung der Wärme proportional zu einer Anzahl
von Aktivitäten
in Gestalt einer Anzahl von Datenaustauschen aufgezeigt. Die Bits
Null bis Vier des Registers 86 sind anfänglich in einem erhöhten beziehungsweise gesetzten
Zustand, um den Inhalt des Zählers 90 auf einen
Nullwert zu setzen. In das Register 81 wird eine Startadresse
und in das Register 82 eine Endadresse eingeschrieben,
um ein Fenster festzulegen, für
welches die Datenaustausche gezählt
werden sollen, die die adressierten Datenblöcke in diesem Fenster betreffen.
Ein Schwellenwert wird in das Register 83 zur Bestimmung
einer betroffenen maximalen Aktivität durch den Zähler 90 geschrieben.
Das Bit Null des Registers 86 wird in einen erniedrigten
beziehungsweise nicht gesetzten Zustand gebracht, um das Zählen der
das festgelegte Fenster betreffenden Datenaustausche zu aktivieren;
gleichzeitig wird ein Zeitpunkt ddc gespeichert, bei welchem das
Bit Null des Registers 86 erniedrigt wurde. Bei Erhalt
des durch den Komparator 91 erzeugten Interrupts wird eine
Zähldauer
in Zyklen des Maschinentakts errechnet, die die Differenz zwischen
dem Zeitpunkt ddc und einem Zeitpunkt dfc der Interrupterzeugung
darstellt. Die Wärme
des Fensters wird dadurch berechnet, dass der Inhalt des Zählers 90 durch
die Zähldauer
geteilt wird. Bei Fehlen des Erhalts eines durch den Komparator 91 erzeugten
Interrupts zu einem maximalen Zeitpunkt dmc des Zählens wird
eine Zähldauer
in Zyklen des Maschinentakts errechnet, die die Differenz zwischen
dem Zeitpunkt ddc und dem Zeitpunkt dmc darstellt. Die Wärme des
Fensters wird dadurch berechnet, dass der Inhalt des Zählers 90 durch
die Zähldauer
geteilt wird. Die auf diese Art und Weise berechnete Wärme entspricht
einheitlich einer Anzahl von Datenaustauschen pro Zeiteinheit.
-
Es
wird als Beispiel ein Prozess zur Messung der Wärme proportional zu einer Anzahl
von Aktivitäten
in Gestalt von kumulierten Latenzzeiten von Datenaustauschen aufgezeigt.
Die Bits Null bis Drei und Fünf
des Registers 86 sind anfänglich in einem erhöhten beziehungsweise
gesetzten Zustand, um den Inhalt des Zählers 95 auf einen
Nullwert zu setzen. In das Register 81 wird eine Startadresse
und in das Register 82 eine Endadresse eingeschrieben,
um ein Fenster festzulegen, für
welches die Datenaustausche gezählt
werden sollen, die die adressierten Datenblöcke in diesem Fenster betreffen.
Ein Schwellenwert wird in das Register 93 zur Bestimmung
einer betroffenen maximalen Aktivität durch den Zähler 95 geschrieben.
Das Bit Null des Registers 86 wird in einen erniedrigten
beziehungsweise nicht gesetzten Zustand gebracht, um das Kumulieren
der Latenzzeiten zu aktivieren, welches das festgelegte Fenster betrifft;
gleichzeitig wird ein Zeitpunkt ddc gespeichert, bei welchem das
Bit Null des Registers 86 erniedrigt wurde. Bei Erhalt
des durch den Komparator 94 erzeugten Interrupts wird eine
Zähldauer
in Zyklen des Maschinentakts errechnet, die die Differenz zwischen
dem Zeitpunkt ddc und einem Zeitpunkt dfc der Interrupterzeugung
darstellt. Die Wärme
des Fensters wird dadurch berechnet, dass der Inhalt des Zählers 95 durch
die Zähldauer
geteilt wird. Bei Fehlen des Erhalts eines durch den Komparator 94 erzeugten
Interrupts zu einem maximalen Zeitpunkt dmc des Zählens wird
eine Zähldauer
in Zyklen des Maschinentakts errechnet, die die Differenz zwischen dem
Zeitpunkt ddc und dem Zeitpunkt dmc darstellt. Die Wärme des
Fensters wird dadurch berechnet, dass der Inhalt des Zählers 95 durch
die Zähldauer geteilt
wird. Die auf diese Art und Weise berechnete Wärme ist eine dimensionslose
Zahl.
-
Wenn
die Einrichtung zur Verbindung 6 den Zähler 90 und den Zähler 95 aufweist,
wird als Beispiel ein Prozess zur Messung der Wärme proportional zu einer Anzahl
von Aktivitäten
in Gestalt von mittlerer Zeitdauer eines Datenaustausches aufgezeigt.
Die Bits Null bis Fünf
des Registers 86 sind anfänglich in einem erhöhten beziehungsweise
gesetzten Zustand, um die Inhalte der Zähler 90 und 95 auf einen
Nullwert zu setzen. In das Register 81 wird eine Startadresse
und in das Register 82 eine Endadresse eingeschrieben,
um ein Fenster festzulegen, für
welches die Datenaustausche gezählt
werden sollen, die die adressierten Datenblöcke in diesem Fenster betreffen.
Ein Schwellenwert wird in das Register 83 und ein Schwellenwert
wird in das Register 93 zur Bestimmung einer betroffenen
maximalen Aktivität durch
den Zähler 90 oder
Zähler 95 geschrieben.
Das Bit Null des Registers 86 wird in einen erniedrigten beziehungsweise
nicht gesetzten Zustand gebracht, um das Zählen von Datenaustauschen zu
aktivieren, welche das festgelegte Fenster betreffen; gleichzeitig wird
ein Zeitpunkt ddc gespeichert, bei welchem das Bit Null des Registers 86 erniedrigt
wurde. Bei Erhalt des durch den Komparator 91 oder durch
den Komparator 94 erzeugten Interrupts wird die Wärme des Fensters
wird dadurch berechnet, dass der Inhalt des Zählers 95 durch den
Inhalt des Zählers 90 geteilt wird.
Bei Fehlen des Erhalts eines durch den Komparator 91 oder
Komparator 94 erzeugten Interrupts zu einem maximalen Zeitpunkt
dmc des Zählens,
wenn der Inhalt des Zählers 90 Null
beträgt,
wird die Wärme
des Fensters zu Null berechnet. Wenn der Inhalt des Zählers 90 ungleich
Null ist, wird die Wärme
des Fensters dadurch berechnet, dass der Inhalt des Zählers 95 durch
den Inhalt des Zählers 90 geteilt wird.
Die auf diese Art und Weise berechnete Wärme entspricht einheitlich
einer Zeit.
-
Die
Einheit der Bewertung der Wärme
bedeutet in der Messung wenig, in welcher nicht eine absolute Wärme des
Fensters bestimmt werden soll, sondern die Wärmewerte von verschiedenen
Fenstern in einer selben Einheit verglichen werden sollen, um das
heißeste
oder die heißesten
Fenster zu bestimmen. Man betrachtet im Allgemeinen die Wärme eines
Fensters wie eine Größe, die
in der Zeit relativ stabil bleibt. Gemäß einem der vorherstehenden
Beispiele ist es ausreichend, den Prozess für verschiedene Fenster zu wiederholen,
die jedes durch besondere geordnete Werte in den Registern 81 und 82 festgelegt
sind.
-
Die 6 stellt Details der Einrichtung
zur Verbindung 6 dar, um ein Fenster ohne einen außerhalb
der Einrichtung zur Verbindung 6 ausgeführten Prozess zu erhalten,
welches das heißeste
unter mehreren ist. Ein Register 101 ist zur Aufnahme einer ersten
logischen Adresse im Inneren des Speicherbereichs der Maschine vorgesehen.
Ein Register 102 ist zur Aufnahme einer zweiten logischen
Adresse im Inneren des Speicherbereichs der Maschine vorgesehen.
Die erste logische Adresse, die sogenannte Startadresse, ist kleiner
als die zweite logische Adresse, die sogenannte Endadresse. Wenn
die Einrichtung zur Verbindung 6 einen Datenaustausch relativ
zu einer Blockadresse erzeugt, welche zuvor vom Bus 7 oder
der Verbindung 17 in Bearbeitung genommen wurde, wird diese
Adresse mit dem Inhalt des Registers 101 mittels eines
Komparators 104 und mit dem Inhalt des Registers 102 mittels
eines Komparators 105 verglichen. Wenn die Blockadresse größer als
der Inhalt des Registers 101 und kleiner als der Inhalt
des Registers 102 ist, signalisiert ein logischer Schaltkreis 107 eine
Zugehörigkeit
des Blocks zu einem Fenster des Speichers der Maschine, dem sogenannten
Autofokus-Fenster, welches durch die obige Start- und Endadresse
bestimmt ist. Der logische Schaltkreis 107 erklärt einen
logischen Schaltkreis 108 für gültig, welcher identisch mit
dem logischen Schaltkreis 88 ist, um ein Signal bei jedem Datenaustausch
zu versenden, welcher einen in dem Autofokus-Fenster vorhandenen
Block betrifft, oder identisch mit dem logischen Schaltkreis 92 ist,
um einen Wert von Latenzzeit zu senden, welcher einen vorhandenen
Block in dem Autofokus-Fenster betrifft. Ein Register 103 ist
vorgesehen, eine dritte logische Adresse aufzunehmen, welche zwischen
diesen im Register 101 enthaltenen und diesen im Register 102 enthaltenen
einbegriffen ist. Die Adresse des durch die Einrichtung zur Verbindung 6 bearbeiteten
Blocks wird mit dem Register 103 mittels eines Komparators 106 verglichen.
-
Das
Register 103 bestimmt zwei Unter-Fenster des Autofokus-Fensters.
Ein logischer Schaltkreis 110 erklärt die von dem logischen Schaltkreis 108 erzeugten
Signale für
gültig,
welche Adressen eines ersten Unter-Fensters von Adressen betreffen,
die größer als
der Inhalt des Registers 101 und kleiner als der Inhalt
des Registers 103 sind. Ein logischer Schaltkreis 120 erklärt die von
dem logischen Schaltkreis 108 erzeugten Signale für gültig, welche
Adressen eines zweiten Unter-Fensters von Adressen betreffen, die
größer als
der Inhalt des Registers 103 und kleiner als der Inhalt
des Registers 102 sind.
-
Ein
Zähler 111 ist
vorgesehen, um die vom logischen Schaltkreis 108 erzeugten
und vom logischen Schaltkreis 110 für gültig erklärten Signale zu kumulieren.
Der Inhalt des Zählers 111 repräsentiert dann
eine Anzahl von Aktivitäten,
die die adressierten Daten in dem ersten Unter-Fenster betreffen.
-
Ein
Zähler 121 ist
vorgesehen, um die vom logischen Schaltkreis 108 erzeugten
und vom logischen Schaltkreis 120 für gültig erklärten Signale zu kumulieren.
Der Inhalt des Zählers 121 repräsentiert dann
eine Anzahl von Aktivitäten,
die die adressierten Daten in dem zweiten Unter-Fenster betreffen.
-
Ein
Register 109 ist zur Aufnahme eines Schwellwertes in Gestalt
einer zuvor festgelegten Anzahl von Aktivitäten vorgesehen. Ein Komparator 112 sendet
ein Signal I1 an einen Folgeschalter 114, wenn der Inhalt
des Registers 109 kleiner als der Inhalt des Zählers 111 ist.
Ein Komparator 122 sendet ein Signal I2 an den Folgeschalter 114,
wenn der Inhalt des Registers 109 kleiner als der Inhalt
des Zählers 121 ist.
Die Funktion des Folgeschalters 114 wird mit Bezug auf 7 erläutert.
-
Ein
Register 115 ist zur Aufnahme eines Wertes einer Minimalgröße für das Autofokus-Fenster vorgesehen,
ein berechneter Wert, der die Differenz zwischen den Inhalten der
Register 101 und 102 ist.
-
Die
Register 101, 102, 109 und 115 sind über den
Bus 7 und den Folgeschalter 114 zum Lesen und Schreiben
zugreifbar. Die Zähler 111, 121 sind
durch den Folgeschalter 114 zum Lesen und schreiben zugreifbar.
Ein Kontrollregister 113 ist zum Lesen und Schreiben zugreifbar,
um durch den Folgeschalter 114 ausgeführte Programme zu ermöglichen,
in Funktion von erniedrigten und erhöhten beziehungsweise nicht
gesetzten und gesetzten beispielsweise sieben Bits, nummeriert von
Null bis Sechs. Der erhöhte
beziehungsweise gesetzte Zustand des Bits Null verhindert jegliche
Inkrementierung der Zähler 111 und 121 durch
den logischen Schaltkreis 108. Der erniedrigte beziehungsweise
nicht gesetzte Zustand des Bits Null verhindert keine Inkrementierung der
Zähler 111 und 121 durch
den logischen Schaltkreis 108. Der erniedrigte beziehungsweise
nicht gesetzte Zustand des Bits Eins verhindert jeglichen von dem
Folgeschalter 114 erzeugten Interrupt des Eingreifens auf
das Inkrementieren der Zähler 111 und 121 durch
den logischen Schaltkreis 108. Der erhöhte beziehungsweise gesetzte
Zustand des Bits Eins verhindert jegliche Inkrementierung der Zähler 111 und 121 durch
den logischen Schaltkreis 108 im Anschluss an einen durch
den Folgeschalter 114 erzeugten Interrupt. Der erniedrigte
beziehungsweise nicht gesetzte Zustand des Bits Zwei deaktiviert
jegliche Erzeugung von Interrupts durch den Folgeschalter 114.
Der erhöhte
beziehungsweise gesetzte Zustand des Bits Zwei aktiviert die Erzeugung
von Interrupts durch den Folgeschalter 114, wenn der Inhalt des
Registers 115 die Differenz zwischen den Inhalten de Register 102 und 101 überschreitet.
Der erniedrigte beziehungsweise nicht gesetzte Zustand des Bits
Drei greift nicht in die Funktion der Zähler 111 und 121 ein.
Der erhöhte
beziehungsweise gesetzte Zustand des Bits Drei setzt den Inhalt
der Zähler 111 und 121 auf
einen Null-Wert. Der Zustand der Bits Vier und Fünf kodiert einen Divisorwert
gemäß einer
Potenzierung von Zwei mit Exponenten zwischen Null und Drei. Der
erniedrigte beziehungsweise nicht gesetzte Zustand des Bits Sechs
zeigt an, dass die Größe des Autofokus-Fensters
größer ist
als der im Register 115 enthaltene Wert. Der erhöhte beziehungsweise
gesetzte Zustand des Bits Sechs zeigt an, dass die Größe des Autofokus-Fensters kleiner
ist als der im Register 115 enthaltene Wert.
-
Das
Petri-Diagramm der 7 ermöglicht die
Erläuterung
einer Funktion des Folgeschalters 114. Ein im Register 113 enthaltener
Wert, für
welchen die Bits Null bis Drei einen Nullwert in den Zählern 111 und 121 bewirken,
gibt den Durchlauf einer anfänglichen
des Folgeschalters an eine Stufe E1 frei.
-
In
der Stufe E1 wird ein Prozess in dem Modul 10 außerhalb
von der Einrichtung zur Verbindung 6 zur Einschreibmöglichkeit
eines anfänglichen
Zustands des Autofokus-Fensters in die Register 101, 102, 109, 113 und 115 ausgeführt. Ein
Wert des Registers 113 mit einem erniedrigten beziehungsweise nicht
gesetzten Zustand des Bits Sechs, gibt den Durchlauf der Stufe E1
zu einer Stufe E2 frei.
-
In
der Stufe E2 wird die halbe Summe der in den Registern 102 und 102 enthaltenen
Werten in das Register 103 eingeschrieben, dann wird das
Bit Null des Registers 113 in den erniedrigten beziehungsweise
nicht gesetzten Zustand gebracht, um die Zähler 111 und 121 zu
aktivieren. Das Stellen des Bits Null in den erniedrigten beziehungsweise
nicht gesetzten Zustand bewirkt, dass die Einrichtung zur Verbindung 6 in
einen Zustand gebracht wird, der einer Stufe E3 entspricht.
-
In
dem der Stufe E3 entsprechenden Zustand akkumuliert der Zähler 111 beziehungsweise 121 die
Anzahl der Aktivitäten,
hier direkt vergleichbar der Wärme
jeweils des ersten und des zweiten Unter-Fensters des Autofokus-Fensters.
Der Erhalt eines Interrupt-Signals I1 durch den Folgeschalter 114 aktiviert
eine Stufe E4. Der Erhalt eines Interrupt-Signals I2 durch den Folgeschalter 114 aktiviert eine
Stufe E5. Das von dem Komparator 112 erzeugte Interrupt-Signal I1 zeigt an,
dass die Wärme
des ersten Unter-Fensters den im Register 109 enthaltenen
Schwellwert vor der des zweiten Unter-Fensters überschritten hat. Das von dem
Komparator 122 erzeugte Signal I2 zeigt an, dass die Wärme des
zweiten Unter-Fensters den im Register 109 enthaltenen Schwellwert
vor der des ersten Unter-Fensters überschritten hat. Ein horizontaler
Doppelstrich im Petri-Diagramm der 7 symbolisiert
eine oder logische Aktivierung der Stufen E4 oder E5.
-
In
der Stufe E4 wird das erste Unter-Fenster als wärmer erkannt als das zweite
Unter-Fenster. Der Wert des Registers 103 wird vom Folgeschalter 114 in
das Register 102 geschrieben, um das Autofokus-Fenster
erneut zu bestimmen als wenn es dem ersten Unter-Fenster entspricht.
Das Bit Null des Registers 113 wird durch den Folgeschalter 114 erhöht beziehungsweise
gesetzt, um die Zähler 111 und 121 zu
deaktivieren.
-
In
der Stufe E5 wird das zweite Unter-Fenster als wärmer erkannt als das erste
Unter-Fenster. Der Wert des Registers 103 wird vom Folgeschalter 114 in
das Register 101 geschrieben, um das Autofokus-Fenster
erneut zu bestimmen als wenn es dem zweiten Unter-Fenster entspricht.
Das Bit Null des Registers 113 wird durch den Folgeschalter 114 erhöht beziehungsweise
gesetzt, um die Zähler 111 und 121 zu
deaktivieren.
-
Der
erhöhte
beziehungsweise gesetzte Zustand des Bits Null des Registers 113 aktiviert
dann eine Stufe E6, in welcher die Größe des Autofokus-Fensters errechnet
wird, indem der Inhalt des Registers 101 vom Inhalt des
Registers 102 subtrahiert wird. Die so erhaltene Größe wird
mit dem im Register 115 enthaltenen Wert verglichen. Eine
Größe, die
kleiner als der oder gleich dem Wert des Registers 115 ist,
aktiviert eine Stufe E7. Eine Größe, die
größer ist
als der Wert des Registers 115, aktiviert eine Stufe E8.
-
In
der Stufe E7 wird das Autofokus-Fenster auf ein Fenster mit Minimalgröße konvergiert,
so wie mindestens ein Fenster von identischer Größe, sei es weniger warin als
dieses Fenster. Ein Interrupt I3 wird auf dem Bus 7 erzeugt,
und das Bit Sechs des Registers 113 wird erhöht beziehungsweise
gesetzt, um die erreichte Konvergenz zur Ermöglichung eines außerhalb
der Einrichtung zur Verbindung 6 liegenden Prozesses des
Lesens des Inhalts des Register 101 und 102 zu
signalisieren. Der erhöhte
beziehungsweise gesetzte Zustand des Bits Sechs ersetzt dann den
Folgeschalter in seiner anfänglichen
Stufe.
-
In
der Stufe E8 ist das Autofokus-Fenster nicht auf ein Fenster mit
Minimalgröße konvergiert und
das Bit Sechs des Registers 113 ist nicht verändert. Der
in dem Register 109 enthaltene Wert wird durch Zwei mit
dem Exponenten dividiert, der von den Bits Vier und Fünf des Registers 113 kodiert
ist. Die Tatsache, dass der Schwellenwert reduziert werden kann,
ermöglicht
die Beschleunigung des Erreichens der Schwelle durch einen der Zähler 111 oder 121 auf
die neuen in der Folge festgelegten Unter-Fenster. Da die Größe des Autofokus-Fensters sich nach
jedem Durchlauf durch die Stufe E6 reduziert, ist es tatsächlich möglich, dass
die Anzahl der mit diesem Fenster verbundenen Aktivitäten eine
längere
Zeit erfordert, um mit der des vorherigen Autofokus-Fensters vergleichbar
zu sein. Der erniedrigte beziehungsweise nicht gesetzte Zustand
des Bits Sechs reaktiviert dann die Stufe E2. So wiederholt sich
eine Schleife über
die Stufen E2 bis E6 bis zum Durchlauf in der Stufe E7.
-
Ein
außerhalb
der Einrichtung zur Verbindung 6 liegender Prozess, der
durch den Interrupt I3 aktiviert wurde, kann den Wert des Bits Sechs
des Registers 113 abfragen, ob das Autofokus-Fenster auf ein Fenster
unter den wärmsten
konvergiert. Derselbe Prozess kann den Folgeschalter 114 unterbrechen,
indem er das Bit Null und das Bit Sechs des Registers 113 erhöht beziehungsweise
setzt, und indem er einen Nullwert in das Register 109 einschreibt.
Es kann in der Tat möglich
sein, dass die Wärme
des Autofokus-Fensters zu gering ist, um eine schnelle genügende Konvergenz
zu ermöglichen.
Der Prozess kann dann in ein oder in mehrere Register 101, 102, 109, 113 und 115 weitere
Werte nachtragen, die geeignet sind, eine schnelle Konvergenz zu
sichern.
-
Es
empfiehlt sich zu beachten, dass ein außerhalb der Einrichtung zur
Verbindung 6 ausgeführter
Prozess nur beim Start, Anhalten oder Ende des Ablaufs der von dem
Folgeschalter 114 durchgeführten Programme eingreift.
Dieses verhindert beim außerhalb
der Einrichtung zur Verbindung 6 ausgeführten Prozess die Beeinflussung
der durch die Einrichtung zur Verbindung 6 durchgeführten Messungen.