-
HINTERGRUND DER ERFINDUNG
-
TECHNISCHES GEBIET
-
Die vorliegende Erfindung betrifft allgemein die Datenverarbeitung und insbesondere ein Bedienen von Prozessoroperationen in einem Datenverarbeitungssystem. Noch genauer betrifft die vorliegende Erfindung ein dynamisches Erhöhen der Priorität von speichermodifizierenden Operationen relativ zu Operationen eines Lesetyps in Datenverarbeitungssystemen.
-
STAND DER TECHNIK
-
Ein herkömmliches Computersystem mit symmetrischem Mehrfachprozessor (symmetric multiprocessor (SMP)), wie beispielsweise ein Servercomputersystem, enthält mehrere Verarbeitungseinheiten, die alle mit einer Systemverbindung verbunden sind, die üblicherweise eine oder mehrere Adressen, Daten und einen oder mehrere Steuerbusse aufweist. Mit der Systemverbindung ist ein Systemspeicher verbunden, der die unterste Ebene von einem flüchtigen Speicher im Mehrfachprozessor-Computersystem darstellt und allgemein für den Lese- und Schreibzugriff für alle Verarbeitungseinheiten zugänglich ist. Um die Zugriffslatenzzeiten auf im Systemspeicher befindliche Anweisungen und Daten zu verringern, wird jede Verarbeitungseinheit üblicherweise weiterhin durch eine entsprechenden Cachespeicherhierarchie mit mehreren Ebenen unterstützt, deren unterste Ebene(n) durch einen oder mehrere Prozessorkerne gemeinsam genutzt werden können.
-
Cachespeicher werden üblicherweise verwendet, um Speicherblöcke, auf die durch einen Prozessor zugegriffen werden könnte, vorübergehend zu puffern, um die Verarbeitung durch Verringern der Zugriffslatenzzeiten zu beschleunigen, die dadurch verursacht werden, dass benötigte Daten und Anweisungen aus dem Systemspeicher geladen werden müssen. In manchen Mehrfachprozessor(MP)-Systemen enthält die Cachespeicherhierarchie mindestens zwei Ebenen. Bei dem Cachespeicher der Ebene Eins (level one (L1)) oder oberen Ebene handelt es sich üblicherweise um einen privaten Cachespeicher, der einem bestimmten Prozessorkern zugeordnet ist und für andere Kerne in einem MP-System nicht zugänglich ist. Üblicherweise greift der Prozessorkern als Reaktion auf eine Speicherzugriffsanweisung wie beispielsweise eine Lade- oder Speicheranweisung zuerst auf das Verzeichnis des Cachespeichers der oberen Ebene zu. Wenn der angefragte Speicherblock im Cachespeicher der oberen Ebene nicht gefunden wird, greift der Prozessorkern dann wegen des angefragten Speicherblocks auf Cachespeicher niedrigerer Ebenen (z.B. Cachespeicher der Ebene Zwei (level two (L2)) oder Ebene Drei (level three (L3)) zu. Der Cachespeicher der niedrigsten Ebene (z.B. L3) wird oft von mehreren Prozessorkernen gemeinsam genutzt.
-
Da mehrere Prozessorkerne Schreibzugriff auf eine selbe Cachespeicherzeile von Daten anfordern können und da modifizierte Cachespeicherzeilen nicht sofort mit dem Systemspeicher synchronisiert werden, realisieren die Cachespeicherhierarchien von Mehrfachprozessor-Computersystemen üblicherweise ein
-
Cachespeicher-Kohärenzprotokoll, um zumindest ein Mindestmaß an Kohärenz zwischen den „Ansichten“ der Inhalte des Systemspeichers der verschiedenen Prozessorkerne sicherzustellen. Insbesondere erfordert Cachespeicherkohärenz zum Mindesten, dass nach einem Zugreifen einer Verarbeitungseinheit auf eine Kopie eines Speicherblocks und anschließendem Zugreifen auf eine aktualisierte Kopie des Speicherblocks die Verarbeitungseinheit nicht erneut auf die alte Kopie des Speicherblocks zugreifen darf.
-
Ein Cachespeicher-Kohärenzprotokoll definiert üblicherweise einen Satz von in Zuordnung zu den Cachespeicherzeilen jeder Cachespeicherhierarchie gespeicherten Cachespeicherzuständen sowie einen Satz von Kohärenznachrichten, die verwendet werden, um die Cachespeicher-Zustandsinformationen zwischen Cachespeicherhierarchien auszutauschen. In vielen Fällen sind die Cachespeicherzustände und Zustandsübergänge des Kohärenzprotokolls dafür konzipiert, Speicherzugriffsoperationen des Lesetyps gegenüber Operationen des Speichertyps zu bevorzugen. Die Priorisierung von Operationen des Lesetyps gegenüber Operationen des Speichertyps kann bei Vorhandensein von erheblichen Ladekonflikten für Operationen des Speichertyps zu Problemen beim Weiterleitungsfortschritt führen.
-
Es ist daher ein Bedarf in der Technik vorhanden, das zuvor genannte Problem zu lösen.
-
Die Druckschrift
US 2002 / 0 035 675 A1 betrifft ein Verfahren zur Steuerung von Zugriffen auf gemeinsam genutzte Arbeitsspeicherorte in einem Computersystem. Das Verfahren umfasst: Empfangen einer Anforderung zum Lesen von einem Arbeitsspeicherort; Ermitteln, ob der Arbeitsspeicherort gemeinsam genutzt wird; Ermitteln, wenn der Arbeitsspeicherort gemeinsam genutzt wird, ob es einen Schreibvorgang gibt, der für den Arbeitsspeicherort geplant ist und der sich im Prioritätszustand befindet; und Zurückweisen der Leseanforderung, wenn ein Schreibvorgang für den Arbeitsspeicherort geplant ist und sich der Schreibvorgang im Prioritätszustand befindet.
-
Die Druckschrift
US 2008 / 0 294 409 A1 betrifft ein Verfahren in einem computergestützten Entwurfssystem zum Erzeugen eines funktionalen Entwurfsmodells eines Mechanismus zum Durchführen einer Cacheline-Abfrage in einem Datenverarbeitungssystem mit einer Mehrzahl von Prozessen. Das Verfahren umfasst: Erzeugen einer funktionalen computersimulierten Darstellung eines Mechanismus zum Anfordern einer Aktion durch einen ersten Prozess, die durch einen zweiten Prozess durchgeführt werden soll, und zum Setzen einer Reservierung auf einen Arbeitsspeicherort mittels einer Speicheroperation; Erzeugen einer funktionalen computersimulierten Darstellung eines Mechanismus zum Lesen eines Arbeitsspeicherorts durch den ersten Prozess über eine Auslastung-Operation, um zu ermitteln, ob die angeforderte Aktion durch den zweiten Prozess abgeschlossen wurde oder nicht; Erzeugen einer funktionalen computersimulierten Darstellung eines Mechanismus zum Abwürgen der Operation zur Auslastung, bis die Reservierung auf dem Arbeitsspeicherort verloren ist; und Erzeugen einer funktionalen computersimulierten Darstellung eines Mechanismus zum Zurücksetzen der Reservierung in dem Arbeitsspeicherort durch den zweiten Prozess, nachdem die angeforderte Aktion abgeschlossen wurde.
-
Die Druckschrift
US 5 682 516 A betrifft ein Verfahren zur Datenübertragung in einem Computersystem. Das Verfahren umfasst: Initiieren einer Datenübertragung über einen Bus, wobei die Datenübertragung eine Cache-Zeile spezifiziert; ein adressierter Bus-Agent erfasst die Datenübertragung auf dem Bus und überträgt eine Aufschiebungsanzeige über den Bus, um anzugeben, dass der Abschluss der Kommunikationstransaktion aufgeschoben wird; und ein Snooping-Agent erfasst die Datenübertragung auf dem Bus, setzt die Aufschiebungsanzeige außer Kraft und schließt die Datenübertragung ohne eine aufgeschobene Antworttransaktion ab, wenn der Snooping-Bus-Agent in der Lage ist, die Datenübertragung abzuschließen, wie durch den Snooping-Bus-Agenten, der eine Snoop-Operation durchführt, ermittelt.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Die Erfindung betrifft ein Verfahren, einen Cachespeicher, eine Verarbeitungseinheit, ein Mehrfachprozessor-Datenverarbeitungssystem, ein Computerprogrammprodukt und ein Computerprogramm, deren Merkmale in den entsprechenden unabhängigen Ansprüchen angegeben sind. Ausführungsformen der Erfindung sind in den abhängigen Patentansprüchen angegeben. Insbesondere enthält das Mehrfachprozessor-Datenverarbeitungssystem eine Vielzahl von Cachespeichern, die einen Cachespeicher enthalten. Als Reaktion auf ein Erkennen einer speichermodifizierenden Operation durch den Cachespeicher, die eine selbe Zieladresse wie diejenige einer ersten durch den Cachespeicher verarbeiteten Operation des Lesetyps angibt, stellt der Cachespeicher eine Neuversuchsantwort für die speichermodifizierende Operation bereit. Als Reaktion auf den Abschluss der Operation des Lesetyps tritt der Cachespeicher in einen Schiedsrichtermodus ein. Während er sich im Schiedsrichtermodus befindet, erhöht der Cachespeicher vorübergehend dynamisch eine Priorität irgendeiner speichermodifizierenden Operation, die auf die Zieladresse abzielt, im Verhältnis zu irgendeiner zweiten Operation des Lesetyps, die auf die Zieladresse abzielt.
-
Ein Verfahren für ein Mehrfachprozessor-Datenverarbeitungssystem, das eine Vielzahl von Cachespeichern enthält, die einen Cachespeicher enthalten, weist auf: als Reaktion auf ein Erkennen einer ersten speichermodifizierenden Operation, die eine selbe Zieladresse wie diejenige einer ersten durch den Cachespeicher verarbeiteten Operation des Lesetyps angibt, durch den Cachespeicher: Bereitstellen einer Neuversuchsantwort für die speichermodifizierende Operation; und als Reaktion auf einen Abschluss der Operation des Lesetyps Eintreten in einen Schiedsrichtermodus; und während er sich im Schiedsrichtermodus befindet, erhöht der Cachespeicher vorübergehend dynamisch eine Priorität irgendeiner zweiten speichermodifizierenden Operation, die auf die Zieladresse abzielt, im Verhältnis zu irgendeiner zweiten Operation des Lesetyps, die auf die Zieladresse abzielt.
-
Ein Cachespeicher für ein Mehrfachprozessor-Datenverarbeitungssystem weist auf: ein Daten-Array; ein Verzeichnis von Inhalten des Daten-Arrays; eine Snoop-Maschine zum Verarbeiten von einer Verbindung empfangener Operationen, wobei die Snoop-Maschine als Reaktion auf ein Erkennen einer ersten speichermodifizierenden Operation, die eine selbe Zieladresse wie diejenige einer ersten durch den Cachespeicher verarbeiteten Operation des Lesetyps angibt, in der Lage ist, den Cachespeicher zu veranlassen, eine Neuversuchsantwort für die speichermodifizierende Operation bereitzustellen und als Reaktion auf einen Abschluss der Operation des Lesetyps in einen Schiedsrichtermodus einzutreten, wobei die Snoop-Maschine, während sie sich im Schiedsrichtermodus befindet, vorübergehend dynamisch eine Priorität irgendeiner zweiten speichermodifizierenden Operation, die auf die Zieladresse abzielt, im Verhältnis zu irgendeiner zweiten Operation des Lesetyps, die auf die Zieladresse abzielt, erhöht.
-
Ein Mehrfachprozessor-Datenverarbeitungssystem weist auf: eine Vielzahl von Verarbeitungseinheiten, von denen jede einen Cachespeicher aufweist; und eine Systemverbindung, welche die Vielzahl von Verarbeitungseinheiten verbindet, wobei ein spezieller Cachespeicher einer der Vielzahl von Verarbeitungseinheiten einen Cachespeicher der Erfindung aufweist.
-
Eine Verarbeitungseinheit weist auf: einen Cachespeicher gemäß der vorliegenden Erfindung und mindestens einen mit dem Cachespeicher verbundenen Prozessorkern.
-
Ein Mehrfachprozessor-Datenverarbeitungssystem weist auf: eine Vielzahl von Verarbeitungseinheiten, von denen jede einen Cachespeicher aufweist; und eine Systemverbindung, welche die Vielzahl von Verarbeitungseinheiten verbindet, wobei ein spezieller Cachespeicher von einer der Vielzahl von Verarbeitungseinheiten eine Snoop-Maschine aufweist, die von einer Verbindung empfangene Operationen verarbeitet, wobei die Snoop-Maschine als Reaktion auf ein Erkennen einer ersten speichermodifizierenden Operation, die eine selbe Zieladresse wie diejenige einer ersten durch den Cachespeicher verarbeiteten Operation des Lesetyps angibt, den speziellen Cachespeicher veranlasst, eine Neuversuchsantwort für die speichermodifizierende Operation bereitzustellen und als Reaktion auf einen Abschluss der Operation des Lesetyps in einen Schiedsrichtermodus einzutreten, wobei die Snoop-Maschine, während sie sich im Schiedsrichtermodus befindet, vorübergehend dynamisch eine Priorität irgendeiner zweiten speichermodifizierenden Operation, die auf die Zieladresse abzielt, im Verhältnis zu irgendeiner zweiten Operation des Lesetyps, die auf die Zieladresse abzielt, erhöht.
-
Figurenliste
-
Die vorliegende Erfindung wird nun in lediglich beispielhafter Weise unter Bezugnahme auf bevorzugte Ausführungsformen beschrieben, wie sie in den folgenden Figuren dargestellt sind:
- 1 zeigt ein Übersichtsblockschaubild eines beispielhaften Datenverarbeitungssystems gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
- 2 zeigt ein detaillierteres Blockschaubild einer beispielhaften Verarbeitungseinheit gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
- 3 zeigt ein detailliertes Blockschaubild eines L2-Cachespeichersektors gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
- 4 zeigt ein beispielhaftes Zeitschaubild der Verarbeitung einer Prozessor-Speicherzugriffsoperation in einem Cachespeicher einer niedrigeren Ebene gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
- 5 zeigt einen logischen Übersichtsablaufplan eines beispielhaften Prozesses eines Bedienens einer Prozessor-Speicherzugriffsoperation gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung; und
- 6 zeigt ein Zeitschaubild eines beispielhaften Prozesses eines Bedienens einer Prozessor-Speicherzugriffsoperation gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung.
-
DETAILLIERTE BESCHREIBUNG
-
Unter Bezugnahme auf die Figuren, in denen gleiche Bezugszeichen durchgängig gleiche und entsprechende Teile bezeichnen, und unter besonderer Bezugnahme auf 1 wird ein Übersichtsblockschaubild veranschaulicht, in dem ein beispielhaftes Datenverarbeitungssystem gemäß einer Ausführungsform abgebildet ist. Das Datenverarbeitungssystem ist als ein cachespeicherkohärentes Datenverarbeitungssystem 100 mit symmetrischem Mehrfachprozessor (SMP) abgebildet. Wie gezeigt enthält das Datenverarbeitungssystem 100 mehrere Verarbeitungsknoten 102a, 102b zum Verarbeiten von Daten und Anweisungen. Die Verarbeitungsknoten 102 sind mit einer Systemverbindung 110 zum Übermitteln von Address-, Daten- und Steuerinformationen verbunden. Die Systemverbindung 110 kann zum Beispiel als eine Busverbindung, eine Switch-Verbindung oder eine Hybridverbindung realisiert sein.
-
In der abgebildeten Ausführungsform ist jeder Verarbeitungsknoten 102 als ein Mehrfachchipmodul (multi-chip module (MCM)) realisiert, das vier Verarbeitungseinheiten 104a bis 104d, enthält, von denen jede vorzugsweise als entsprechende integrierte Schaltung realisiert ist. Die Verarbeitungseinheiten 104 innerhalb jedes Verarbeitungsknotens 102 sind zum Datenaustausch miteinander und mit der Systemverbindung 110 durch eine lokale Verbindung 114 verbunden, die wie die Systemverbindung 110 zum Beispiel mit einem oder mehreren Bussen und/oder Switches realisiert werden kann.
-
Wie nachstehend unter Bezugnahme auf 2 detaillierter beschrieben, enthalten die Verarbeitungseinheiten 104 jeweils eine mit der lokalen Verbindung 114 verbundene Speichersteuereinheit 106, um eine Schnittstelle zu einem entsprechenden Systemspeicher 108 bereitzustellen. Auf in den Systemspeichern 108 befindliche Daten und Anweisungen kann allgemein durch einen Prozessorkern in irgendeiner Verarbeitungseinheit 104 irgendeines Verarbeitungsknotens 102 innerhalb des Datenverarbeitungssystems 100 zugegriffen werden und sie können durch diesen modifiziert werden. In alternativen Ausführungsformen können eine oder mehrere Speichersteuereinheiten 106 (und Systemspeicher 108) mit der Systemverbindung 110 anstelle einer lokalen Verbindung 114 verbunden sein.
-
Für den Fachmann ist ersichtlich, dass das SMP - Datenverarbeitungssystem 100 von 1 viele zusätzliche nicht veranschaulichte Komponenten enthalten kann, wie beispielsweise Verbindungsbrücken, nicht flüchtige Speicher, Anschlüsse zur Verbindung mit Netzwerken oder angebundenen Einheiten usw. Da solche zusätzlichen Komponenten für ein Verständnis der beschriebenen Ausführungsformen nicht notwendig sind, sind sie nicht in 1 veranschaulicht oder hierin erläutert. Es sollte zudem verstanden werden, dass die hierin beschriebenen Verbesserungen auf cachespeicherkohärente Datenverarbeitungssysteme diverser Architekturen anwendbar sind und in keiner Weise auf die in 1 veranschaulichte verallgemeinerte Datenverarbeitungssystem-Architektur beschränkt sind.
-
Unter Bezugnahme auf 2 ist nun ein detaillierteres Blockschaubild einer beispielhaften Verarbeitungseinheit 104 gemäß einer Ausführungsform abgebildet. In der abgebildeten Ausführungsform handelt es sich bei jeder Verarbeitungseinheit 104 um eine integrierte Schaltung, die zwei Prozessorkerne 200a, 200b zum Verarbeiten von Anweisungen und Daten enthält. In einer bevorzugten Ausführungsform ist jeder Prozessorkern 200 in der Lage, mehrere Hardware-Ausführungsstränge (hardware threads) gleichzeitig auszuführen. Wie abgebildet, enthält jeder Prozessorkern 200 eine oder mehrere Ausführungseinheiten, wie beispielsweise eine Lade-Speicher-Einheit (load-store unit (LSU)) 202 zum Ausführen von Anweisungen. Zu den durch die LSU 202 ausgeführten Anweisungen zählen Speicherzugriffsanweisungen, die Zugriff auf einen Speicherblock erfragen oder das Erzeugen einer Anfrage nach Zugriff auf einen Speicherblock verursachen.
-
Der Betrieb jedes Prozessorkerns 200 wird durch eine Hierarchie flüchtigen Speichers mit mehreren Ebenen unterstützt, auf deren niedrigster Ebene sich ein gemeinsam genutzter Systemspeicher 108 befindet, auf den über eine integrierte Speichersteuereinheit 106 zugegriffen wird, und auf deren oberen Ebenen sich eine oder mehrere Ebenen von Cachespeicher befinden, zu denen in der veranschaulichenden Ausführungsform innerhalb des Prozessorkerns 200 und für diesen privat ein Durchspeicher(store-through)-Cachespeicher der Ebene 1 (L1) 226 sowie ein entsprechender Einspeicher(store-in)-Cachespeicher der Ebene 2 (L2) 230 für jeden Prozessorkern 200a, 200b befinden. Um mehrere konkurrierende Speicherzugriffsanfragen auf cachespeicherfähige Adresse effizient abwickeln zu können, kann jeder L2-Cachespeicher 230 mit mehreren L2-Cachespeichersektoren 230a1 bis 230aN realisiert sein, von denen jede Speicherzugriffsanfragen für einen jeweiligen Satz realer Speicheradressen abwickelt.
-
Obwohl die veranschaulichten Cachespeicherhierarchien nur zwei Ebenen von Cachespeicher enthalten, ist für den Fachmann ersichtlich, dass alternative Ausführungsformen zusätzliche Ebenen (L3, L4 usw.) von On-Chip-, Off-Chip-, In-Line- oder Lookaside-Cachespeicher enthalten können, welche die Inhalte der oberen Ebenen von Cachespeicher vollständig, teilweise oder nicht einschließen können.
-
Jede Verarbeitungseinheit 104 enthält weiterhin eine integrierte und verteilte Struktursteuereinheit (fabric controller) 216, die für das Steuern des Operationsablaufs auf der lokalen Verbindung 114 und der Systemverbindung 110 und für das Realisieren der Kohärenzdatenübertragung zuständig ist, die zum Implementieren des ausgewählten Cachespeicher-Kohärenzprotokolls erforderlich ist. Die Verarbeitungseinheit 104 enthält weiterhin eine integrierte E/A(Eingabe/Ausgabe)-Steuereinheit 214, welche die Anbindung einer oder mehrerer (nicht abgebildeter) E/A-Einheiten unterstützt.
-
Wenn im Betrieb ein durch einen Prozessorkern 200 ausgeführter Hardware-Strang eine Speicherzugriffsanweisung enthält, die ein Durchführen einer speziellen Speicherzugriffsoperation anfragt, führt die LSU 202 die Speicherzugriffsanweisung aus, um die reale Zieladresse der Speicherzugriffsanfrage zu ermitteln. Dann übermittelt die LSU 202 einer Hash-Logik 206 innerhalb ihres Prozessorkerns 200 zumindest die Speicherzugriffsanfrage, die mindestens einen Transaktionstyp (ttype) und eine reale Zieladresse enthält. Die Hash-Logik 206 erstellt einen Hash-Wert der realen Zieladresse, um das geeignete Ziel (z.B. einen der L2-Cachespeichersektores 230a1 bis 230aN) zu identifizieren und verteilt die Anfrage zum Bedienen auf das geeignete Ziel.
-
Unter Bezugnahme auf 3 wird dort nun ein detaillierteres Blockschaubild einer beispielhaften Ausführungsform eines der L2-Cachespeichersektoren 230a1 bis 230aN (allgemein als L2-Cachespeichersektor 230a bezeichnet) gemäß einer Ausführungsform veranschaulicht. Wie in 3, gezeigt, enthält der L2-Cachespeichersektor 230a ein Cachespeicher-Array 302 und ein Verzeichnis 308 der Inhalte des Cachespeicher-Arrays 302. Obwohl nicht explizit veranschaulicht, ist das Cachespeicher-Array 302 vorzugsweise mit einem einzigen Leseanschluss und einem einzigen Schreibanschluss realisiert, um die zum Realisieren des Cachespeicher-Array 302 erforderliche Chipfläche zu verringern.
-
Unter der Annahme, dass das Cachespeicher-Array 302 und das Verzeichnis 308 wie herkömmlich zugeordnet eingerichtet sind, sind die Speicherorte in den Systemspeichern 108 unter Verwendung vorgegebener Indexbits innerhalb der (realen) Systemspeicheradressen bestimmten Kongruenzklassen innerhalb des Cachespeicher-Arrays 302 zugeordnet. Die bestimmten innerhalb der Cachespeicherzeilen des Cachespeicher-Array 302 gespeicherten Speicherblöcke werden im Cachespeicherverzeichnis 308 gespeichert, das für jede Cachespeicherzeile einen Verzeichniseintrag enthält. Obwohl in 3 nicht explizit abgebildet, ist es für den Fachmann ersichtlich, dass jeder Verzeichniseintrag im Cachespeicherverzeichnis 308 verschiedene Felder enthält, zum Beispiel ein Kennzeichnungs(tag)-Feld, das die reale Adresse des in den entsprechenden Cachespeicherzeilen des Cachespeicher-Array 302 enthaltenen Speicherblocks angibt, ein Zustandsfeld, das den Kohärenzzustand der Cachespeicherzeile angibt, ein LRU(Least Recently Used, am längsten nicht verwendet)-Feld, das eine Ersetzungsreihenfolge für die Cachespeicherzeile in Hinblick auf andere Cachespeicherzeilen in derselben Kongruenzklasse angibt, sowie Einschließlichkeitsbits, die angeben, ob der Speicherblock im zugeordneten L1-Cachespeicher 226 enthalten ist.
-
Der L2-Cachespeichersektor 230a enthält mehrere (z.B. 16) Lese-Beanspruchungs(Read-Claim(RC))-Maschinen 312a bis 312n zum unabhängigen und gleichzeitigen Bedienen von Lade(LD)- und Speicher(SP)-Anfragen, die vom angegliederten Prozessorkern 200 empfangen werden. Um Fern-Speicherzugriffsanfragen zu bedienen, die von Prozessorkernen 200 stammen, bei denen es sich nicht um den angegliederten Prozessorkern 200, handelt, enthält der L2-Cachespeichersektor 230a zudem mehrere Snoop-Maschinen 311a bis 311 m. Jede Snoop-Maschine 311 kann unabhängig und gleichzeitig eine von der lokalen Verbindung 114 „ausgespähte“ (snooped) Speicherzugriffsanfrage abwickeln. Wie ersichtlich ist, kann das Bedienen von Speicherzugriffsanfragen durch die RC-Maschinen 312 das Ersetzen oder für ungültig Erklären von Speicherblöcken innerhalb des Cachespeicher-Array 302 erfordern. Dementsprechend enthält der L2-Cachespeichersektor 230a CO (Castout, Austreibe)-Maschinen 310, die das Entfernen und Zurückschreiben von Speicherblöcken vom Cachespeicher-Array 302 verwalten.
-
Der L2-Cachespeichersektor 230a enthält weiterhin einen Arbiter 305, der Multiplexer M1 bis M2 steuert, um das Verarbeiten lokaler Speicherzugriffsanfragen, die vom angegliederten Prozessorkern 200 empfangen wurden, und Fernanfragen, die auf der lokalen Verbindung 114 ausgespäht wurden, zu ordnen. Speicherzugriffsanfragen, zu denen lokale Lade- und Speicheroperationen sowie Fernlese- und Fernschreiboperationen zählen, werden entsprechend den durch den Arbiter 305 realisierten Entscheidungsrichtlinie an eine Verteillogik weitergeleitet, wie beispielsweise eine Verteilpipeline 306, die jede Lese/Lade- und Speicheranfrage im Hinblick auf das Verzeichnis 308 und das Cachespeicher-Array 302 über eine gegebene Anzahl von Zyklen verarbeitet.
-
Der L2-Cachespeichersektor 230a enthält zudem eine RC-Warteschlange 320 und eine CPI(castout push intervention, Austreib-Push-Interventions)-Warteschlange 318, die jeweils in das Cachespeicher-Array 302 eingefügte und daraus entfernte Daten puffern. Die RC-Warteschlange 320 enthält eine Anzahl von Puffereinträgen, von denen jeder individuell einer bestimmten der RC-Maschinen 312 entspricht, so dass jede RC-Maschine 312, die zugeteilt ist, Daten nur vom bezeichneten Puffereintrag abruft. Gleichermaßen enthält die CPI-Warteschlange 318 eine Anzahl von Puffereinträgen, von denen jeder individuell einer bestimmten der Castout-Maschinen 310 und Snoop-Maschinen 311 entspricht, so dass jede zugeteilte CO-Maschine 310 und jeder zugeteilte Snooper 311 Daten nur vom jeweiligen bezeichneten CPI-Puffereintrag abruft.
-
Jeder RC-Maschine 312 ist zudem ein entsprechender von mehreren RC-Daten(RCDAT)-Puffern 322 zum Puffern eines vom Cachespeicher-Array 302 gelesenen und/oder über einen Neuladebus 323 von der lokalen Verbindung 114 empfangenen Speicherblocks zugewiesen. Der jeder RC-Maschine 312 zugewiesene RCDAT-Puffer 322 ist vorzugsweise mit Verbindungen und Funktionalität aufgebaut, die den Speicherzugriffsanfragen entsprechen, die unter Umständen durch die zugeordnete RC-Maschine 312 bedient werden. Die RCDAT-Puffer 322 besitzen einen zugeordneten Speicherdaten-Multiplexer M4, der als Reaktion auf durch den Arbiter 305 erzeugte, nicht veranschaulichte Auswahlsignale Datenbytes unter seinen Eingaben zum Puffern im RCDAT-Puffer 322 auswählt.
-
Im Betrieb werden Prozessorspeicheranfragen, die einen Transaktionstyp (ttype), eine reale Zieladresse und Speicherdaten enthalten, vom angegliederten Prozessorkern 200 innerhalb einer Speicherwarteschlange (SPW) 304 empfangen. Von der SPW 304 werden die Speicherdaten über einen Datenpfad 324 an den Speicherdaten-Multiplexer M4 übermittelt, und der Speichertyp und die Zieladresse werden an den Multiplexer M1 geleitet. Der Multiplexer M1 empfängt als Eingaben zudem Prozessorladeanfragen vom Prozessorkern 200 und Verzeichnisschreibanfragen von den RC-Maschinen 312. Als Reaktion auf die durch den Arbiter 305 erzeugten, nicht veranschaulichten Auswahlsignale wählt der Multiplexer M1 eine seiner Eingabeanfragen zum Weiterleiten an den Multiplexer M2 aus, der zusätzlich als eine Eingabe von der lokalen Verbindung 114 über einen Fernanfragepfad 326 eine Fernanfrage empfängt. Der Arbiter 305 plant lokale und Fern-Speicherzugriffsanfragen für die Verarbeitung und erzeugt auf der Grundlage der Planung eine Sequenz von Auswahlsignalen 328. Als Reaktion auf die durch den Arbiter 305 erzeugten Auswahlsignale 328 wählt der Multiplexer M2 entweder die vom Multiplexer M1 empfangene lokalen Anfrage oder die von der lokalen Verbindung 114 ausgespähte Fernanfrage als die nächste zu verarbeitende Speicherzugriffsanfrage aus.
-
Unter Bezugnahme auf
4 ist nun ein Raum-Zeit-Schaubild eines beispielhaften Betriebs auf der Verbindungsstruktur des Datenverarbeitungssystems 100 von
1 abgebildet. Die Operation beginnt mit einer Anfragephase 450, in der ein Hauptelement 400, zum Beispiel eine RC-Maschine 312 eines L2-Cachespeichers 230, eine Anfrage 402 auf der Verbindungsstruktur ausgibt. Die Anfrage 402 enthält vorzugsweise mindestens einen Transaktionstyp, der einen Typ eines gewünschten Zugriffs angibt, und eine Ressourcenkennung (z.B. eine reale Adresse), die eine Ressource angibt, auf die durch die Anfrage zuzugreifen ist. Bekannte Typen von Anfragen enthalten vorzugsweise die in Tabelle I dargelegten. TABELLE I
Anfrage | Beschreibung |
READ (Lesen) | Erfragt eine Kopie des Image eines Speicherblocks für Abfragezwecke |
RWITM (Read-With-Intent-To-Modify, Lesen mit der Absicht zu modifizieren) | Erfragt eine eindeutige Kopie des Image eines Speicherblocks mit der Absicht, sie zu aktualisieren (modifizieren), und erfordert die Zerstörung anderer Kopien, falls vorhanden |
DCLAIM (Data Claim, Datenanspruch) | Erfragt eine Berechtigung, eine vorhandene Nur-Abfrage-Kopie des Speicherblocks zu einer eindeutigen Kopie heraufzustufen mit der Absicht, sie |
| zu aktualisieren (modifizieren), und erfordert die Zerstörung anderer Kopien, falls vorhanden |
DCBZ (Data Cache Block Zero, Datencachespeicherblock Null) | Erfragt eine Berechtigung, ungeachtet seines derzeitigen Zustands eine neue eindeutige Kopie eines Speicherblocks zu erstellen und anschließend seine Inhalte zu modifizieren; erfordert die Zerstörung anderer Kopien, falls vorhanden |
CASTOUT (Austreiben) | Kopiert das Image eines Speicherblocks von einer höheren Speicherebene in eine niedrigere Speicherebene in Vorbereitung für die Zerstörung der Kopie der höheren Ebene |
WRITE (Schreiben) | Erfragt eine Berechtigung, ungeachtet seines derzeitigen Zustands eine neue eindeutige Kopie eines Speicherblocks zu erstellen und das Image des Speicherblocks unmittelbar von einem Speicher einer höheren Ebene in einen Speicher einer niedrigeren Ebene in Vorbereitung für die Zerstörung der Kopie der höheren Ebene zu kopieren |
PARTIAL WRITE (teilweises Schreiben) | Erfragt eine Berechtigung, ungeachtet seines derzeitigen Zustands eine neue eindeutige Kopie eines teilweisen Speicherblocks zu erstellen und das Image des teilweisen Speicherblocks unmittelbar von einem Speicher einer höheren Ebene in einen Speicher einer niedrigeren Ebene in Vorbereitung für die Zerstörung der Kopie der höheren Ebene zu kopieren |
-
Die Anfrage 402 wird durch Snooper 404, zum Beispiel die Snooper 311a bis 311m des L2-Cachespeichersektors 230a empfangen. Im Allgemeinen spähen die Snooper 311 im selben L2-Cachespeicher 230a wie das Hauptelement der Anfrage 402 mit einigen Ausnahmen die Anfrage 402 nicht aus (d.h. es gibt allgemein kein Selbstausspähen), da eine Anfrage 402 nur auf der Verbindungsstruktur übermittelt wird, wenn die Anfrage 402 nicht intern durch eine Verarbeitungseinheit 104 bedient werden kann.
-
Der Betrieb wird mit einer teilweisen Antwortphase 455 fortgesetzt. Während der teilweisen Antwortphase 455 stellen die Snooper 404, welche die Anfragen 402 empfangen und verarbeiten, jeweils eine entsprechende teilweise Antwort 406 bereit, welche die Antwort mindestens dieses Snooper 404 auf die Anfrage 402 darstellt. Ein Snooper 404 innerhalb einer integrierten Speichersteuereinheit 106 ermittelt die bereitzustellende teilweise Antwort 406 zum Beispiel auf der Grundlage davon, ob dieser Snooper 404 für die Anfrageadresse zuständig ist und ob er Ressourcen verfügbar hat, um die Anfrage zu bedienen. Ein Snooper 404 eines L2-Cachespeichers 230 kann seine teilweise Antwort 406 zum Beispiel auf der Grundlage der Verfügbarkeit seines L2-Cachespeicherverzeichnisses 308, der Verfügbarkeit einer Snoop-Logikinstanz 311 innerhalb des Snooper 404 zum Abwickeln der Anfrage und des der Anfrageadresse im L2-Cachespeicherverzeichnis 308 zugeordneten Kohärenzzustands ermitteln.
-
Der Betrieb wird mit einer kombinierten Antwortphase 460 fortgesetzt. Während der kombinierten Antwortphase 460 werden die teilweisen Antworten 406 der Snooper 404 entweder stufenweise oder alle gemeinsam durch eine oder mehrere Instanzen einer Antwortlogik 422 kombiniert, um eine systemweite kombinierte Antwort (hierin als „KA“ oder „KAnt“ bezeichnet) 410 auf die Anfrage 402 zu ermitteln. In einer bevorzugten Ausführungsform, von der hierein nachstehend ausgegangen wird, befindet sich die für das Erzeugen der kombinierten Antwort 410 zuständige Instanz der Antwortlogik 422 in der Verarbeitungseinheit 104, die das Hauptelement 400 enthält, das die Anfrage 402 ausgegeben hat, zum Beispiel in der Struktursteuereinheit 216. Die Antwortlogik 422 stellt dem Hauptelement 400 und den Snoopern 404 über die Verbindungsstruktur die kombinierte Antwort 410 bereit, um die systemweite Antwort (z.B. Erfolg, Fehlschlag, Neuversuch usw.) auf die Anfrage 402 anzugeben. Wenn die KA 410 einen Erfolg der Anfrage 402 angibt, kann die KA 410 zum Beispiel eine Datenquelle für einen angefragten Speicherblock, einen Cachespeicherzustand, in dem der angefragte Speicherblock durch das Hauptelement 400 im Cachespeicher zu speichern ist, und ob „Bereinigungs“-Operationen erforderlich sind, die den angefragten Speicherblock in einem oder mehreren L2-Cachespeichern 230 für ungültig erklären, angeben.
-
Als Reaktion auf ein Empfangen der kombinierten Antwort 410 führt eines oder mehrere vom Hauptelement 400 und den Snoopern 404 üblicherweise eine oder mehrere Operationen durch, um die Anfrage 402 zu bedienen. Zu diesen Operationen kann ein Liefern von Daten an das Hauptelement 400, ein für ungültig Erklären oder anderweitiges Aktualisieren des Kohärenzzustandes von in einem oder mehreren L2-Cachespeichern 230 gespeicherten Daten, ein Durchführen von Castout-Operationen, ein Zurückschreiben von Daten in einen Systemspeicher 108 usw. zählen. Wenn es für die Anfrage 402 erforderlich ist, kann ein angefragter oder Zielspeicherblock vor oder nach der Erzeugung der kombinierten Antwort 410 durch die Antwortlogik 422 an das oder vom Hauptelement 400 übermittelt werden.
-
In der folgenden Beschreibung werden die teilweise Antwort 406 eines Snooper 404 auf eine Anfrage 402 und die durch den Snooper 404 als Reaktion auf die Anfrage 402 durchgeführten Operationen und/oder seine kombinierte Antwort 410 unter Bezugnahme darauf beschrieben, ob es sich bei diesem Snooper im Hinblick auf die durch die Anfrage angegebene Anfrageadresse um einen höchsten Kohärenzpunkt (Highest Point of Coherency (HPC)), einen niedrigsten Kohärenzpunkt (Lowest Point of Coherency (LPC)) oder keines von beidem handelt. Ein LPC ist hierein als eine Speichereinheit oder E/A-Einheit definiert, die als die letztendliche Ablage (repository) für einen Speicherblock dient. In Abwesenheit eines Caching-Teilnehmers, der eine Kopie des Speicherblocks enthält, enthält der LPC das einzige Image dieses Speicherblocks. In Abwesenheit eines HPC-Caching-Teilnehmers für den Speicherblock verfügt der LPC über die alleinige Berechtigung, Anfragen zum Modifizieren des Speicherblocks zu gewähren oder abzulehnen. Wenn darüber hinaus die LPC-Daten aktuell sind und in Abwesenheit eines Caching-Teilnehmers, der die Daten bereitstellen kann, stellt der LPC diese Daten Anfragen bereit, den Speicherblock entweder zu lesen oder zu modifizieren. Wenn ein Caching-Teilnehmer eine aktuellere Kopie der Daten besitzt, jedoch nicht in der Lage ist, sie einer Anfrage bereitzustellen, stellt der LPC keine veralteten Daten bereit und die Anfrage wird wiederholt. Für eine typische Anfrage in der Ausführungsform des Datenverarbeitungssystems wird es sich bei dem LPC um die Speichersteuereinheit 106 für den Systemspeicher 108 handeln, der den referenzierten Speicherblock enthält. Ein HPC ist hierin als eine eindeutig gekennzeichnete Einheit definiert, die ein wahres Image des Speicherblocks (das mit dem entsprechenden Speicherblock beim LPC konsistent sein kann aber nicht muss) in Cachespeicher speichert und die Berechtigung besitzt, eine Anfrage zum Modifizieren des Speicherblocks zu gewähren oder abzulehnen. Anschaulich stellt der HPC (auch wenn seine Kopie mit einem Hauptspeicher hinter dem LPC konsistent ist) einem Anfrager zudem als Reaktion auf irgendeine Anfrage zum Lesen oder Modifizieren des Speicherblocks eine Kopie des Speicherblocks bereit (Cachespeicher-zu-Cachespeicher-Transfers sind schneller als LPC-zu-Cachespeicher-Transfers). Somit wird es sich für eine typische Anfrage in der Ausführungsform des Datenverarbeitungssystem beim HPC, falls vorhanden, um einen L2-Cachespeicher 230 handeln. Obwohl andere Anzeiger verwendet werden können, um einen HPC für einen Speicherblock zu bezeichnen, bezeichnet eine bevorzugte Ausführungsform den HPC für einen Speicherblock, falls vorhanden, unter Verwendung eines oder mehrerer ausgewählter Cachespeicher-Kohärenzzustände innerhalb des L2-Cachespeicherverzeichnisses 308 eines L2-Cachespeichers 230. In einer bevorzugten Ausführungsform geben die Kohärenzzustände innerhalb des Kohärenzprotokolls zusätzlich zum Bereitstellen (1) einer Angabe, ob es sich bei einem Cachespeicher um den HPC für einen Speicherblock handelt, zudem an (2) ob die im Cachespeicher gespeicherte Kopie eindeutig ist (d.h. sie systemweit die einzige im Cachespeicher gespeicherte Kopie ist), (3) ob und wann der Cachespeicher einem Hauptelement einer Anfrage nach dem Speicherblock eine Kopie des Speicherblocks bereitstellen kann, und (4) ob das im Cachespeicher gespeicherte Image des Speicherblocks mit dem entsprechenden Speicherblock beim LPC (Systemspeicher) konsistent ist. Diese vier Attribute können zum Beispiel in einer beispielhaften Variante des allgemein bekannten MESI(Modified, Exclusive, Shared, Invalid (modifiziert, ausschließlich, gemeinsam genutzt, ungültig))-Protokolls ausgedrückt werden, das nachstehend in Tabelle II zusammengefasst ist. Weitere Informationen bezüglich des Kohärenzprotokolls finden sich zum Beispiel in der
US-Patentschrift Nr. 7 389 388 . TABELLE II
Cachespeicherzustan d | HPC ? | Eindeutig ? | Datenquelle ? | Konsisten t mit LPC? | Gleichzeiti g zulässige Zustände |
M | Ja | ja | Ja, vor KA | nein | I (& LPC) |
Me | Ja | ja | Ja, vor KA | ja | I (& LPC) |
T, Te | Ja | unbekann t | Ja, nach KA, falls nicht vor KA bereitgestellt | nein | SL, S, I (& LPC) |
SL | Nein | unbekann t | Ja, vor KA | unbekann t | T, S, I (& LPC) |
S | Nein | unbekann t | Nein | unbekann t | T, SL, S, I (& LPC) |
I | nein | nicht verfügbar | Nein | nicht verfügbar | M, Me, T, SL, S, I (& LPC) |
-
Beachtenswert in der vorstehenden Tabelle II sind die T-, SL- und S-Zustände, bei denen allen es sich dahingehend um „gemeinsam genutzt“-Kohärenzzustände handelt, als ein Cachespeicher gleichzeitig eine Kopie einer in irgendeinem dieser Zustände durch einen anderen Cachespeicher gespeicherten Cachespeicherzeile enthalten kann. Der T- oder Te-Zustand gibt einen HPC-Cachespeicher an, der vormals die zugeordnete Cachespeicherzeile in einem der M- oder Me-Zustände enthielt und Quelle einer Nur-Abfrage-Kopie der zugeordneten Cachespeicherzeile für einen anderen Cachespeicher war. Als ein HPC besitzt ein Cachespeicher, der eine Cachespeicherzeile in den Kohärenzzuständen T oder Te enthält, die Berechtigung, die Cachespeicherzeile zu modifizieren oder eine solche Berechtigung einem anderen Cachespeicher zu erteilen. Ein Cachespeicher, der eine Cachespeicherzeile im Tx-Zustand (z.B. T oder Te) enthält, dient insofern als die Cachespeicher-Datenquelle des letzten Bereichs (nach einer KAnt) für Nur-Abfrage-Kopien dieser Cachespeicherzeile, als der Cachespeicher nur Quelle einer Nur-Abfrage-Kopie für einen anderen Cachespeicher sein wird, wenn kein die Cachespeicherzeile im SL-Zustand enthaltender Cachespeicher verfügbar ist, um als Datenquelle zu dienen (vor einer KAnt).
-
Der SL-Zustand wird in einem Cachespeicher als Reaktion darauf gebildet, dass ein Cachespeicher eine Nur-Abfrage-Kopie einer Cachespeicherzeile von einem Cachespeicher im Kohärenzzustand T empfängt. Obwohl es sich beim SL-Zustand nicht um einen HPC-Kohärenzzustand handelt, besitzt ein eine Cachespeicherzeile im SL-Zustand enthaltender Cachespeicher die Fähigkeit, als Quelle einer Nur-Abfrage-Kopie dieser Cachespeicherzeile für einen anderen Cachespeicher zu dienen und kann dies vor einem Empfang einer KAnt tun. Als Reaktion auf ein Bilden einer Quelle einer Nur-Abfrage-Kopie einer Cachespeicherzeile für einen anderen Cachespeicher (der den SL-Zustand annimmt), aktualisiert der als Quelle für die Nur-Abfrage-Kopie der Cachespeicherzeile dienende Cachespeicher seinen Kohärenzzustand für die Cachespeicherzeile von SL zu S. Somit kann die Realisierung des Kohärenzzustandes SL ein Erzeugen zahlreicher Nur-Abfrage-Kopien häufig abgefragter Cachespeicherzeilen innerhalb eines Mehrfachprozessor-Datenverarbeitungssystems verursachen, was in vorteilhafter Weise Latenzzeiten von Nur-Abfrage-Zugriff auf diese Cachespeicherzeilen verringert.
-
Unter erneuter Bezugnahme auf 4, besitzt der HPC, falls vorhanden, für einen in einer Anfrage 402 referenzierten Speicherblock oder in Abwesenheit eines HPC der LPC des Speicherblocks vorzugsweise die Zuständigkeit, als Reaktion auf eine Anfrage 402 den Transfer des Besitzes eines Speicherblocks, falls notwendig, zu schützen. In dem in 4 gezeigten beispielhaften Szenario schützt ein Snooper 404n beim HPC (oder in Abwesenheit eines HPC beim LPC) für den durch die Anfrageadresse der Anfrage 402 angegebenen Speicherblock den Transfer des Besitzes des angefragten Speicherblocks an das Hauptelement 400 während eines Schutzfensters 412a, das sich vom Zeitpunkt, zu dem der Snooper 404n seine teilweise Antwort 406 ermittelt, bis zum Empfang der kombinierten Antwort 410 durch den Snooper 304n erstreckt, sowie während einer nachfolgenden Fenstererweiterung 412b, die sich über eine programmierbare Zeit nach Empfang der kombinierten Antwort 410 durch den Snooper 404n erstreckt. Während des Schutzfensters 412a und der Fenstererweiterung 412b schützt der Snooper 404n den Transfer des Besitzes durch Bereitstellen der teilweisen Antworten 406 für andere, dieselbe Anfrageadresse angebende Anfragen, die andere Hauptelemente davon abhalten, den Besitz zu erhalten (z.B. eine teilweise Neuversuchsantwort) bis der Besitz erfolgreich auf das Hauptelement 400 transferiert wurde. Das Hauptelement 400 startet gleichermaßen ein Schutzfenster 413, um auf einen Empfang der kombinierten Antwort 410 folgend seinen Besitz des in der Anfrage 402 angefragten Speicherblocks zu schützen.
-
Da alle Snooper 404 begrenzte Ressourcen zum Abwickeln der vorstehend beschriebenen CPU- und E/A-Anfragen besitzen, sind mehrere Ebenen teilweiser Antworten und entsprechende KAs möglich. Wenn zum Beispiel ein Snooper innerhalb einer Speichersteuereinheit 106, die für einen angefragten Speicherblock zuständig ist, eine Warteschlange zum Abwickeln der Anfrage verfügbar hat, kann der Snooper mit einer teilweisen Antwort antworten, die angibt, dass er in der Lage ist, als der LPC für die Anfrage zu dienen. Wenn andererseits der Snooper keine Warteschlange zum Abwickeln der Anfrage verfügbar hat, kann der Snooper mit einer teilweisen Antwort antworten, die angibt, dass er der LPC für den Speicherblock ist, jedoch derzeit nicht in der Lage ist, die Anfrage zu bedienen. Gleichermaßen kann ein Snooper 311 in einem L2-Cachespeicher 230 eine verfügbare Instanz von Snoop-Logik und Zugriff auf das L2-Cachespeicherverzeichnis 406 erfordern, um eine Anfrage abwickeln zu können. Die Abwesenheit von Zugriff auf eines (oder beide) dieser Ressourcen führt zu einer teilweisen Antwort (und entsprechenden KA), die aufgrund einer Abwesenheit einer erforderlichen Ressource eine Unfähigkeit signalisiert, die Anfrage zu bearbeiten.
-
Wie vorstehend erläutert, wird in Datenverarbeitungssystemen Operationen des Lesetyps allgemein eine Priorität gegenüber Operationen des Speichertyps eingeräumt, da der zeitkritische Pfad durch ein Softwareprogramm allgemein durch Ladelatenzzeiten bestimmt wird. Die Priorisierung von Operationen des Lesetyps gegenüber Operationen des Speichertyps kann in einer Anzahl von Datenverarbeitungssystem-Attributen ausgedrückt werden, zu denen die durch ein gegebenes Datenverarbeitungssystem realisierte Hardware-Architektur, das Speichermodell und das Kohärenzprotokoll zählen. Zum Beispiel gibt das in Tabelle II zusammengefasste Kohärenzprotokoll diese Priorisierung wieder, indem die Bildung zahlreicher verteilter Nur-Abfrage(SL oder S)-Kopien einer häufig abgefragten Cachespeicherzeile innerhalb eines Mehrfachprozessor-Datenverarbeitungssystems begünstigt wird. Während die Verfügbarkeit zahlreicher Quellen einer Nur-Abfrage-Kopie einer Cachespeicherzeile die Zugriffslatenzzeiten von nicht speichermodifizierenden Operationen verringert, kann ein Vorhandensein vieler über das Datenverarbeitungssystem verteilter Kopien der Cachespeicherzeile die Zugriffslatenzzeiten von speichermodifizierenden Zugriffen erhöhen, da jeder der eine Nur-Abfrage-Kopie der Cachespeicherzeile enthaltenden und eine Anfrage nach Nur-Abfrage-Zugriff bedienenden Cachespeicher einen Neuversuch einer konkurrierenden Anfrage nach speichermodifizierendem Zugriff erzwingen kann. In gewissen Fällen kann ein wiederholter Neuversuch der speichermodifizierenden Anfrage den Weiterleitungsfortschritt des Programms verlangsamen oder gar anhalten (z.B. wenn der speichermodifizierende Zugriff erforderlich ist, um eine Blockierung durch viele Konflikte zu lösen)
-
Insbesondere ist im vorstehend beschriebenen Kohärenzprotokoll ein HPC in einem Tx-Zustand erforderlich, um die erste von ihm wahrgenommene Leseoperation zu schützen und alle anderen Lese- und Modifikationsoperationen auf diese Adresse erneut zu versuchen, bis mindestens eine KAnt für diesen Lesevorgang erhalten wird. Dies dient dazu, sicherzustellen, dass in Abwesenheit einer SL-Kopie als Quelle der Lesedaten (entweder aufgrund dessen, dass die SL mit einer anderen Anfrage beschäftigt ist oder insgesamt fehlt) der HPC-Cachespeicher die Daten bereitstellen wird. Im Falle, dass insgesamt der HPC-Cachespeicher relativ zum Hauptspeicher im LPC modifiziert ist und der SL-Cachespeicher nicht vorhanden ist, muss der HPC diese Funktion durchführen, da die LPC-Daten veraltet sind und der HPC-Cachespeicher die Daten bereitstellen muss. In den anderen Fällen ist zu bevorzugen, den HPC die Daten bereitstellen zu lassen (auch nach einer KAnt), da der Cachespeicher-zu-Cachespeicher-Transfer effizienter ist als ein LPC-zu-Cachespeicher-Transfer. Insofern kann bei Vorhandensein einer erheblichen Anzahl von abfragenden Lesecachespeichern ein einzelner Cachespeicher, der versucht, auf einen Speicherort zu speichern (zum Beispiel um eine Blockierung aufzuheben) erhebliche Schwierigkeiten haben, zum HPC zu gelangen und die Berechtigung zu erhalten, den Speicherblock zu modifizieren, da der HPC während eines erheblichen Zeitanteils damit beschäftigt ist, als die Datenquelle des letzten Bereichs zu dienen und nicht in der Lage ist, sich der Blockmodifizierungsanfrage voll zu widmen
-
Wie nachstehend detailliert unter Bezugnahme auf 5 bis 6 beschrieben, können Probleme in Zusammenhang mit Lesepriorisierung gelöst werden, indem vorübergehend und dynamisch die Priorität von Operationen des Speichertyps relativ zu Operationen des Lesetyps erhöht wird, so dass ein Speichervorgang effektiver um das Erkanntwerden durch den HPC-Cachespeicher konkurrieren kann. In zumindest manchen Ausführungsformen wird die Priorität von Operationen des Speichertyps relativ zu Operationen des Lesetyps erhöht, indem für Operationen des Lesetyps, die auf Cachespeicherzeilen abzielen, für die eine Blockierung erkannt ist, ein Neuversuchen erzwungen wird.
-
Unter Zuwendung zu 5 wird nun ein logischer Übersichtsablaufplan eines beispielhaften Prozesses veranschaulicht, durch den gemäß einer Ausführungsform ein Cachespeicher dynamisch das Abwickeln von Speicheroperationen gegenüber Leseoperationen priorisiert. Zur Klarheit wird der Ablaufplan von 5 hierin in Verbindung mit dem Zeitschaubild 600 von 6 beschrieben.
-
Der in 5 abgebildete Prozess beginnt in Block 500 als Reaktion darauf, dass ein L2-Cachespeicher 230, der eine Ziel-Cachespeicherzeile einer Operation des Lesetyps in einem gemeinsam genutzten modifizierten Kohärenzzustand (z.B. dem Tx-Zustand) enthält, die Leseoperation von der lokalen Verbindung 114 ausspäht. Bei der Operation des Lesetyps kann es sich um einen READ-Vorgang wie zuvor beschrieben oder irgendeinen anderen speichermodifizierenden Zugriff auf eine Ziel-Cachespeicherzeile handeln. In Block 502 teilt eine Verteillogik 306 des L2-Cachespeichers 230 eine Snoop-Maschine 311 zu, um die von der lokalen Verbindung 114 ausgespähte Operation des Lesetyps abzuwickeln, wie bei Bezugszeichen 602 in 6 durch den Übergang der Snoop-Maschine 311 von einem Ruhezustand in einen beschäftigen Zustand dargestellt ist. Die zugeteilte Snoop-Maschine 311 beginnt dementsprechend mit dem Schutz für die Zieladresse der ausgespähten Operation des Lesetyps. Anders ausgedrückt: Während die Operation des Lesetyps durch die zugeteilte Snoop-Maschine 311 verarbeitet wird, wird, wie bei Bezugsziffer 606 in 6 dargestellt, jede während der Durchführung der normalen Verarbeitung für den Lesevorgang anschließend empfangene Operation des Speichertyps, welche dieselbe Zieladresse besitzt, eine teilweise Neuversuchsantwort vom L2-Cachespeicher 230 empfangen (und folglich eine Neuversuchs-KAnt, die das Hauptelement der Operation des Lesetyps zwingt, die Operation des Speichertyps erneut auszugeben, um die der Zieladresse zugeordnete Cachespeicherzeile zu aktualisieren). In einer oder mehreren Ausführungsformen besitzen die Operation des Lesetyps und die Operation des Speichertyps eine Zieladresse, die einem gemeinsam genutzten modifizierten Cachespeicherzustand zugeordnet ist, zum Beispiel dem Cachespeicherzustand „T“ oder „Te“, wie vorstehend beschrieben.
-
Wenn, wie in Block 504 veranschaulicht, die Snoop-Maschine 311 Ihre Verarbeitung, wie bei Bezugsziffer 604 von 6 dargestellt, abgeschlossen hat, wird der Prozess mit Block 510 fortgesetzt, der nachstehend beschrieben wird. Wenn im Entscheidungsblock 504 die Snoop-Maschine 311 die Verarbeitung der Leseoperation nicht abgeschlossen hat, wird der Prozess in Block 505 fortgesetzt, der veranschaulicht, wie die Snoop-Maschine 311 eine normale Verarbeitung der ausgespähten Operation des Lesetyps durchführt, wozu zum Beispiel zählen kann, als Reaktion auf ein Empfangen einer kombinierten Antwort, die einen Erfolg der Operation des Lesetyps angibt, durch Cachespeicher-zu-Cachespeicher-Intervention eine Quelle der Ziel-Cachespeicherzeile für das anfragende Hauptelement zu bilden. In Block 506 ermittelt die Snoop-Maschine 311, ob sie eine konkurrierende Operation des Speichertyps erkannt hat, wie bei Bezugsziffer 606 von 6 abgebildet, d.h. eine Operation des Speichertyps (d.h. irgendeine speichermodifizierende Operation), welche dieselbe Zieladresse besitzt wie die ausgespähte Operation des Lesetyps und die von einem anderen Ausführungsstrang stammt. Wie vorstehend festgehalten, erhält jede in Konflikt stehende Operation des Speichertyps, die anschließend empfangen wird, während die Snoop-Maschine 311 die Operation des Lesetyps verarbeitet, eine teilweise Neuversuchsantwort durch den L2, da die Snoop-Maschine 311 bereits aktiv eine auf die Ziel-Cachespeicherzeile gerichtete Operation des Lesetyps verarbeitet. Als Reaktion auf ein Erkennen einer konkurrierenden Operation des Speichertyps in Block 506 setzt die Snoop-Maschine 311 ein Flag, später in einen „Schiedsrichter“-Modus einzutreten, in dem eine Operation des Speichertyps auf die Ziel-Cachespeicherzeile vorübergehend gegenüber Operationen des Lesetyps auf die Ziel-Cachespeicherzeile priorisiert wird, wie in Block 508 von 5 und Bezugsziffer 608 von 6 abgebildet ist. In einer Ausführungsform setzt die Snoop-Maschine nur das Flag, später in den Schiedsrichtermodus einzutreten, wenn es sich bei dem der Zieladresse zugeordneten Cachespeicherzustand um einen gemeinsam genutzten modifizierten Zustand handelt. Auf Block 508 folgend kehrt der Prozess zu Block 504 zurück, der beschrieben wurde.
-
Unter Bezugnahme auf Block 510 ermittelt nun die Snoop-Maschine 311 nach Abschluss der Verarbeitung der Operation des Lesetyps, ob das Schiedsrichtermodus-Flag gesetzt ist. Falls nicht, kehrt die Snoop-Maschine 311 in einen Ruhezustand zurück, wie in 5 bei Block 512 und in 6 bei Bezugsziffer 610 veranschaulicht ist. Auf Block 512 folgend endet der in 5 veranschaulichte Prozess in Block 513. Wenn die Snoop-Maschine 311 unter Rückkehr zu Block 510 ermittelt, dass das Flag, in den Schiedsrichtermodus einzutreten, gesetzt ist, kehrt die Snoop-Maschine 311 nach Abschluss der Verarbeitung der Operation des Lesetyps nicht in den Ruhezustand zurück, sondern tritt stattdessen in den Schiedsrichtermodus ein, wie in Block 514 von 5 und Bezugsziffer 614 von 6 gezeigt ist. In Verbindung mit dem Eintreten in den Schiedsrichtermodus startet die Snoop-Maschine 311 in einer Ausführungsform zudem einen Zeitgeber.
-
In Block 516 ermittelt die Snoop-Maschine 311, ob sie, wie bei Bezugsziffer 618 von 6 abgebildet, eine konkurrierende Operation des Lesetyps erkannt hat, die auf dieselbe Cachespeicherzeile gerichtet ist wie diejenige, auf welche die konkurrierende Operation des Speichertyps zielt. Falls ja, stellt die Snoop-Maschine 311 der konkurrierenden Operation des Lesetyps eine teilweise Neuversuchsantwort bereit, wie in Block 518 von 5 gezeigt ist. Danach kehrt der Prozess zu Block 516 zurück, der beschrieben wurde.
-
Wenn die Snoop-Maschine 311 in Block 516 keine konkurrierende Operation des Lesetyps erkannt hat, ermittelt die Snoop-Maschine 311 in Block 520, ob eine Zeitüberschreitung des Schiedsrichtermodus aufgetreten ist. In vielfältigen Ausführungsformen kann eine Zeitüberschreitung bei einem statischen vorgegebenen Zeitgeberwert oder alternativ bei einem dynamischen Wert auftreten, der auf der Grundlage von zum Beispiel einer Anzahl während des Schiedsrichtermodus empfangener konkurrierender Operationen des Lesetyps oder wenn ein Verhältnis einer Anzahl konkurrierender Operationen des Lesetyps zu einer Anzahl von Operation des Speichertyps erreicht wird, bestimmt wird. Als Reaktion auf ein Ermitteln in Block 520, dass beim Schiedsrichtermodus eine Zeitüberschreitung aufgetreten ist, wird der Prozess mit Block 528 fortgesetzt, der veranschaulicht, wie die Snoop-Maschine 311 den Schiedsrichtermodus verlässt (in 6 nicht abgebildet). Danach wird die Snoop-Maschine 311 in den Ruhezustand versetzt (Block 512 von 5). Wenn jedoch die Snoop-Maschine 311 in Block 520 ermittelt, dass beim Schiedsrichtermodus keine Zeitüberschreitung aufgetreten ist, ermittelt die Snoop-Maschine 311 in Block 522 ferner, ob eine auf die Zieladresse der zuvor verarbeiteten Operation des Lesetyps zielende Operation des Speichertyps empfangen wurde. Im Falle erheblicher Lesekonflikte gegenüber einem einzelnen Speichervorgang, der eine Blockierung löst, stellt eine solche Operation des Speichertyps wahrscheinlich das Hauptelement der vorigen Operation des Speichertyps dar, die eine teilweise Neuversuchsantwort empfangen hat, die erneut eine Operation des Speichertyps auf dieselbe Zieladresse ausgibt. Wenn die Snoop-Maschine 311 eine Operation des Speichertyps auf die Zieladresse der zuvor verarbeiteten Operation des Lesetyps erkennt, wird der Prozess mit Block 524 fortgesetzt, der nachstehend beschrieben wird. Wenn jedoch die Snoop-Maschine 311 keine Operation des Speichertyps auf dieselbe Zieladresse wie diejenige der zuvor verarbeiteten Operation des Lesetyps erkennt, wird der Prozess mit Block 516 fortgesetzt, der beschrieben wurde.
-
Unter Bezugnahme auf Block 524 verlässt die Snoop-Maschine 311 den Schiedsrichtermodus, was bedeutet, dass Operationen des Lesetyps wieder gegenüber Operationen des Speichertyps priorisiert werden. Das Verlassen des Schiedsrichtermodus wird bei der Bezugsziffer 612 von 6 veranschaulicht.
-
In Block 526 verarbeitet die Snoop-Maschine 311 die Operation des Speichertyps normal, indem zum Beispiel die Ziel-Cachespeicherzeile im Verzeichnis 308 für ungültig erklärt wird und abhängig vom Typ der Operation des Speichertyps dem anfragenden Hauptelement als Reaktion auf den Empfang einer KAnt, die einen Erfolg der Operation des Speichertyps angibt, eine Kopie der Ziel-Cachespeicherzeile bereitgestellt wird. Die Verarbeitung der Operation des Speichertyps durch eine andere Snoop-Maschine 311 ist in 6 bei Bezugsziffer 630 abgebildet. Der Fachmann wird jedoch erkennen, dass es in anderen Ausführungsformen möglich wäre, den Speichervorgang 626 von 6 ebenfalls durch die Snoop-Maschine verarbeiten zu lassen, die im Schiedsrichtermodus war. Ob es machbar oder vorteilhaft ist, dies zu tun, hängt von speziellen Realisierungsangelegenheiten ab, die von Ausführungsform zu Ausführungsform variieren. Danach kehrt der Prozess zu Block 512 zurück, der beschrieben wurde.
-
In alternativen Ausführungsformen des Prozesses von 5 mit einer granulareren Priorisierung zwischen Operationen des Lesetyps und des Speichertyps kann sich die Snoop-Maschine 311 dafür entscheiden, den Neuversuch von weniger als allen konkurrierenden Operationen des Lesetyps zu erzwingen, die während des Schiedsrichtermodus empfangen wurden (z.B. eine Hälfte oder drei Viertel). Weiterhin kann sich in zumindest manchen Ausführungsformen der Umfang des durch den Schiedsrichtermodus erzwungenen Neuversuchens auf eine Speicherregion erstrecken, die größer als eine einzige Cachespeicherzeile ist (z.B. eine Speicherseite oder ein Speicherblock anderer Größe). Weiterhin kann sich in zumindest manchen Ausführungsformen die Dauer des Schiedsrichtermodus über das Empfangen einer einzigen Operation des Speichertyps für die Ziel-Cachespeicherzeile, für die ein Konflikt vorhanden ist, hinaus erstrecken.
-
Wie beschrieben wurde, enthält ein Mehrfachprozessor-Datenverarbeitungssystem eine Vielzahl von Cachespeichern, die einen Cachespeicher enthalten. Als Reaktion auf ein Erkennen einer speichermodifizierenden Operation durch den Cachespeicher, die eine selbe Zieladresse wie diejenige einer ersten durch den Cachespeicher verarbeiteten Operation des Lesetyps angibt, stellt der Cachespeicher eine Neuversuchsantwort für die speichermodifizierende Operation bereit. Als Reaktion auf den Abschluss der Operation des Lesetyps tritt der Cachespeicher in einen Schiedsrichtermodus ein. Während er sich im Schiedsrichtermodus befindet, erhöht der Cachespeicher vorübergehend dynamisch eine Priorität irgendeiner speichermodifizierenden Operation, die auf die Zieladresse abzielt, im Verhältnis zu irgendeiner zweiten Operation des Lesetyps, die auf die Zieladresse abzielt.
-
Wie für den Fachmann ersichtlich ist, können Aspekte der vorliegenden Erfindung als ein System, Verfahren, Computerprogrammprodukt oder Computerprogramm ausgeführt werden. Dementsprechend können Aspekte der vorliegenden Erfindung in Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder in einer Ausführungsform ausgebildet werden, die Software- und Hardware-Aspekte kombiniert, was hierin sämtlich allgemein als „Schaltung“, „Modul“ oder „System“ bezeichnet sein kann. Weiterhin können Aspekte der vorliegenden Erfindung in Form eines Computerprogrammprodukts ausgebildet werden, das in einem oder mehreren computerlesbaren Medien mit darauf enthaltenem computerlesbarem Programmcode enthalten sein kann.
-
Jede beliebige Kombination aus einem oder mehreren computerlesbaren Medien kann verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel, ohne auf diese beschränkt zu sein, um ein System, eine Vorrichtung oder eine Einheit elektronischer, magnetischer, optischer, elektromagnetischer, Infrarot oder Halbleiter verwendender Art sowie jede beliebige geeignete Kombination des Vorgenannten handeln. Zu spezielleren Beispielen für das computerlesbare Speichermedium kann Folgendes gehören (nicht abschließende Liste): eine elektrische Verbindung mit einer oder mehreren Leitungen, eine transportable Computerdiskette, eine Festplatte, ein Speicher mit wahlfreiem Zugriff (random access memory (RAM)), ein Nur-Lese-Speicher (read-only memory (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (erasable programmable read-only memory (EPROM) oder Flash-Speicher), ein Lichtwellenleiter, ein transportabler Compact-Disk-Nur-Lese-Speicher (compact disc read-only memory (CD-ROM)), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination des Vorgenannten. Im Kontext dieses Dokuments kann es sich bei einem computerlesbaren Speichermedium um jedes gegenständliche Medium handeln, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zum Ausführen von Anweisungen beinhalten oder speichern kann.
-
Zu einem computerlesbaren Signalmedium kann ein verbreitetes Datensignal mit darin zum Beispiel in einem Basisband oder als Teil einer Trägerwelle ausgebildetem computerlesbarem Programmcode zählen. Solch ein verbreitetes Signal kann in jeder beliebigen einer Vielzahl von Formen vorliegen, wie beispielsweise, jedoch nicht beschränkt auf, elektromagnetische, optische oder jede geeignete Kombination davon. Bei einem computerlesbaren Signalmedium kann es sich um jedes computerlesbare Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Ausführung von Anweisungen übertragen, verbreiten oder transportieren kann.
-
In einem computerlesbaren Medium enthaltener Programmcode kann mittels eines beliebigen geeigneten Mediums übertragen werden, wie beispielsweise, jedoch nicht beschränkt auf, kabellose, kabelgebundene, Lichtwellenleiterkabel, HF (Hochfrequenz) usw., oder einer beliebigen geeigneten Kombination des zuvor Genannten.
-
Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination einer oder mehrerer Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie Java®, Smalltalk, C++ oder Ähnliches und herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf einem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jede beliebige Art von Netzwerk, darunter ein lokales Netzwerk (local area network (LAN)) oder ein Weitverkehrsnetzwerk (wide area network (WAN) verbunden sein, oder es kann eine Verbindung zu einem externen Computer (zum Beispiel mittels eines Internetdienstanbieters über das Internet) hergestellt werden. Java und alle auf Java gestützten Marken und Logos sind Marken oder eingetragen Marken von Oracle und/oder seinen verbundenen Unternehmen.
-
Aspekte der vorliegenden Erfindung werden nachstehend unter Bezugnahme auf Abbildungen von Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Abbildungen von Ablaufplänen und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Abbildungen von Ablaufplänen und/oder den Blockschaubildern durch Computerprogrammanweisungen realisiert werden kann. Diese Computerprogrammanweisungen können einem Prozessor eines universellen Computers, eines zweckbestimmten Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine so zu erzeugen, dass die Anweisungen, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Realisieren der im Block oder in den Blöcken des Ablaufplans und/oder Blockschaubildes angegebenen Funktionen/Handlungen erzeugen.
-
Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anleiten kann, auf eine bestimmte Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsartikel einschließlich Anweisungen erzeugen, welche die im Block oder in den Blöcken des Ablaufplans und/oder des Blockschaubildes angegebene Funktion/Handlung ausführen.
-
Die Computerprogrammanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Reihe von auf dem Computer, der anderen programmierbaren Vorrichtung oder den anderen Einheiten auszuführenden Operationsschritten hervorzurufen, um einen auf dem Computer realisierten Prozess so zu erzeugen, dass die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführten Anweisungen Prozesse zum Realisieren der im Block oder in den Blöcken des Ablaufplans und/oder Blockschaubildes angegebenen Funktionen/Handlungen bereitstellen.
-
Die Ablaufplan- und Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und die Arbeitsweise möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Ablaufplan- oder in den Blockschaubildern für ein Modul, ein Segment oder einen Codeabschnitt stehen, der eine oder mehrere ausführbare Anweisungen zum Realisieren der angegebenen logischen Funktion(en) aufweist. Es soll zudem angemerkt werden, dass bei einigen alternativen Realisierungen die im Block angegebenen Funktionen in anderer Reihenfolge als der in den Figuren angegebenen auftreten können. Zum Beispiel können zwei aufeinanderfolgend abgebildete Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal abhängig von der betreffenden Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es wird ebenfalls angemerkt, dass jeder Block der Blockschaubilder und/oder Abbildung von Ablaufplänen und Kombinationen von Blöcken in den Blockschaubildern und/oder der Abbildung von Ablaufplänen durch zweckbestimmte hardwaregestützte Systeme oder Kombinationen von zweckbestimmter Hardware und Computeranweisungen realisiert werden kann, welche die angegebenen Funktionen oder Handlungen durchführen.