-
Technisches Gebiet
-
Die vorliegende Erfindung betrifft Datenverarbeitungssysteme und insbesondere ein Beurteilen und Verringern von Latenz in einem Mehrprozessor-Datenverarbeitungssystem.
-
Hintergrund der Erfindung
-
Computertechnologie entwickelt sich weiterhin mit bemerkenswerter Geschwindigkeit, wobei zahlreiche Verbesserungen an der Leistung sowohl von Verarbeitungseinheiten – den „Gehirnen” eines Datenverarbeitungssystems – als auch an dem Speicher vorgenommen werden, in dem die von einem Datenverarbeitungssystem verarbeiteten Daten gespeichert werden.
-
Im Allgemeinen handelt es sich bei einer Verarbeitungseinheit („CPU”) um einen Mikroprozessor oder eine andere integrierte Schaltung, die mithilfe des Ausführens einer Sequenz von Anweisungen arbeitet, die ein Computerprogramm bilden. Die Anweisungen werden üblicherweise in einem Speichersystem mit einer Vielzahl von Speicherorten gespeichert, die durch eindeutige Speicheradressen gekennzeichnet sind. Die Speicheradressen definieren gemeinsam einen „Speicheradressraum”, der einen adressierbaren Bereich von Speicherbereichen darstellt, auf die ein Mikroprozessor zugreifen kann.
-
Parallel verarbeitende Datenverarbeitungssysteme enthalten häufig eine Vielzahl von Knoten, wobei jeder Knoten mindestens eine CPU enthält und die Vielzahl von Knoten miteinander verbunden sind, sodass die Datenverarbeitungsknoten untereinander Daten senden und empfangen und außerdem auf Speicher zugreifen können, der mit verschiedenen Knoten in dem System verbunden ist. Bei einem Datenverarbeitungssystem mit einer Vielzahl von CPUs und/oder einer Vielzahl von Knoten kann eine nicht einheitliche Speicherzugriffskonfiguration (non-uniform memory access, „NUMA”) verwendet werden, um den Hauptspeicher wirkungsvoll über mehrere Datenverarbeitungsknoten hinweg zu verteilen. Bei einer üblichen NUMA-Konfiguration sind mindestens eine CPU, ein oder mehrere CPU-Cachespeicher und ein Teil des Hauptspeichers (z. B. eine Menge von Speichereinheiten mit dynamischem Speicher mit wahlfreiem Zugriff (dynamic random access memory devices, DRAM-Speichereinheiten)) mit einem Speicherbus verbunden, um einen Knoten zu bilden. Üblicherweise ist eine Vielzahl von Knoten mittels einer Hochgeschwindigkeitsverbindung verbunden, um eine NUMA-Konfiguration zu bilden. Der Teil des Hauptspeichers, der sich in demselben Knoten wie eine CPU befindet, wird üblicherweise als der „lokale Speicher” für die CPU betrachtet, während Teile des Hauptspeichers, die sich in anderen Knoten befinden, üblicherweise im Verhältnis zur CPU als „entfernt angeordnete Speicher” bezeichnet werden. Bei einem Datenverarbeitungssystem mit einer NUMA-Konfiguration (einem „NUMA-System”) wird ein Datenzugriff von einer CPU, der durch den Inhalt eines lokalen CPU-Cachespeichers oder eines lokalen Speichers befriedigt wird, als ein Zugriff „auf einen lokalen Knoten” bezeichnet. Dementsprechend handelt es sich bei einem Zugriff auf einen „entfernt angeordneten” Knoten üblicherweise um einen Zugriff, der durch ein Zugreifen auf in einem entfernt angeordneten Knoten gespeicherte Daten befriedigt wird. Datenzugriffe auf entfernt angeordnete Knoten stehen im Vergleich zu Zugriffen auf lokale Knoten mit einer sehr hohen Latenz in Zusammenhang.
-
Üblicherweise greift, wenn ein Prozess in einem NUMA-System ausgeführt wird, die den Prozess ausführende CPU auf einen oder mehrere Speicherorte zu, um von dem Prozess benötigte Daten abzurufen. In NUMA-Systemen wird der Prozess üblicherweise schneller ausgeführt, wenn er dafür konfiguriert ist, die Operationen in einem Knoten auszuführen, bei dem sich die für den Betrieb erforderlichen Daten in einem lokalen Speicher befinden. In ähnlicher Weise kann ein in einem NUMA-System ausgeführter Prozess aufgrund der mit einem Zugreifen auf den entfernt angeordneten Knoten verbundenen erhöhten Latenz langsamer ausgeführt werden, wenn der Prozess dafür konfiguriert ist, die Aufgabe in einem lokalen Knoten auszuführen, wobei sich die für den Betrieb erforderlichen Daten in einem entfernt angeordneten Speicher befinden. Darüber hinaus kann bei in hohem Maß verteilten NUMA-Systemen (d. h., in NUMA-Systemen mit einer großen Anzahl miteinander verbundener Knoten) eine Latenz, die damit in Zusammenhang steht, dass ein Knoten aus einer Entfernung auf einen ersten Speicher in einem ersten entfernt angeordneten Knoten zugreift, im Vergleich zu der Latenz, die mit einem Fernzugriff auf einen zweiten Speicher in einem zweiten entfernt angeordneten Knoten in Zusammenhang steht, aufgrund der Länge des Übertragungswegs zwischen dem Knoten und den entsprechenden entfernt angeordneten Knoten, der auf jedem entsprechenden entfernt angeordneten Knoten konfigurierten Systemressourcen, der zur Zeit eines Fernzugriffs auf jedem entfernt angeordneten Knoten ausgeführten Prozesse, anderer Prozesse, die zur Zeit des Fernzugriffs auch einen Fernzugriff auf jeden Knoten versuchen und/oder anderer derartiger Gründe unterschiedlich sein.
-
Als solche weisen in verteilten Systemen, wozu zum Beispiel NUMA-Systeme zählen, nicht alle entfernt angeordneten Speicherorte eine gleiche Latenz für alle Prozessoren auf. Tatsächlich entstehen durch physische und virtuelle Positionen jedes Prozessors in einem bestimmten Knoten Unterschiede im Hinblick auf einen effizienten Zugriff auf verschiedene Bereiche im Speicher, eingeschlossen ein Übertragen von Daten zwischen Cachespeichern, die einem bestimmten Prozessor oder Knoten zugeordnet sind. Wenn zwei Prozessoren, die versuchen, wesentliche Operationen an Speichersegmenten zu bewältigen, relativ „entfernt angeordnet” sind, können die Operationen, durch die sie diese Segmente gemeinsam nutzen und auf sie zugreifen, deutlich weniger effizient sein.
-
Kurzdarstellung der Erfindung
-
Technisches Problem
-
Folglich existiert weiterhin ein Bedarf an einer Optimierung der Leistung eines Computersystems mit gemeinsam genutztem Speicher, die eine Speicherzugriffslatenz bei vorhandenen Systemen verringert.
-
Lösung des Problems
-
Durch Ausführungsformen der Erfindung werden eine Vorrichtung, ein Verfahren und ein Programmprodukt zum dynamischen Optimieren von Speicherzugriffen in einem Mehrprozessor-Datenverarbeitungssystem bereitgestellt. Bei einigen der Erfindung entsprechenden Ausführungsformen wird während des Ausführens eines oder mehrerer Prozesse durch einen oder mehrere Prozessoren des Datenverarbeitungssystems eine Speicherreferenz-Stichprobenentnahme (memory reference sampling) von Speicherorten eines gemeinsam genutzten Speichers des Datenverarbeitungssystems ausgeführt, wobei eine Vielzahl von Speicherreferenzen gesammelt wird und jeder während der Stichprobenentnahme gesammelten Speicherreferenz eine Latenz und eine Position eines entsprechenden Speichers in dem gemeinsam genutzten Speicher zugeordnet wird. Die Stichproben-Speicherreferenzen werden analysiert, um ein oder mehrere Segmente von einem oder mehreren Speicherorten in dem gemeinsam genutzten Speicher zu erkennen, denen eine sub-optimale Latenz zugeordnet ist. Auf der Grundlage der analysierten Speicherreferenzen werden eine physische Position des oder der erkannten Segmente, ein physischer Prozessor, auf dem mindestens einer der Prozesse ausgeführt wird, und/oder ein dem oder den erkannten Segmenten zugeordneter Status dynamisch angepasst. Bei einigen Ausführungsformen beinhaltet ein Analysieren der Stichproben-Speicherreferenzen (sampled memory references) ein Bewerten jeder Speicherreferenz auf der Grundlage der zum Abrufen der entsprechenden Segmente von Speicherorten benötigten Zeit.
-
Diese und andere Vorteile werden in Anbetracht der folgenden Figuren und der ausführlichen Beschreibung ersichtlich.
-
Die begleitenden Zeichnungen, die in diese Beschreibung einbezogen sind und einen Teil von ihr darstellen, veranschaulichen Ausführungsformen der Erfindung und dienen in Verbindung mit einer vorangehenden allgemeinen Beschreibung der Erfindung und der folgenden ausführlichen Beschreibung der Ausführungsformen zur Erläuterung der Grundgedanken der Erfindung.
-
Kurzbeschreibung der Zeichnungen
-
1 ist ein Blockschaltbild eines Datenverarbeitungssystems mit gemeinsam genutztem Speicher entsprechend Ausführungsformen der Erfindung;
-
2 ist ein Blockschaltbild eines Datenverarbeitungssystems mit gemeinsam genutztem Speicher entsprechend alternativen Ausführungsformen der Erfindung.
-
3 ist ein Ablaufplan, der eine Ausführungsform eines Logikflusses veranschaulicht, der in einem Optimierungsaffinitätsanpasser entsprechend einer Ausführungsform der Erfindung auftreten kann.
-
4 ist ein Ablaufplan, der eine Ausführungsformen der Erfindung entsprechende Sequenz von Operationen veranschaulicht, die von dem Datenverarbeitungssystem aus 1 ausgeführt werden kann, um auf eine Speicherreferenz zuzugreifen.
-
Es sollte beachtet werden, dass die angefügten Zeichnungen nicht zwangsläufig maßstabsgerecht, und dass sie eine etwas vereinfachte Darstellung verschiedener bevorzugter Merkmale sind, die die grundlegenden Gesichtspunkte der Erfindung veranschaulichen. Die besonderen Gestaltungsmerkmale der hier offenbarten Sequenz von Operationen, darunter beispielsweise spezifische Abmessungen, Ausrichtungen, Positionen und Formen verschiedener veranschaulichter Komponenten, werden zum Teil durch die spezielle vorgesehene Anwendung und Einsatzumgebung bestimmt. Bestimmte Merkmale der veranschaulichten Ausführungsformen können im Verhältnis zu anderen vergrößert oder verzerrt sein, um eine Visualisierung und ein klares Verständnis zu erleichtern.
-
Beschreibung von Ausführungsformen
-
Bei Ausführungsformen der Erfindung entsprechenden Datenverarbeitungssystemen unterstützt die Datenverarbeitungsarchitektur eine Stichprobenentnahme mit geringem Leistungsaufwand von referenzierten Speicherorten. Bei Ausführungsformen der Erfindung wird die Stichprobenentnahme verwendet, um pro Prozess und pro Seite eine Affinitätsbewertung zu ermitteln, um Speicherseiten dynamisch an einen effizienteren Speicherort in einem Knoten oder Prozesse zu einer effizienteren CPU in einem Knoten zu verschieben, um eine Affinitätslatenz zu verringern, wobei der Knoten, in dem die Speicherseite gespeichert ist oder der Prozess ausgeführt wird, als der „Heimat-”Knoten der Speicherseite oder des Prozesses betrachtet werden kann.
-
Bei einigen Ausführungsformen wird eine Speicherreferenz-Stichprobenentnahme an einem Speicherort ausgeführt. Bei einigen Ausführungsformen kann die Speicher-Stichprobenentnahme partitionsweit und/oder auf eine gewählte Menge ausgewählter Prozesse beschränkt sein. Des Weiteren können einige Stichprobenentnahme-Architekturen auch ermöglichen, dass die Stichprobenentnahme auf eine Menge von Objekten beschränkt wird. Zu den Stichprobendaten kann der „wirkliche” CEC-Speicherort (CEC = central electrical complex) der referenzierten Seite zählen. Bei der Erfindung entsprechenden Ausführungsformen können die gesammelten Stichprobendaten analysiert werden, um eine jeder Stichproben-Speicherreferenz zugeordnete Bewertung zu ermitteln. Darüber hinaus kann die zugeordnete Bewertung für jede Stichproben-Speicherreferenz zumindest zum Teil auf einer berechneten und/oder geschätzten Latenz beruhen, die der Stichproben-Speicherreferenz in Bezug auf die CPU und/oder den Knoten des referenzierenden Prozesses entspricht.
-
Bei der Erfindung entsprechenden Ausführungsformen können die Stichprobendaten (d. h. die Speicherreferenzdaten) statistisch analysiert werden, um eine Speicherreferenz zu ermitteln, der eine Bewertung zugeordnet ist, die eine hohe Latenz in Bezug auf alle Stichprobenobjekte, eine Teilmenge von Objekten, alle Stichprobenprozesse und/oder eine Teilmenge von Prozessen anzeigt. Des Weiteren kann bei einigen Ausführungsformen ein Analysieren der Stichprobendaten ein Erkennen eines oder mehrerer Prozesse beinhalten, die ähnliche Objektreferenzen aufweisen.
-
Darüber hinaus können bei einigen Ausführungsformen, zumindest zum Teil auf der Grundlage der Stichprobendaten, und/oder zugeordneter Bewertungen ein oder mehrere Prozesse erkannt werden, die bei Systemen mit Speicherpools von einem Verwenden eines gemeinsamen Speicherpools profitieren würden (z. B. effizienter, schneller usw. ausgeführt werden würden). Bei diesen Ausführungsformen kann das System als Reaktion auf ein Ermitteln, dass ein oder mehrere Prozesse von einem Verwenden eines gemeinsamen Speicherpools profitieren würden, die Speicherreferenzen des oder der Prozesse dynamisch ändern, damit sie den festgelegten Speicherpool referenzieren.
-
Bei einigen Ausführungsformen können, zumindest zum Teil auf der Grundlage der Stichprobendaten und/oder zugeordneter Bewertungen, ein oder mehrere Prozesse erkannt werden, die von einem Verwenden einer oder mehrerer erkannter CPUs und/oder eines oder mehrerer erkannter Knoten profitieren würden. Als Reaktion auf ein Ermitteln, dass der oder die Prozesse von einem Verwenden des oder der erkannten Knoten zur Ausführung profitieren würden, können Ausführungsformen der Erfindung den oder die Prozessoren, auf denen der oder die Prozesse ausgeführt werden, dynamisch ändern. Bei diesen Ausführungsformen kann ein Ermitteln, ob ein oder mehrere Prozesse von einem Verwenden eines oder mehrerer Knoten zur Ausführung profitieren würden, ein Erkennen, zumindest zum Teil auf der Grundlage der Stichprobendaten und/oder zugeordneter Bewertungen, des oder der Knoten aus einer Vielzahl von Knoten eines Systems beinhalten, auf dem die Prozesse ausgeführt werden sollen.
-
Darüber hinaus können bei einigen Ausführungsformen, zumindest zum Teil auf der Grundlage der Stichprobendaten, und/oder zugeordneter Bewertungen, eine oder mehrere Objektseiten erkannt werden, denen Bewertungen zugeordnet sind, die eine hohe Latenz anzeigen. Bei diesen Ausführungsformen können Ausführungsformen der Erfindung als Reaktion auf ein Erkennen von Objektseiten, denen Bewertungen zugeordnet sind, die eine hohe Latenz anzeigen, die Objektseiten dynamisch an günstigere (d. h. niedrigere Latenz) Speicherorte verschieben. Bei diesen Ausführungsformen können vor dem dynamischen Verschieben der Objektseite(n) zumindest zum Teil auf der Grundlage einer dem Speicherort zugeordneten Bewertung ein oder mehrere günstige Speicherorte ermittelt werden.
-
Des Weiteren kann bei einigen Ausführungsformen, zumindest zum Teil auf der Grundlage der Stichprobendaten und/oder zugeordneter Bewertungen, eine „hoch referenzierte” Objektseite (d. h. eine von einer Vielzahl von Prozessen referenzierte Objektseite) erkannt werden. Bei diesen Ausführungsformen kann, zumindest zum Teil auf der Grundlage der Stichprobendaten und/oder zugeordneter Bewertungen, ein günstigerer Speicherort für die hoch referenzierte Objektseite ermittelt werden, und die hoch referenzierte Objektseite kann dynamisch an den günstigeren Speicherort verschoben werden. Darüber hinaus kann bei einigen Ausführungsformen als Reaktion auf ein Verschieben der hoch referenzierten Objektseite an einen günstigeren Speicherort ein der hoch referenzierten Objektseite zugeordnetes Attribut so festgelegt werden, dass die hoch referenzierte Objektseite nicht von dem günstigeren Speicherort verschoben werden darf, oder so, dass ein Verschieben der hoch referenzierten Objektseite von dem günstigeren Speicherort möglicherweise beschränkt wird.
-
Ausführungsformen der Erfindung sammeln profilgesteuerte Speicherreferenzdaten (d. h. Stichprobendaten) für einen oder mehrere Prozesse. Bei einigen Ausführungsformen enthalten die Speicherreferenzdaten eine einem jeweiligen Prozess entsprechende Kennung, eine virtuelle Adresse jedes von einem entsprechenden Prozess referenzierten Speicherobjekts und/oder eine Speicher- und/oder Knotenkennung, die einem physischen Speicherort jedes referenzierten Speicherobjekts entspricht. Ein Ausführungsformen der Erfindung entsprechendes Datenverarbeitungssystem kann jedes von einem entsprechenden Prozess referenzierte Speicherobjekt analysieren und eine Bewertung ermitteln, die dem referenzierten Objekt in Bezug auf den entsprechenden Prozess zugeordnet wird. Die ermittelte Bewertung kann zumindest zum Teil auf einer ermittelten und/oder geschätzten Latenz des referenzierten Objekts in Bezug auf den entsprechenden Prozess beruhen. Das Datenverarbeitungssystem kann die Bewertungs- und/oder Speicherreferenzdaten analysieren, um zu ermitteln, ob der entsprechende Prozess besser (d. h. effizienter, schneller usw.) auf einer anderen CPU und/oder einem anderen Knoten ausgeführt werden würde als auf der CPU/dem Knoten, auf dem der entsprechende Prozess aktuell ausgeführt wird. Als Reaktion auf ein Ermitteln, dass der entsprechende Prozess besser auf einer anderen CPU/einem anderen Knoten ausgeführt werden würde, kann das Datenverarbeitungssystem den entsprechenden Prozess dynamisch zu der anderen CPU/dem anderen Knoten zur Ausführung durch diese(n) verschieben.
-
Ausführungsformen der Erfindung sammeln profilgesteuerte Speicherreferenzdaten für einen oder mehrere Prozesse. Ein Ausführungsformen der Erfindung entsprechendes Datenverarbeitungssystem kann eine oder mehrere Speicherobjektreferenzen von einem oder mehreren Prozessen analysieren und eine Bewertung ermitteln, die dem oder den referenzierten Objekten in Bezug auf die Prozesse zugeordnet ist. Das Datenverarbeitungssystem kann die Bewertungen und/oder referenzierten Objekte analysieren, um ein oder mehrere Speicherobjekte zu ermitteln, die üblicherweise von einer Vielzahl von Prozessen referenziert werden. Das Datenverarbeitungssystem kann Berichtsdaten erstellen, die anzeigen, welche Prozesse die üblicherweise referenzierten Objekte referenzieren. Die erstellten Berichtsdaten können von dem Datenverarbeitungssystem verwendet werden, um Prozesse, die die üblicherweise referenzierten Objekte gemeinsam nutzen, zeitlich so zu planen, dass sie gleichzeitig und/oder nacheinander ausgeführt werden. Bei diesen Ausführungsformen kann eine derartige Zeitplanung eine Latenz eines Prozesses oder mehrerer Prozesse und der gemeinsam referenzierten Objekte verringern, die Wahrscheinlichkeit sekundärer Paging-Aktionen (E/A) und/oder deren Latenz verringern, kann die Effizienz der Ausführung eines oder mehrerer der Prozesse verbessern und/oder zu einer effizienteren Ausführung führen. Darüber hinaus können bei einigen Ausführungsformen die Berichtsdaten von dem Datenverarbeitungssystem analysiert werden, um ein oder mehrere Speicherobjekte der üblicherweise referenzierten Objekte zu erkennen, die an einen anderen Speicherort verschoben werden können, um so eine Latenz zu verringern, die dem oder den gemeinsam referenzierten Speicherobjekten in Bezug auf den oder die Prozesse zugeordnet ist. Darüber hinaus können bei einigen Ausführungsformen die Berichtsdaten von dem Datenverarbeitungssystem analysiert werden, um einem oder mehreren Prozessen zugeordnete Daten anzupassen, sodass die Prozesse während der Ausführung bevorzugt ein oder mehrere Speicherobjekte referenzieren.
-
Durch Ausführungsformen der Erfindung werden eine Vorrichtung, ein Verfahren und ein Programmprodukt zum dynamischen Optimieren von Speicherzugriffen in einem Mehrprozessor-Datenverarbeitungssystem durch Ausführen einer Speicherreferenz-Stichprobenentnahme von Speicherorten eines gemeinsam genutzten Speichers bereitgestellt, die von einer Vielzahl von Prozessen referenziert werden, die von einer Vielzahl physischer Prozesse ausgeführt werden. Jeder aus einer Vielzahl während einer Speicherreferenz-Stichprobenentnahme gesammelter Stichproben-Speicherreferenzen wird eine Latenz und eine physische Position in dem gemeinsam genutzten Speicher zugeordnet. Die während der Speicherreferenz-Stichprobenentnahme gesammelten Stichproben-Speicherreferenzen werden dann analysiert, um mindestens ein Segment von Speicherorten in dem gemeinsam genutzten Speicher mit einer sub-optimalen Latenz zu erkennen. Auf der Grundlage der Analyse passt das System eine physische Position des erkannten Segments in dem gemeinsam genutzten Speicher, einen physischen Prozessor, auf dem mindestens ein Prozess ausgeführt wird, der Speicherorte in dem erkannten Segment referenziert, und/oder einen dem erkannten Segment zugeordneten Status an.
-
Bei einigen Ausführungsformen der Erfindung werden die Latenzen auf der Grundlage der zum Abrufen der entsprechenden Segmente von Speicherorten benötigten Zeit bewertet. Die Zeit kann gemessen werden, oder sie kann geschätzt werden. Das erkannte Segment oder die erkannten Segmente können auf der Grundlage von Latenzbewertungen erkannt werden.
-
Bei einigen Ausführungsformen der Erfindung ist das erkannte Segment eine einer Cachespeicherseite zugeordnete Cachespeicherzeile. Das Verfahren kann ein Anpassen einer Position von mindestens einem Teil der Cachespeicherseite beinhalten, sodass eine zukünftige Latenz, die mit einem zukünftigen Abrufen des Teils der Cachespeicherseite in Zusammenhang steht, verringert wird. Dies kann ein Übertragen des Teils der Cachespeicherseite aus einem ersten Cachespeicher in einen zweiten Cachespeicher oder von einem ersten Knoten zu einem zweiten Knoten beinhalten. Die Cachespeicherseite kann außerdem mindestens zwei Cachespeicherzeilen enthalten.
-
Bei einer weiteren Ausführungsform der Erfindung wird eine Cachespeicherseite mithilfe des Speichersegments erkannt, wie auch ein Ausführungsort eines dem Segment zugeordneten Objekts. Die Position des Objekts wird angepasst, sodass eine zukünftige Latenz verringert wird, die mit einem zukünftigen Abrufen mindestens eines Teils der Cachespeicherseite durch das Objekt in Zusammenhang steht. Bei einer bestimmten Ausführungsform ist das Objekt mindestens ein Teil eines von dem Datenverarbeitungssystem ausgeführten Prozesses.
-
Einige Ausführungsformen der Erfindung beinhalten ein Übertragen von mindestens einem Teil eines Prozesses, der Speicherorte in dem erkannten Segment referenziert, von einer ersten Verarbeitungseinheit zu einer zweiten Verarbeitungseinheit.
-
Andere Ausführungsformen beinhalten ein Übertragen von mindestens einem Teil eines Prozesses, der Speicherorte in dem erkannten Segment referenziert, von einem ersten Knoten zu einem zweiten Knoten.
-
Noch andere beinhalten ein Erkennen sowohl einer ersten Cachespeicherseite, der das erkannte Segment zugeordnet ist, als auch einer zweiten Cachespeicherseite, der eine Teilmenge der Speicheranforderungen für die Vielzahl von Segmenten von Speicherorten zugeordnet ist, und anschließend ein Zuweisen eines „verbesserten Status” für die zweite Cachespeicherseite, der anzeigt, dass ein Übertragen der zweiten Cachespeicherseite mindestens einen Schritt mehr erfordert als ein Übertragen der ersten Cachespeicherseite.
-
Hardware- und Softwareumgebung
-
Es wird jetzt auf die Figuren Bezug genommen, in denen die gleichen Zahlen in den verschiedenen Ansichten die gleichen Teile bezeichnen. 1 ist ein Blockschaltbild eines Datenverarbeitungssystems 10 mit gemeinsam genutztem Speicher entsprechend Ausführungsformen der Erfindung. Das Datenverarbeitungssystem 10 mit gemeinsam genutztem Speicher kann bei bestimmten Ausführungsformen ein Computer, ein Computersystem, eine Datenverarbeitungseinheit, ein Server, ein Platten-Array oder eine programmierbare Einheit wie beispielsweise ein Mehrbenutzercomputer, ein Einzelbenutzercomputer, eine Handheld-Einheit, eine Netzwerkeinheit (eingeschlossen ein Computer in einer Cluster-Konfiguration), ein Mobiltelefon, eine Videospielkonsole oder ein anderes Spielsystem usw. sein. Das Datenverarbeitungssystem 10 mit gemeinsam genutztem Speicher kann als ein „Datenverarbeitungssystem” bezeichnet werden, wird aber nachfolgend der Kürze halber als ein „Computer” bezeichnet. Bei einer geeigneten Realisierung des Computers 10 kann es sich um einen Mehrbenutzercomputer handeln, beispielsweise einen Computer wie er bei International Business Machines Corporation („IBM”) aus Armonk, NY, erhältlich ist.
-
Der Computer 10 enthält im Allgemeinen eine oder mehrere Verarbeitungseinheiten 12, die mit einem Speicher-Teilsystem verbunden sind, das außerdem ein Cachespeicher-Teilsystem 14, einen Speicher 15 und einen Hauptspeicher 16 enthalten kann. Das Cachespeicher-Teilsystem 14 kann aus dynamischem Speicher mit wahlfreiem Zugriff (dynamic random access memory, „DRAM)”, statischem Speicher mit wahlfreiem Zugriff (static random access memory, „SRAM”), Flash-Speicher und/oder einem anderen digitalen oder Solid-State-Speichermedium bestehen, das üblicherweise eine oder mehrere Datenebenen aufweist, Anweisungs- und/oder kombinierte Cachespeicher, wobei bestimmte Cachespeicher die Verarbeitungseinheiten 12 auf eine nach dem Stand der Technik gut bekannte Weise in Form einer gemeinsamen Nutzung bedienen. Bei bestimmten Ausführungsformen enthält das Cachespeicher-Teilsystem 14 den gemeinsam genutzten Speicher 15 (z. B. einen Level-drei-Cachespeicher [„L3-Cachespeicher”] und/oder einen Level-vier-Cachespeicher [„L4-Cachespeicher”]) und/oder ein anderes digitales Speichermedium, das von den Verarbeitungseinheiten 12 des Knotens gemeinsam genutzt werden kann, wie in der Technik gut bekannt ist. Der Hauptspeicher 16 kann ein Festplattenlaufwerk und/oder ein anderes digitales Speichermedium aufweisen. Darüber hinaus kann, wie nachfolgend erörtert wird, jede Verarbeitungseinheit 12 mindestens einen Verarbeitungskern und mindestens eine Ebene dedizierten Cachespeicher aufweisen.
-
Der Hauptspeicher 16 kann mit einer Anzahl von externen Einheiten (z. B. E/A-Einheiten) über einen Systembus 18 und eine Vielzahl von Schnittstelleneinheiten verbunden sein, z. B. eine Eingabe/Ausgabe-Busanschluss-Schnittstelle 20, einen Arbeitsplatz-Controller 22 und/oder einen Speicher-Controller 24, die jeweils einen externen Zugriff auf ein oder mehrere externe Netzwerke 26, einen oder mehrere Arbeitsplätze 28, und/oder eine oder mehrere Speichereinheiten bieten wie beispielsweise eine Direktzugriffs-Speichereinheit (direct access storage device, „DASD”) 30. Der Systembus 18 kann außerdem mit einem Benutzereingang (nicht gezeigt) verbunden sein, der von einem Benutzer des Computers 10 zum Eingeben von Daten betätigt werden kann (z. B. kann der Benutzereingang eine Maus, eine Tastatur usw. aufweisen), und mit einer Anzeige (nicht gezeigt), die dazu dient, Daten aus dem Computer 10 anzuzeigen (z. B. kann die Anzeige ein CRT-Monitor, eine LCD-Anzeigekonsole usw. sein). Der Computer 10 kann auch als ein Element einer verteilten Datenverarbeitungsumgebung konfiguriert sein und mit anderen Elementen dieser verteilten Datenverarbeitungsumgebung über das Netzwerk 26 Daten austauschen.
-
Der Computer 10 enthält mindestens einen Speicheranforderer (memory requester) zum Anfordern einer Cachespeicherzeile, der von einem gemeinsamen Cachespeicher (z. B. dem Cachespeicher-Teilsystem 14 und/oder dem Cachespeicher mindestens einer Verarbeitungseinheit 12) bedient wird, wie nach dem Stand der Technik gut bekannt ist. Zum Beispiel kann der Computer 10 aus 1 eine oder mehrere Verarbeitungseinheiten 12 enthalten, die von einem gemeinsamen Cachespeicher bedient werden, während jede Verarbeitungseinheit 12 einen oder mehrere Speicheranforderer enthalten kann, die von einem gemeinsamen Cachespeicher (z. B. dem Cachespeicher-Teilsystem 14, dem Hauptspeicher 16 und/oder einem Speicher in der Verarbeitungseinheit 12) bedient werden. Bei bestimmten Ausführungsformen können zu den Anforderern (requesters) in dem Computer 10 mindestens eine Verarbeitungseinheit 12, eine Komponente einer Verarbeitungseinheit 12 (z. B. ein Level-eins-Cachespeicher, ein Level-zwei-Cachespeicher, ein E/A-Controller oder eine andere Komponente einer Verarbeitungseinheit 12 wie nachfolgend beschrieben) und/oder ein Kern einer Verarbeitungseinheit 12 (wie auch ein Hardware-Thread eines Kerns) zählen.
-
Der Computer 10 ist lediglich repräsentativ für eine geeignete Umgebung zur Verwendung mit Ausführungsformen der Erfindung, und Ausführungsformen der Erfindung können in verschiedenen anderen alternativen Umgebungen verwendet werden. 2 ist zum Beispiel ein Blockschaltbild eines alternativen Datenverarbeitungssystems 40 mit gemeinsam genutztem Speicher entsprechend Ausführungsformen der Erfindung. Das alternative Datenverarbeitungssystem 40 mit gemeinsam genutztem Speicher, hier nachfolgend als „System” 40 bezeichnet, kann eine Vielzahl von Verarbeitungsknoten 42 enthalten, die jeweils mindestens eine Verarbeitungseinheit 12, einen Speicher 44 und eine Netzwerkschnittstelle 46 aufweisen. Die Netzwerkschnittstelle 46 kann wiederum mit mindestens einem Netzwerk 48, 50 Daten austauschen, und die Netzwerkschnittstelle 46 kann insbesondere dafür konfiguriert sein, mit mindestens einem Intra-Knoten-Netzwerk 50 Daten auszutauschen, das fest der Datenübertragung zwischen den Verarbeitungsknoten 42 zugeordnet ist. Jeder Verarbeitungsknoten 42 kann mit einem Betriebssystem 52 und einer Anwendung (nicht gezeigt) konfiguriert sein. Bei typischen Ausführungsformen ist jeder der Verarbeitungsknoten 42 dafür konfiguriert, mit der Anwendung mindestens eine Aufgabe zu empfangen und zu verarbeiten, und daher sind die Verarbeitungsknoten 42 gemeinsam dafür konfiguriert, den Hauptteil der Arbeit des Systems 40 auszuführen. Bei einigen Ausführungsformen können jedoch einige Verarbeitungsknoten 42 als dedizierte E/A-Knoten konfiguriert sein und daher eine Schnittstelle zwischen einer Teilmenge oder „Gruppe” von Verarbeitungsknoten 42 und dem/den Netzwerk(en) 48, 50 unterhalten. Darüber hinaus können E/A-Knoten dazu dienen, Prozessauthentifizierungs- und -autorisierungs, Task-Accounting, Fehlerbehebungs-, Problemlösungs-, Start- und Konfigurationsoperationen auszuführen wie nach dem Stand der Technik gut bekannt ist. Auf diese Weise kann die Gesamtarbeit für eine Gruppe von Verarbeitungsknoten 42 vereinfacht und zusätzliche Belastungen für jeden aus der Gruppe von Verarbeitungsknoten 42 können vermieden werden, die bei einer Verbindung mit der Gesamtheit der Verarbeitungsknoten 42 und dem Rest des Systems 40 entstehen würden. Jeder Verarbeitungsknoten 42 kann mehr als eine Verarbeitungseinheit 12 enthalten, und bei bestimmten Ausführungsformen kann jeder Knoten zwei oder vier Verarbeitungseinheiten 12 enthalten wie nach dem Stand der Technik gut bekannt ist.
-
Das System 40 kann einen oder mehrere Verwaltungsknoten 54 enthalten, in denen Compiler, Linker, Ladeprogramme sowie andere Programme zum Interagieren mit dem System 40 gespeichert sind. Auf die Verwaltungsknoten 54 kann ein Benutzer an einem Arbeitsplatz 56 zugreifen, der von mindestens einem Verwaltungsknoten 54 gesteuert wird. Auf diese Weise kann der Benutzer ein oder mehrere Programme zum Kompilieren, Aufgaben zum Ausführen, Ausführungskontexte, Arbeitslasten (workloads), Teile einer Arbeitslast oder Jobs an einen oder mehrere Dienstknoten 58 des Systems 40 abschicken. Die Verwaltungsknoten 54 können jeweils mindestens eine Verarbeitungseinheit und einen Speicher auf ähnliche Weise wie bei den Verarbeitungsknoten 42 zum Ausführen zusätzlicher Funktionen aufweisen, die aus Gründen der Effizienz oder anderen Gründen möglicherweise am besten außerhalb der Verarbeitungsknoten 42 oder Dienstknoten 58 ausgeführt werden. Beispielsweise können interaktive Dateneingabe, Bearbeiten von Softwarecode, Kompilieren von Softwarecode und/oder andere Benutzerschnittstellenfunktionen von den Verwaltungsknoten 54 gehandhabt werden.
-
Die Dienstknoten 58 können Datenbanken und Verwaltungswerkzeuge für das System 40 enthalten. Die Datenbanken können Statusinformationen für die Verarbeitungsknoten 42 unterhalten, darunter die aktuelle, die Verarbeitungsknoten 42 übergreifende Zeitplanung von Aufgaben, während mithilfe der Verwaltungswerkzeuge die Zeitplanung und das Laden von Programmen, Aufgaben, Daten und Jobs auf die Verarbeitungsknoten 42 gesteuert wird, darunter das Laden von Programmen, Aufgaben, Daten und Jobs auf jede Verarbeitungseinheit 12 jedes Verarbeitungsknotens 42. Als solche können die Dienstknoten 58 bei einigen Ausführungsformen eine Gruppe von Verarbeitungsknoten 42 aus der Vielzahl von Verarbeitungsknoten 42 sammeln und der Gruppe von Datenverarbeitungsknoten 12 mindestens eine Aufgabe, einen Job, eine Anwendung, einen Teil einer Arbeitslast, einen Ausführungskontext oder ein Programm zur Ausführung zuteilen. Im Folgenden werden hier die mindestens eine Aufgabe, der mindestens eine Job, die mindestens eine Arbeitslast, der mindestens eine Teil einer Arbeitslast, der mindestens eine Ausführungskontext oder das mindestens eine Programm der Kürze halber als eine „Aufgabe” bezeichnet. Eine Aufgabe kann zur Ausführung über das Netzwerk 48 und/oder 50 und durch die E/A-Knoten zu einem Verarbeitungsknoten 42 übermittelt werden. Die Funktionalität der Verwaltungsknoten 54 und/oder Dienstknoten 58 kann in einem Steuerungs-Teilsystem kombiniert werden, das dazu dient, Jobs für die Verarbeitungsknoten 42 zu empfangen, zu verwalten, zeitlich zu planen, neu zu verteilen und auf andere Weise zu steuern.
-
Die Verwaltungsknoten 54 und/oder die Dienstknoten 58 können jeweils eine Gruppe von Verarbeitungsknoten 42 sowie mindestens einen E/A-Knoten enthalten. Auf diese Weise können die Verwaltungsknoten 54 und/oder die Dienstknoten 58 durch das Intra-Knoten-Netzwerk 50 wie auch das Netzwerk 48 intern mit den Verarbeitungsknoten 42 verbunden sein. Alternativ können die Verwaltungsknoten 54 und/oder die Dienstknoten 58 jeweils eine Gruppe von Verarbeitungsknoten 42 und mindestens einen E/A-Knoten separat von den Verarbeitungsknoten 42 enthalten (d. h., die Verwaltungsknoten 54 und/oder die Dienstknoten 58 können als eigenständige Knoten konfiguriert sein). Darüber hinaus können die Verwaltungsknoten 54 und/oder die Dienstknoten 58 jeweils einen Verarbeitungsknoten 42 enthalten. Ein oder mehrere externe Ressourcenserver 60 können Server sein, auf die über das Netzwerk 48 zugegriffen werden kann und die dafür konfiguriert sind, Schnittstellen zu verschiedenen Datenspeichereinheiten bereitzustellen wie beispielsweise Festplattenlaufwerken 61, optischen Laufwerken (z. B. CD-ROM-Laufwerken, CD-R/RW-Laufwerken, DVD+/–R/RW-Laufwerken, Blu-Ray-Laufwerken, holografischen Speicherlaufwerken usw.), Solid-State-Speicherlaufwerken oder anderen E/A-Einheiten, Ressourcen oder Komponenten, auf die wegen Daten und/oder zum Verarbeiten einer Aufgabe zugegriffen werden kann.
-
In einer ähnlichen Weise wie bei dem Computer 10 kann der Speicher 44 jedes Verarbeitungsknotens 42 ein Cachespeicher-Teilsystem enthalten, das aus DRAM, SRAM, Flash-Speicher und/oder einem anderen digitalen oder Solid-State-Speichermedium bestehen kann. Außerdem kann der Speicher 44 jedes Verarbeitungsknotens 42 überdies einen Hauptspeicher aufweisen, der ein Festplattenlaufwerk und/oder ein anderes digitales Speichermedium aufweist. Ebenfalls in ähnlicher Weise kann das Cachespeicher-Teilsystem eine oder mehrere Ebenen von Daten, Anweisungs- und/oder kombinierten Cachespeichern aufweisen, wobei bestimmte Cachespeicher die Verarbeitungseinheiten 12 in der Art einer gemeinsamen Nutzung bedienen wie es nach dem Stand der Technik gut bekannt ist.
-
Ein Knoten ist unabhängig davon, ob er als ein Verarbeitungsknoten 42, ein E/A-Knoten, ein Verwaltungsknoten 54 oder ein Dienstknoten 58 konfiguriert ist, ein Teil des Systems 40, der einen oder mehrere Anforderer für Cachespeicherzeilen aufweist und von einem gemeinsam genutzten Cachespeicher (z. B. dem Speicher 44 oder einem Cachespeicher in mindestens einer Verarbeitungseinheit 12 des Knotens 42) bedient wird wie nach dem Stand der Technik gut bekannt ist. Bei bestimmten Ausführungsformen können die Anforderer in dem System 40 einen Verarbeitungsknoten 42 (im Folgenden „Knoten” 42) aufweisen, einen Speicher 44 eines Knotens, mindestens eine Verarbeitungseinheit 12, eine Komponente einer Verarbeitungseinheit 12 (z. B. einen Cachespeicher- und/oder E/A-Controller wie nachfolgend offenbart) und/oder einen Kern einer Verarbeitungseinheit 12 (wie auch einen Hardware-Thread eines Kerns). Bei bestimmten Ausführungsformen kann jeder Knoten 42 dafür konfiguriert sein, eine Arbeitslast und/oder eine oder mehrere Aufgaben zu verarbeiten und mit den anderen Knoten 42 durch die entsprechenden Netzwerkschnittstellen 46 zusammenzuarbeiten, um eine Arbeitslast und/oder die Aufgabe(n) auf eine parallele Weise zu verarbeiten wie nach dem Stand der Technik gut bekannt ist. Obwohl eine Netzwerkschnittstelle 46 in 2 gezeigt wird, kann jeder Knoten 42 eine Vielzahl von Netzwerkschnittstellen 46 oder anderen Netzwerkverbindungen enthalten. Als solcher kann jeder Knoten 42 dafür konfiguriert sein, Daten zu dem System 40 oder anderen Knoten 42 durch verschiedene Netzwerke zu übertragen, darunter das Intra-Knoten-Netzwerk 50. Beispielsweise kann jeder Knoten 42 Daten zu jedem anderen Knoten 42 durch ein Torus-Netzwerk übertragen. Darüber hinaus können verschiedene Knoten 42 speziell für das Ausführen verschiedener Funktionen konfiguriert sein. Beispielsweise können einige Knoten 42 des Systems 40 als Datenverarbeitungsknoten konfiguriert sein (z. B. dafür, eine Arbeitslast und/oder mindestens eine Aufgabe zu empfangen und diese Arbeitslast und/oder mindestens eine Aufgabe zu verarbeiten), als E/A-Knoten (z. B. dafür, die Datenübertragungen zu und/oder von jedem Datenverarbeitungsknoten und dem Rest des Systems 40 zu verwalten), Verwaltungsknoten (z. B. dafür, das System 40 zu verwalten und eine Arbeitslast und/oder mindestens eine Aufgabe zu empfangen) und/oder Dienstknoten (z. B. dafür, das System 40 zu überwachen, eine Arbeitslast zeitlich einzuplanen und/oder die Knoten 42 zu unterstützen). Als solches und bei einigen Ausführungsformen kann das System 40 eine Architektur aufweisen, die einem gemeinsam genutzten Power System-Datenverarbeitungssystem entspricht wie es von IBM vertriebenen wird. Bei alternativen Ausführungsformen kann das System 40 eine Architektur aufweisen, die einer Architektur eines parallelen Datenverarbeitungssystems BlueGene entspricht wie es von IBM entwickelt wurde. Bei alternativen Ausführungsformen kann das System 40 eine Architektur aufweisen, die einer Architektur eines parallelen RoadRunner-Datenverarbeitungssystems entspricht wie es ebenfalls von IBM entwickelt wurde. Darüber hinaus und bei anderen alternativen Ausführungsformen kann das System 40 eine Architektur aufweisen, die einem Datenverarbeitungssystem mit einem nicht einheitlichen Speicherzugriff (non-uniform memory access, „NUMA”) und/oder einem Cachespeicher-kohärenten NUMA (cache coherent NUMA, „ccNUMA”) entspricht wie es nach dem Stand der Technik gut bekannt ist. Knoten können auf einer Anzahl verschiedener Ebenen in einer gemeinsam genutzten Mehrebenen-Speicherarchitektur definiert werden und müssen bei einigen Ausführungsformen nicht auf der Grundlage irgendeiner physischen Zuordnung oder Abgrenzung voneinander unterschieden werden. Tatsächlich können bei einigen Ausführungsformen mehrere Knoten physisch auf demselben Computer, auf derselben Karte oder sogar in derselben integrierten Schaltung angeordnet sein.
-
Wie durch 1 und 2 veranschaulicht wird, können der Computer 10 sowie jeder Knoten 42 eine oder mehrere Verarbeitungseinheiten 12 enthalten. Während des Betriebs können verschiedene in Cachespeicherzeilen geordnete Anweisungen und/oder Daten zum Verarbeiten einer Aufgabe verwendet werden. Bei einigen Ausführungsformen sind die Cachespeicherzeilen Abschnitte von Daten aus einem Speicherbereich des Computers 10 und/oder des Systems 40. Bei Datenverarbeitungssystemen mit gemeinsam genutztem Speicher (z. B. dem Computer 10 und/oder dem System 40) können gemeinsam genutzte Daten in den Cachespeicherzeilen und daher im weiteren Sinne die Cachespeicherzeilen selbst mithilfe von Synchronisationsoperationen, darunter Synchronisationsoperationen, die Daten in den Cachespeicherzeilen zum Aktualisieren derartiger Daten sperren, wie auch Synchronisationsoperationen, die Daten in den Cachespeicherzeilen (der Kürze halber und sofern nicht anders angegeben, versteht sich, dass sich eine Bezugnahme auf eine „Cachespeicherzeile” in der gesamten vorliegenden Offenbarung auf alle oder einfach eine Teilmenge der Daten der Cachespeicherzeile beziehen kann) atomar aktualisieren, gelesen, abgeändert und/oder freigegeben werden.
-
Bei bestimmten Ausführungsformen wird eine Cachespeicherzeile durch Setzen einer Sperrvariablen der Cachespeicherzeile auf einen gesetzten Wert gesperrt. Wenn ein dieser Cachespeicherzeile zugehöriger kritischer Bereich fertiggestellt ist, wird die Sperrvariable in ihren ursprünglichen Zustand zurückversetzt (z. B. ein freier Wert), und andere Anforderer können versuchen, eine Sperre auf diese Cachespeicherzeile zu akquirieren. Daher werden bei bestimmten Ausführungsformen eine Akquisitionsoperation und eine Freigabeoperation gepaart, um eine Cachespeicherzeile zumindest während eines kritischen Bereichs der Ausführung jeweils zu sperren und freizugeben.
-
Darüber hinaus kann das System bei einigen Ausführungsformen einen Profiler aufweisen, der sich mit Stichprobenentnahme beschäftigt. Wie in 2 gezeigt kann der Dienstknoten 58 eine oder mehrere Verarbeitungseinheiten 12 und einen Speicher 44 enthalten, wobei der Speicher 44 des Dienstknotens 58 Programmcode enthalten kann, der sich auf einen Profiler 62 bezieht, der entsprechend einigen Ausführungsformen der Erfindung in ihm gespeichert ist. Ein Anpasser gemäß der vorliegenden Erfindung kann in Verbindung mit einem vorhandenen Stichprobenentnahme-Profiler arbeiten, um eine Speicherreferenz-Stichprobenentnahme auszuführen, wobei er ausreichend Daten zum Erkennen von Speicherreferenzen mit hoher Latenz bereitstellt. Beispielsweise und unter Bezugnahme auf 2 kann der Dienstknoten 58 Programmcode enthalten, der sich auf einen Anpasser 63 bezieht, der entsprechend einigen Ausführungsformen der Erfindung in ihm gespeichert ist. Als solche kann/können bei einigen Ausführungsformen die Verarbeitungseinheit(en) 12 des Dienstknotens 58 den Profiler 62 und/oder Anpasser 63 ausführen, sodass die Verarbeitungseinheiten des Dienstknotens 58 Schritte ausführen, die Ausführungsformen der Erfindung entsprechen. Obwohl in 2 der Profiler 62 und der Anpasser 63 als Programmcode veranschaulicht sind, der Operationen enthält, die von den Verarbeitungseinheiten 12 ausgeführt werden können, um Schritte auszuführen, die Ausführungsformen der Erfindung entsprechen, ist die Erfindung nicht darauf beschränkt. Beispielsweise können bei einigen Ausführungsformen der Profiler 62 und/oder der Anpasser einen oder mehrere Spezialprozessoren aufweisen, die dafür konfiguriert sind, Schritte entsprechend Ausführungsformen der Erfindung auszuführen, wobei die Spezialprozessoren dem Dienstknoten 58 zugeordnet sein können und/oder der oder den mit dem Netzwerk 48 verbundenen Einheiten zugeordnet sein können, darunter z. B. der Verwaltungsknoten 54, die externen Ressourcen 60, die Verarbeitungsknoten 42 und/oder der Arbeitsplatz 56. Der Anpasser kann einen Analyse- und Systemanpassungsprozess ausführen wie in dem Ablaufplan aus 3 gezeigt wird.
-
Eine Speicherreferenz-Stichprobenentnahme (Block 102) kann in Übereinstimmung mit einem Speicher-Profiler ausgeführt werden. Beispielsweise enthält die POWER-Architektur von IBM Speicherreferenz-Stichprobenentnahme als ein Diagnoseverfahren mit geringem Aufwand. Der Profiler und der Anpasser können auf Dienstknoten 58 ausgeführt werden, wie es im Vorangehenden in Bezug auf das Mehrknotensystem 40 beschrieben wird. Jede Referenz-Stichprobe enthält Informationen hinsichtlich des referenzierten Speichers und des die Referenz aufrufenden Prozesses. Zu diesen Informationen können Speicheraffinitätsdaten für die der Referenz zugeordnete Seite zählen, die physische Position des referenzierten Speichersegments und die dem referenzierenden Prozess zugeordnete Verarbeitungseinheit und der dem referenzierenden Prozess zugeordnete Knoten.
-
Jeder Speicherreferenz kann eine Bewertung zugewiesen werden, die die der Referenz zugeordnete Latenz repräsentiert (Block 104). Verfahren zum Bewerten von Latenz sind nach dem Stand der Technik gut bekannt. Zu Faktoren, die zu einer hohen Latenz beitragen können, zählen kritische Bereichskonflikte, die aus Verzögerungen beim Zugriff auf gesperrten Speicher entstehen, Cachespeicherfehler, wenn Daten nicht in den schnellsten Cachespeichern gefunden werden, und nicht lokale Speicheraufrufe, wobei sich Daten in einem Speicherbereich befinden, der einem Prozessor oder Knoten zugeordnet ist, der von dem referenzierenden Prozess entfernt angeordnet ist. Die Latenzbewertung für jede Speicherreferenz kann entweder eine berechnete oder eine geschätzte Latenz darstellen.
-
Der Affinitätsanpasser wird tätig, um sich mit einem Problem zu befassen, wenn erkannt wird (Block 106), dass eine Referenz eine hohe Latenz aufweist. Jede Bewertung kann nach dem Erstellen sofort im Vergleich zu einer Schwelle ausgewertet werden, um eine Referenz mit hoher Latenz zu erkennen; alternativ können Referenzen mit hoher Latenz in Zeitabständen während der Stichprobenentnahme gesucht und erkannt werden. Die erkannte Bewertung kann eine Bewertung einer einzigen Stichprobe widerspiegeln oder kann die Analyse mehrerer Stichproben zeigen. Zum Beispiel kann eine einzige Stichprobe mit der höchsten Bewertung erkannt werden. Alternativ kann beim Analysieren der Stichproben ein Speichersegment, beispielsweise eine Cachespeicherzeile oder Cachespeicherseite, mit einer hohen durchschnittlichen oder medianen Latenz über mehrere Referenzen zurückgegeben werden. Bei einer weiteren Ausführungsform kann eine Häufigkeitsschwelle so gesetzt werden, dass nur eine bestimmte absolute Zahl von Stichproben mit hoher Latenz für dasselbe Speichersegment oder alternativ ein bestimmtes Verhältnis von Stichproben mit hoher Latenz zu den gesamten das Segment betreffenden Stichproben das Erkennen einer Referenz verursacht, die ein gegebenes Speichersegment betrifft.
-
Fachleute werden verstehen, dass ein Verbessern einer Systemeffizienz durch ein Verringern von Latenz eine statistische Herangehensweise erfordert, da gelegentliche Referenzen mit hoher Latenz normalerweise unvermeidbar sind und die Systemleistung nicht wesentlich beeinträchtigen. Des Weiteren können die hier beschriebenen und im Folgenden erläuterten Anpassungen selbst eine Beeinträchtigung der Leistung darstellen, wenn sie ohne ausreichende Berechtigung realisiert werden. Wenn sich jedoch ein Muster von Referenzen mit hoher Latenz zeigt, wie es mithilfe eines Speicherreferenz-Stichprobenentnahme-Prozesses wie vorstehend beschrieben gefunden werden kann, kann die Latenz mithilfe einer Anpassung verringert werden. Daher wird in der nachfolgenden Beschreibung beim Beurteilen einer Referenz mit hoher Latenz angenommen, dass eine ausreichende Speicherreferenz-Stichprobenentnahme erfolgt ist, sodass die Begriffsbestimmung der Begriffe „häufig” und „wiederholt” von Bedeutung ist. Dennoch werden Fachleute erkennen, dass die hier umrissenen Schritte in einem Mehrprozessor-Datenverarbeitungssystem sogar mit einer Stichprobenentnahme in sehr geringem Umfang ausgeführt werden könnten, allerdings mit einer höheren Fehlermöglichkeit.
-
Sobald eine hohe Latenz erkannt wurde, wird an dem zugehörigen Speichersegment eine weitere Analyse durchgeführt, um eine geeignete Anpassung zu ermitteln. Bei einer Ausführungsform wird die der referenzierten Cachespeicherzeile zugeordnete Cachespeicherseite als das zugehörige Speichersegment angesehen. Alternativ kann das Speichersegment einfach die Cachespeicherzeile selbst sein. Der Anpasser beurteilt die Affinität des Speichersegments zusammen mit der Position des referenzierenden Prozesses, um zu ermitteln, ob der referenzierende Prozess lokal oder nicht lokal ist (Block 108). Die Definition einer lokalen Referenz im Gegensatz zu einer nicht lokalen Referenz (d. h. der referenzierende Prozess) kann für ein gegebenes System definiert sein; wo Speichercaches knotenspezifisch sind, kann eine lokale Referenz eine Referenz sein, bei der sich der Prozess und das Speichersegment in demselben Knoten befinden. Bei anderen Mehrprozessor-Systemen, bei denen Latenz ein Faktor der relativen Positionen eines Prozessors und eines Speichercache ist, können andere Definitionen von „lokal” und „entfernt” vorliegen.
-
Wenn die Referenz nicht lokal ist („Ja”-Zweig des Entscheidungsblocks 108), kann es angemessen sein, die Position des Speichersegments anzupassen, sodass Referenzen von dem erkannten Prozess auf das erkannte Segment lokale Referenzen sind. Wo allerdings Ressourcen gemeinsam genutzt werden, verringert ein Anpassen der Speicheraffinität möglicherweise nicht die Latenz des gesamten Systems. Wenn die Stichprobenentnahme beispielsweise häufige Speicherreferenzen zeigt, die zwei in verschiedenen Knoten ausgeführten Prozessen zugeordnet sind, kann ein Verlagern des den Speicherreferenzen zugeordneten Segments eine Latenz im Hinblick auf Referenzen eines Prozesses zum Preis einer unakzeptablen Erhöhung einer Latenz im Hinblick auf andere Prozesse verringern, die dasselbe Segment referenzieren. In dieser Situation kann ein Hosten der unterschiedlichen Prozesse auf demselben Knoten zugeordneten Prozessoren die Latenz verringern. Wenn daher zwei oder mehr Prozesse stark mit demselben Speichersegment in Verbindung stehen, kann durch ein Platzieren dieser Prozesse in gegenseitiger Nähe wie auch in der Nähe des Speichersegments auf geeignete Weise mit dem erkannten Latenzproblem umgegangen werden.
-
Dies wird dadurch dargestellt, dass eine Beurteilung erfolgt, um herauszufinden, ob entfernt angeordnete Prozesse häufig auf das erkannte Speichersegment zugreifen (Block 110). Wenn der erkannte Prozess mit der nicht lokalen Speicherreferenz hoher Latenz den Speicher nicht in wesentlichem Ausmaß mit anderen entfernt angeordneten Prozessen gemeinsam nutzt („Nein”-Zweig des Entscheidungsblocks 110), wird eine Affinität des Speichersegments zu dem erkannten Prozess hergestellt (Block 112). Dies kann ein Übertragen des Speichersegments sowie, sofern dies angebracht ist, anderer zugehöriger Speichersegmente zu einem Cachespeicher beinhalten, der in Bezug auf den Prozessor, auf dem der erkannte Prozess ausgeführt wird, als lokal angesehen wird. Wenn es angebracht ist, kann die dem erkannten Speichersegment zugeordnete Cachespeicherseite in den lokalen Cachespeicher in dem Knoten übertragen werden, wo der Prozess ausgeführt wird. Wie bereits erwähnt können andere Definitionen von „lokal” andere Arten von Affinitätsanpassungen veranlassen wie sie im Hinblick auf andere Systemarchitekturen verstanden werden.
-
Wenn ein oder mehrere andere Prozesse als der erkannte Prozess mit der nicht lokalen Speicherreferenz hoher Latenz auch einen wesentlichen Verkehr für das erkannte Speichersegment darstellen („Ja”-Zweig des Entscheidungsblocks 110), kann es angebracht sein, einen oder mehrere der Prozesse zu übertragen (Block 114), anstatt das Speichersegment zu übertragen. Durch Konsolidieren von Prozessen, die mit langen Latenzzeiten in Zusammenhang stehen, in demselben Knoten oder andernfalls nahe beieinander, kann es möglich sein, eine Latenz zu verringern, da diese Prozesse dasselbe Speichersegment referenzieren. Ein Übertragen eines Prozesses kann ein Ändern der Affinität anderer, eng mit dem Prozess verbundener Speichersegmente erfordern, sodass diese Segmente, zu denen eine Beziehung besteht, ebenfalls verlagert werden. Fachleute werden verstehen, dass die Kosten eines Verlagerns eines oder mehrerer Prozesse auf Prozessoren, um Prozessoren in Nachbarschaft zu gruppieren, für das System quantifizierbar sind. Bei einer Ausführungsform kann die projizierte Verringerung der Latenz vor dem Verlagern des Prozesses (Block 114) gegen die berechneten Kosten einer Übertragung abgewogen werden.
-
Mit einer anderen Anpassung kann auf eine hohe Latenz in Fällen eingegangen werden, in denen die erkannten Referenzen lokal sind („Nein”-Zweig des Entscheidungsblocks 108). Eine Gesamtlatenz kann durch deutliches Privilegieren eines Prozesses gegenüber anderen in Bezug auf ein Zugreifen auf eine gemeinsam genutzte Ressource verringert werden (Block 116). Zum Beispiel werden bei der üblichen Zuständigkeitsverhandlung zwischen Ressourcen die üblichen Status „gesperrt” und „gemeinsam genutzt” wie oben beschrieben verwendet, sodass die früheste Referenz auf ein Speichersegment akzeptiert und der Status des Segments so geändert wird, dass er diesem Prozess entspricht. Wenn jedoch die Stichprobenentnahme anzeigt, dass ein derartiges Verhalten ineffizient ist, kann ein zusätzlicher Status eingeführt werden, sodass, wenn er realisiert wird, für einen anderen Prozessor ein zusätzlicher Schritt erforderlich ist, um die Ressource zu übertragen und zu sperren.
-
Der Ablaufplan aus 4 zeigt eine Menge von mit einer Speicherreferenz in Zusammenhang stehenden Schritten, die einen verbesserten Status beinhalten können. Wie gezeigt legt, wenn ein Prozess ein Speichersegment wie beispielsweise eine Cachespeicherzeile referenziert (Block 202), der Status der Cachespeicherzeile die Fähigkeit der Referenz fest, die Zeile zu verwenden (Entscheidungsblock 204). Wenn die Cachespeicherzeile als „Gesperrt” gezeigt wird („Gesperrt”-Zweig des Entscheidungsblocks 204), wird die Referenz in einer Warteschlange platziert und wartet auf eine Freigabe der Referenz (Block 206). Wenn die Cachespeicherzeile als „Gemeinsam genutzt” gezeigt wird („Gemeinsam genutzt”-Zweig des Entscheidungsblocks 204) und die Speicherreferenz auf ein Lesen der Daten beschränkt ist und daher keine Sperre benötigt („Nein”-Zweig des Entscheidungsblocks 208), kann eine Kopie der Daten angefertigt und lokal als ein weiteres Exemplar der Cachespeicherzeile mit dem Status „Gemeinsam genutzt” (Block 212) gespeichert werden. Wenn andererseits ein Schreibzugriff und daher eine Sperre auf die Daten erforderlich ist („Ja”-Zweig des Entscheidungsblocks 208), muss die Referenz in die Warteschlange eintreten und den Status „Frei” abwarten (Block 210).
-
Wenn die Cachespeicherzeile als frei gezeigt wird („Frei”-Zweig des Entscheidungsblocks 204), könnten die Daten normalerweise entweder kopiert und „Gemeinsam genutzt” („Nein”-Zweig des Entscheidungsblocks 214, Block 216) oder ohne zusätzliche Beurteilung übertragen und „Gesperrt” werden. Wenn jedoch das Kohärenzprotokoll einen verbesserten Status gemäß einer Ausführungsform der Erfindung ermöglicht, ist mindestens ein zusätzlicher Schritt erforderlich, bevor eine Datenübertragung erfolgen kann. Wie gezeigt prüft das System, um herauszufinden, ob die Cachespeicherzeile einen verbesserten Status aufweist. Wenn nicht („Nein”-Zweig des Entscheidungsblocks 218), wird die Ressource wie üblich übertragen und gesperrt. Wenn die Cachespeicherzeile über einen verbesserten Status verfügt („Ja”-Zweig des Entscheidungsblocks 218), wird der Status einem oder mehreren Prozessen zugeordnet.
-
Eine Anfrage wird im Hinblick auf jeden dieser Prozesse gestellt, um sicherzustellen, dass das Speichersegment übertragen werden kann. Wenn irgendeiner dieser Prozesse zum Beispiel auch einer in eine Warteschlange eingereihten Referenz in Bezug auf das Speichersegment zugeordnet ist, kann die Anfrage es ablehnen, die Ressource zu sperren („ABLEHNEN”-Zweig des Entscheidungsblocks 220) und die Referenz dazu zwingen, sich erneut in eine Warteschlange einzureihen (Block 206). Alternativ kann, wenn keiner der abgefragten Prozesse mehr einen Zugriff auf das Speichersegment benötigt, die Abfrage der Anforderung gestatten, die Ressource zu übertragen und zu sperren. Dieser verbesserte Status kann es einem oder mehreren Prozessen ermöglichen, an den Anfang einer beliebigen Warteschlange für Speichersegmente zu springen, für die sie privilegiert sind, oder kann während kritischen Abschnitten ihrer Ausführung etwas ermöglichen, das im Wesentlichen eine „weiche Sperre” ist. Jede ähnliche Prozedur, die mindestens einen zusätzlichen Schritt zu dem Prozess des Übertragens und Sperrens eines Speichersegments mit verbessertem Status hinzufügt, kann in Übereinstimmung mit verschiedenen Mehrprozessor-Datenverarbeitungssystemen realisiert werden.
-
Für Fachleute werden andere Abwandlungen offensichtlich sein. Die Erfindung besteht daher in den hier nachfolgend angefügten Ansprüchen.