DE69821196T2 - Anordnung zum räumlichen und zeitlichen Abtasten in einem Rechnerspeichersystem - Google Patents

Anordnung zum räumlichen und zeitlichen Abtasten in einem Rechnerspeichersystem Download PDF

Info

Publication number
DE69821196T2
DE69821196T2 DE69821196T DE69821196T DE69821196T2 DE 69821196 T2 DE69821196 T2 DE 69821196T2 DE 69821196 T DE69821196 T DE 69821196T DE 69821196 T DE69821196 T DE 69821196T DE 69821196 T2 DE69821196 T2 DE 69821196T2
Authority
DE
Germany
Prior art keywords
transactions
memory
cache
transaction
addresses
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69821196T
Other languages
English (en)
Other versions
DE69821196D1 (de
Inventor
Jeffrey A. Menlo Park Dean
Carl A. Atherton Waldspurger
James E. Newton Hicks
William E. San Francisco Weihl
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Compaq Computer Corp
Original Assignee
Compaq Computer Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Compaq Computer Corp filed Critical Compaq Computer Corp
Publication of DE69821196D1 publication Critical patent/DE69821196D1/de
Application granted granted Critical
Publication of DE69821196T2 publication Critical patent/DE69821196T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Image Input (AREA)

Description

  • Die vorliegende Erfindung bezieht sich allgemein auf das Messen der Funktionsweise von Computersystemen und, insbesondere, auf das Abtasten von Transaktionen, verwendet dazu, auf Daten, gespeichert in Speichern von Computersystemen, zuzugreifen.
  • Die Geschwindigkeit, unter der moderne Computersysteme arbeiten, ist oftmals durch die Funktion deren Speicheruntersysteme, wie beispielsweise Cache-Speicher und andere Level eines hierarchichen Speicheruntersystems, enthaltend SRAM, DRAM, Platten und dergleichen, eingeschränkt. Cache-Speicher sind dazu vorgesehen, Daten zu speichern, die räumliche und temporäre Stellen teilen. Andere Speicher können Daten in irgendeiner Anzahl von organisierten Arten, kurzzeitig oder für eine lange Dauer, speichern.
  • Um die Funktionsweise von Speichertransaktionen zu analysieren und zu optimieren, sind bessere Messinstrumente erforderlich. Derzeit sind nur ein paar wenige Instrumente vorhanden, die akkurat detaillierte Informationen messen und erfassen können, die Speichertransaktionen charakterisieren.
  • Existierende Hardware-Ereignis-Zähler können diskrete Ereignisse, die zu spezifischen Speichertransaktionen in Bezug stehen, wie beispielsweise Cache-Referenzen, oder Cache-Fehler, erfassen, allerdings liefern bekannte Ereigniszähler nur wenig Details, die ermöglichen würden, exakt die Ursachen von Ereignissen, die die Funktionsweise schwächen, zu ermitteln, und wie solche Ereignisse vermieden werden könnten.
  • Zum Beispiel ist es derzeit extrem schwierig, Informationen über den Status eines Cache-Blocks, wie beispielsweise sauber (clean) oder schmutzig (dirty), oder gemeinsam geteilt oder nicht gemeinsam geteilt, zu erhalten, während auf Daten zugegriffen wird. Es ist auch sehr schwierig zu bestimmen, welche Speicheradressen tatsächlich in dem Cache vorhanden sind, oder welche Speicheradressen für einen bestimmten Cache-Block in Konflikt treten, da existierende Systeme keine einfache Art und Weise vorsehen, um die virtuelle und physikalische Adresse der Daten, auf die zugegriffen wird, zu erhalten.
  • In ähnlicher Weise ist es schwierig, die Quelle einer bestimmten Speicherreferenz festzustellen, die ein die Funktion schwächendes Ereignis verursachte. Die Quelle könnte ein Befehl, ausgeführt in der Prozessor-Pipeline, für einen bestimmten Zusammenhang (z. B. Prozess, Thread, Hardware-Zusammenhang, und/oder Adressenraumzahl), sein, sie könnte eine Speicheranforderung sein, die extern zu der Prozessor-Pipeline vorliegt, wie beispielsweise ein direkter Speicherzugriff (direct memory access – DMA), der von verschiedenen Eingangs/Ausgangs-Vorrichtungen ausgeht, oder sie könnte eine Cache-Kohärenz-Nachricht sein, die von anderen Prozessoren in einem Multiprozessor-Computersystem ausgeht. Abtastzugriffe auf spezifische Bereiche von Speichern, wie beispielsweise spezifische Blöcke in Linien bzw. Zeilen eines Cache, physikalische Adressen in einem Hauptspeicher, oder Seitenadressen in einem virtuellen Speicher, sind noch schwieriger.
  • Es kann möglich sein, eine Simulation oder ein Instrumentarium zu verwenden, um Speicheradressen für durch einen Prozessor initiierte Zugriffe nachzuvollziehen, wie beispielsweise solche aufgrund von Lade- und Speicherbefehlen. Allerdings stören Simulations- und Instrumentierungstechniken gewöhnlich die wahre Operation des Systems genug, um Messungen zu erhalten, die nicht optimal sind, insbesondere für groß dimensionierte Systeme mit realen Produkionsarbeitsbelastungen. Auch ändern, da Instrumentierungstechniken Programme modifizieren oder ändern, sie selbst Speicher- und Cache-Layouts, was die Speicherfunktion des originalen Systems stört. Zum Beispiel können sich Befehl-Cache-Konflikte wesentlich zwischen instrumentierten und nicht instrumentierten Versionen eines Programms unterscheiden.
  • Allerdings kann, wenn die Speicherzugriffe aufgrund eines bestimmten Ereignisses erfolgen, wie beispielsweise einer DMA-Transaktion oder einer Cache-Kohärenz-Transaktion in einem Multiprozessor, ein Protokollieren auf zugegriffene Adressen gewöhnlich durch eine spezialisierte Hardware vorgenommen werden, die spezifisch für diesen Teil des Speicher-Untersystems, das überwacht werden soll, ausgelegt ist.
  • Zusätzlich wäre es, um ein Betriebssystem und eine Anwendungssoftware zu optimieren, nützlich, in der Lage zu sein, andere Typen von Informationen über Speichertransaktionen zu erhalten, wie beispielsweise den Umfang eines Speichers, der durch unterschiedliche Ausführungs-Threads oder -Prozesse verwendet wird, und den Umfang an Zeit, erforderlich dazu, bestimmte Speichertransaktionen abzuschließen. Weiterhin wäre es noch nützlicher, wenn die Informationen dazu verwendet werden könnten, Befehlsabläufe und Datenzuordnungen zu optimieren, vielleicht sogar dann, wenn das System unter einer realen Arbeitsbelastung arbeitet.
  • Die EP-A-0465765 offenbart eine Vorrichtung zum Abtasten von Zuständen eines Computersystems, das einen hierarchischen Speicher besitzt, aufweisend einen Selektor, einen Auslöser und einen Abtasten.
  • Roth C et al: "Performance Monitoring on the PowerPCTM 604 Micropressor", International Conference on Computer Design: VLSI in Comupters and Processors, New York, US, 2. Oktober 1995, Seiten 212–215, offenbart eine Vorrichtung zum Abtasten von Zuständen eines Computersystems mit einem hierarchischen Speicher, der in einer Vielzahl von Ebenen organisiert ist, wobei der hierarchische Speicher Daten und Adressen speichert, und wobei die Vorrichtung umfasst:
    einen Selektor, der auf Basis eines ersten Zustands und von Transaktionsinformationen Speichertransaktionen auswählt, wobei die Speichertransaktionen durch den hierarchischen Speicher abzuarbeiten sind;
    einen Auslöser; und
    einen Abtaster, der Zustände des Computersystems speichert, die mit den ausgewählten Transaktionen identifiziert werden, während die ausgewählten Speichertransaktionen in dem hierarchischen Speicher abgearbeitet werden,
    wobei der Selektor ein Modus-Register sowie ein Überwachungs-Register enthält, und das Modus-Register einen Transaktionsmodus speichert, gemäß dem Speichertransaktionen ausgewählt werden, und das Überwachungsregister den ersten Zustand speichert, gemäß dem Speichertransaktionen ausgewählt werden; und
    der Auslöser den Selektor basierend auf Basis eines zweiten Zustands und/oder von Transaktionsinformationen aktiviert.
  • Gemäß der vorliegenden Erfindung ist eine solche Vorrichtung dadurch gekennzeichnet, dass die Auswählfunktion bestimmt, ob eine spezielle Speichertransaktion von Interesse ist, um abgetastet zu werden.
  • In den beigefügten Zeichnungen:
  • 1 zeigt ein Blockdiagramm eines Computersystems mit einer Abtastung von Speichertransaktionen gemäß der Erfindung;
  • 2 zeigt ein Blockdiagramm einer Abtast-Hardware zum Überwachen einer Speicherfunktion gemäß einer bevorzugten Ausführungsform;
  • 3 zeigt ein Blockdiagramm eines Abtastpuffers, um Abtastinformationen zu speichern;
  • 4 zeigt ein Flussdiagramm eines Verfahrens zum Abschätzen von Teilungs- und Konfliktstatistiken über Speichersystem-Interaktionen zwischen Computersystemzusammenhängen;
  • 5 zeigt ein Flussdiagramm eines Verfahrens zum Abschätzen von Statistiken über Eigenschaften von Speichersystem-Transaktionen;
  • 6 zeigt ein Flussdiagramm eines Verfahrens zum Verwenden von Statistiken über ein Speichersystemverhalten, um Daten-Replizierungs- und Migrationsentscheidungen vorzunehmen; und
  • 7 zeigt ein Flussdiagramm eines Verfahrens zum Verwenden von Statistiken über Speichersystem-Interaktionen, um Zusammenhang-Planungs-Entscheidungen vorzunehmen.
  • Es sollte angemerkt werden, dass die vorliegende Erfindung zu den 1 bis 3 und deren entsprechender Beschreibung in Bezug steht. Die verbleibenden Figuren und die Beschreibung sind beigefügt, um beim Verständnis der vorliegenden Erfindung und bei einem Vergleich zu unterstützen.
  • Systemübersichten
  • 1 stellt ein Computersystem 100 dar, das die Speichertransaktions-Abtasttechniken, die hier beschrieben sind, verwenden kann. Das System 100 umfasst einen oder mehrere Prozessoren) 110, Speicher 120, und Eingabe/Ausgabe-Schnittstellen (I/O) 130, verbunden durch Busleitungen 140.
  • Jeder Prozessor 110 kann auf einem integrierten Halbleiterchip ausgeführt sein, umfassend eine Prozessor-Pipeline 111, einen Daten-Cache- (D-Cache) 113 und einen Befehl-Cache (I-Cache) 112, zum Beispiel der Digital Equipment Corporation Alpha 21264 Prozessor. Die Pipeline 111 kann eine Mehrzahl von seriell angeordneten Stufen zum Verarbeiten von Befehlen umfassen, wie beispielsweise eine Abruf-Einheit, eine Listen-Einheit, eine Ausgabeeinheit, eine oder mehrere Ausführungseinheiten) und eine Retire-Einheit. Der Prozessor-Chip umfasst auch eine Hardware 119, die in größerem Detail nachfolgend zum Abtasten von Cache-Zustand-Informationen, während auf Daten, gespeichert an Adressen in verschiedenen Speichern, zugegriffen wird, beschrieben ist.
  • Die Speicher 120 können hierarchisch angeordnet sein, einschließlich eines Board-Ebenen-Cache (B-Cache) 121, flüchtiger Speicher (DRAM) 122 und persistenter Speicher (Platte) 123. Die I/O 130 kann dazu verwendet werden, Daten zu dem System 100 unter Verwendung von I/O Vorrichtungen, wie beispielsweise Speicherkanälen, zu anderen Prozessoren, Tastenfeldern, Monitoren und Netzwerk-Steuereinheiten zu anderen Computersystemen einzugeben und davon auszugeben.
  • Speicher-Transaktion
  • Allgemein ist eine Speicher-Transaktion hier als irgendeine Operation definiert, die bewirkt, dass sich Daten von einer Stelle zu einer anderen bewegen, zum Beispiel Laden und Speichern, Direkt-Speicherzugriff-(DMA)-Operationen, und Kohärenz-Transaktionen in dem Fall, wo mehrere Prozessoren oder Ausführungs-Threads auf Daten gleichzeitig zugreifen.
  • Betriebsweise
  • Während des Betriebs des Systems 100 werden Befehle und Daten von Software-Programmen in den Speichern 120 gespeichert. Die Befehle werden herkömmlich unter Verwendung von bekannten Compiler-, Linker- und Loader-Techniken erzeugt. Die Befehle werden in die Pipeline 111 eines der Prozessoren 110 hinein über den I-Cache 112 und die Daten über den D-Cache 113 überführt. In der Pipeline 111 werden die Befehle für eine Ausführung decodiert.
  • Auf den Befehl-Cache (I-Cache) 112 wird durch die Pipeline zugegriffen, um Befehle abzurufen, die durch die Prozessor-Pipeline 111 ausgeführt werden. Einige der Befehle, zum Beispiel Lade- und Speicherbefehle, greifen auf Daten (R/W), gespeichert in den Speichern, über den D-Cache 113 zu. Andere Befehle, wie beispielsweise Verzweigungs- und Sprungbefehle, steuern den Ausführungsablauf der Programme. Daten können auch über einen Direktspeicherzugriff (DMA) und Cache-Kohärenz-Operationen übertragen werden. Es ist erwünscht, detaillierte Funktionsinformationen zu sammeln, während auf Daten in irgendeinem der Speicher zugegriffen wird.
  • Speicher-Transaktions-Abtastung
  • 2 stellt eine Anordnung zum Abtasten von Speichertransaktionen dar. Ein Cache 200 umfasst eine Mehrzahl von Zeilen 202. Der Cache kann direkt aufgelistet sein oder kann assoziativ eingestellt sein. Jede Zeile besteht aus einem Block oder mehreren Blöcken 201. Zeilen in einem direkt aufgelisteten Cache werden nur einen einzelnen Block enthalten, während Zeilen in einem N-Weg-Einstell-Assoziativ-Cache N Blöcke enthalten werden.
  • Zum Beispiel wird, in einem assoziativ eingestellten Vier-Wege-Cache, eine Zeile Daten von vier unterschiedlichen Speicheradressen speichern, die eine bestimmte Anzahl von Adressen-Bits niedriger Ordnung gemeinsam haben. Während eines Zugriffs, nachdem auf die Zeile durch den Cache-Zeilen-Index Bezug genommen worden ist, muss jeder Block geprüft werden, um zu bestimmen, ob die Zeile die erforderlichen Daten speichert. Dies wird mit einem Tag bzw. Zeichen 210 vorgenommen. Die exakten Details darüber, wie die Blöcke geprüft werden, hängen von der Ausführung des assoziativ eingestellten Cache ab. Auch sind, zugeordnet zu jedem Block, Daten 220, und Status-Informationen 230, vorhanden. Eine unterschiedliche, physikalische Hardware kann zum Speichern der Zeichen, der Daten und des Status verwendet werden.
  • Die Anordnung, dargestellt in 2, umfasst auch einen Übersetzungs-Vorgriffspuffer (Translation-Lookaside Buffer – TLB) 240, eine Trigger- bzw. Auslöser-Funktion 250, einen Zähler 265, eine Auswahl-Funktion 260, Abtastpuffer 301303 und eine Abtast-Software 260.
  • Während eines Betriebs des Systems wird der Transaktions-Eingang 241 dem Übersetzungs-Vorgriffspuffer (TLB) 240 auf der Leitung 241 präsentiert. Der Transaktions-Eingang kann eine virtuelle Adresse (VA), einen Zusammenhang-Identifizierer, wie beispielsweise eine Adressen-Raum-Zahl (Address Space Number – ASN), und in dem Fall eines Multi-Treaded Prozessor-Designs, einen Hardware-Zusammenhang-Identifizieren (Hardware Context Identifier – HCI) umfassen. Der Eingang kann auch den Typ der Zugriffs-Operation, die durchgeführt werden soll (R/W/DMA), umfassen.
  • Der TLB 240 übersetzt die virtuelle Adresse zu einer physikalischen Adresse. Ein Bereich der Adresse (die physikalische Adresse für einen physikalisch-indexierten Cache, oder die virtuelle Adresse für einen virtuell-indexierten Cache), die typischerweise auf einer bestimmten Anzahl von Bits niedriger Ordnung (z. B. 8–16) bestehen, werden dazu verwendet, einen Index in den Cache 200 hinein auch in der Leitung 242' zu bilden. Der Index wählt eine bestimmte Cache-Zeile 202 aus.
  • Eine Durchsichts-Operation wird dann in Bezug auf jeden der Blöcke 201 innerhalb der ausgewählten Cache-Zeile 202 durchgeführt, um zu bestimmen, ob die geeigneten Daten in den Blöcken der Zeile vorhanden sind. In Abhängigkeit von der Zugriffs-Operation können Daten jeweils auf Leitungen 251 und 252 gelesen oder geschrieben werden.
  • Falls die geeigneten Daten nicht an irgendeinem der Blöcke innerhalb der Zeile vorgefunden werden, dann werden andere Daten von dem Cache herausgeräumt, um Platz für die neuen Daten zu schaffen. Falls die herausgeräumten Daten "schmutzig" (dirty) sind, d. h. die Version der Daten, gespeichert in dem Cache, ist modifiziert, und die Kopien der schmutzigen Daten, gespeichert in umgebenden Ebenen der Speicher-Hierarchie, nicht konsistent sind, können die herausgeworfenen Daten benötigt werden, um sie zurück zu geeigneten Adressen in den umgebenden Ebenen bzw. Level der Speicher-Hierarchie hineinzuschreiben, um eine Konsistenz beizubehalten.
  • Das Ziel ist dasjenige, Speicher-System-Transaktionen abzutasten, um Klarheit über das Verhalten des Speicher-Systems und von Programmen, die auf dem Computersystem ausgeführt werden, zu erhalten. Jede Speicher-Transaktion wird begutachtet, wenn sie in das Speicher-System eintritt, um zu bestimmen, ob diese bestimmte Transaktion für eine Abtastung ausgewählt werden sollte. Zwei Funktionen steuern, welche Transaktionen abzutasten sind: die Auslöser-Funktion 250; und die Auswahl-Funktion 260.
  • Die Auslöser-Funktion 250 bestimmt, wenn die Auswahl-Funktion 260 aktiviert werden sollte, während die Auswahl-Funktion 260 bestimmt, welche Speicher-Transaktionen abgetastet werden sollte, wenn einmal die Auslöser-Funktion die Auswahl-Funktion aktiviert hat. In dem allgemeinsten Fall kann jede dieser Funktionen als eine Funktion irgendeines Speicher-Systems oder eines Speicher-Transaktions-Zustands arbeiten.
  • Auswahl-Funktion
  • Die Auswahl-Funktion 260 wird über eine Freigabe-Leitung 266 freigegeben, die die Auswahl-Funktion einschaltet, wenn der Zähler 265 einen spezifizierten Wert erreicht. Das Beibehalten des Werts wird nachfolgend beschrieben. Die Auswahl-Funktion gilt als Eingangs-Funktion über die Transaktion auf der Leitung 242'', ebenso wie als Status-Information über die Transaktion auf der Leitung 267. Der Auftrag der Auswahl-Funktion ist derjenige, zu entscheiden, ob die Transaktion von Interesse ist, und, falls dies der Fall ist, die Information über die Transaktion zu dem Abtast-Puffer 300 über die Leitung 299 zuzuführen.
  • In dem allgemeinen Fall speichert ein Monitor-Register (Monitor Register – MON) 263 innerhalb der Auswahl-Funktions-Logik den Zustand, verwendet dazu, gegenüber Speicher-System-Transaktion anzupassen. In dem bestimmten Fall des Überwachens von Zugriffen auf einen spezifischen Cache-Block kann das Monitor-Register 263 die Zahlen von einem oder mehreren Block (Blöcken), der (die) überwacht werden soll (sollen), speichern. Die Monitor-Register-Inhalte (wie beispielsweise Block-Zahlen) können in das Register durch eine Hardware oder eine Software über die Leitung 261 eingeladen werden. Adressen anderer Bereiche des Speichers können in dem Monitor-Register gespeichert werden.
  • Eine Art und Weise, in der die Auswahl-Funktion 260 ausgeführt werden kann, ist diejenige, durch Vordefinieren eines Satzes von unterschiedlichen Auswahl-Funktionen und Einsetzen eines Modus-Registers 264 innerhalb der Auswahl-Funktion. Das Modus-Register 264 kann mit einem Modus-Wert über die Leitung 262 geladen werden, um die bestimmte, vordefinierte Auswahl-Funktion, um sie während einer Abtastung zu verwenden, zu steuern. Die verschiedenen Auswahl-Funktions-Moden können Funktionen umfassen, die Transaktionen auswählen, die:
  • – auf eine bestimmte Ebene in der Speicher-Hierarchie Bezug nehmen;
  • – auf einen bestimmten Bereich eines Speichers innerhalb einer bestimmten Ebene der Speicher-Hierarchie Bezug nehmen. Der bestimmte Bereich kann einen Cache-Block oder mehrere Cache-Blöcke innerhalb einer Cache-Zeile oder mehrerer Cache-Zeilen, eine oder mehr Cache-Zeilen, oder einem oder mehrerer fortführender Bereiche) eines Hauptspeichers, adressiert durch irgendeine virtuelle oder physikalische Adresse, umfassen;
    • – einen bestimmten Typ haben, z. B. Lesen, Schreiben oder für ungültig erklären
    • – in einen bestimmten Cache-Speicher passen;
    • – in einem bestimmten Cache-Speicher fehlen;
    • – eine bestimmte Cache-Protokoll-Zustand-Transaktion verursachen, z. B. "schmutzige" Hinauswürfe;
    • – von einer bestimmten Quelle ausgehen, z. B. einer Befehl-Ausführung in der Prozessor-Pipeline, einer Befehl-Ausführung von einem bestimmten Zusammenhang, Prozess, Thread, oder Adressen-Raum, einem direkten Speicher-Zugriff von einer Eingangs/Ausgangs-Vorrichtung, oder Cache-Kohärenz-Nachrichten in einem Multiprozessor-Computersystem.
  • Auswahl-Funktionen können zusätzlich unter Verwendung von Bool'schen Kombinationen (AND, OR und NOT) von diesen Auswahl-Kriterien zusammengesetzt werden. Alternativ kann die Auswahl-Funktion ohne eine programmierbare Logik, gesteuert durch Software, um eine zusätzliche Flexibilität zu erzielen, ausgeführt werden.
  • Nachdem die Auswahl-Funktion eine Speicher-Transaktion dahingehend identifiziert hat, dass sie abgetastet werden soll, werden die Zustand-Informationen erfasst und in einem der Abtastpuffer 300302 aufgezeichnet. Die Zustand-Informationen werden zusammengestellt, wenn die ausgewählte Transaktion durch die verschiedenen Ebenen der Speicher-Hierarchie abgearbeitet werden.
  • Verschiedene Ausführungstechniken sind möglich. Zum Beispiel kann ein "ausgewähltes Transaktions"- Feld (wie beispielsweise ein einzelnes Bit) jeder Speicher-Transaktion zugeordnet werden. Das Feld bewirkt, dass logische Schaltungen in dem Speicher-System Informationen an geeigneten Punkten während der Verarbeitung der ausgewählten Transaktionen aufzeichnen, wenn das Bit eingestellt ist. Eine alternative Ausführung verwendet Komparator-Register an geeigneten Punkten in der Speicher-Systemhierarchie, um identifizierende Informationen von jeder Speicher-Transaktion mit den identifizierenden Informationen einer ausgewählten Transaktion zu vergleichen, und falls sie zueinander passen, um relevante Zustand-Informationen aufzuzeichnen.
  • Betriebsmoden
  • Es wird die Ausführung der Auswahl-Funktion unter Verwendung von Komparator-Registern, um ausgewählte Transaktionen an jeder Ebene der Speicher-Hierarchie auszuwählen, betrachtet. Unter Beschränkung der Aufmerksamkeit auf eine einzelne Ebene der Speicher-Hierarchie, bestehend aus einem einzelnen Cache-Speicher, kann die Auswahl-Funktion einen bestimmten Bereich des Cache spezifizieren, um zu überwachen, wie beispielsweise einen Satz von Cache-Blöcken. Falls der Indexbereich der Transaktions-Informationen, ausgeführt auf der Leitung 242, identisch zu einem der Block-Indizes, gespeichert in dem Monitor-Register in der Auswahl-Funktion 260, ist, dann werden die Informationen über den Zustand des indexierten Cache-Blocks erfasst und in einem der Abtastpuffer aufgezeichnet, wie dies im Detail nachfolgend beschrieben ist.
  • Eine bestimmte Zustand-Information kann erfasst werden, bevor diese Transaktion durch das Speicher-System abgearbeitet ist, und zusätzliche Zustand-Informationen können erfasst werden, nachdem die Transaktion abgeschlossen ist. Nachdem eine spezifizierte Anzahl von Transaktionen aufgezeichnet worden ist, zum Beispiel wenn irgendeiner der Abtastpuffer 300302 voll ist, kann ein Lesesignal auf der Leitung 271 erzeugt werden. Das Lesesignal 271 kann in der Form einer Unterbrechung, eines über eine Software abrufbaren Werts, eingestellt in einem Register, oder eines Ausnahme-Zustands vorliegen.
  • Auf das Lesesignal hin kann die Abtast-Software 280 die Zustand-Informationen, gespeichert in dem Abtastpuffer, für eine weitere Verarbeitung über die Leitung 272 lesen. Es sollte angemerkt werden, dass mehrere Puffer 300302 verwendet werden können, um mehrere Abtastungen zusammenzustellen. Eine Erhöhung der Zahl von Puffern kann die Kosten eines Abtast-Overheads, durch Übertragen mehr als eine Abtastung pro Lesesignal, amortisieren.
  • Auslöser-Funktion
  • Der beladbare Zähler 265 wird mit Countdown-Werten auf der Leitung 268 initialisiert. Der Zähler 265 wird unter Verwendung von Auslöser-Ereignissen auf der Leitung 254 dekrementiert. Auslöser-Ereignisse können Block-Zyklen auf der Leitung 251 oder Transaktionen auf der Leitung 252 sein. Welches Auslöser-Ereignis zu verwenden ist, kann auf der Leitung 253 ausgewählt werden.
  • Ob ein Auslöser-Ereignis auf der Leitung 254 den Zähler 275 erniedrigt bzw. dekrementiert oder nicht, wird durch die Auslöser-Funktion 250 gesteuert. Die Auslöser-Funktion kann irgendeine wahlweise Funktion des Zustands einer Speicher-Transaktion sein, die über Informationen, die über Leitungen 242''' und 267 ankommen, bestimmt werden können. Die Funktion 250 kann mit zwei internen, beladbaren Registern ausgeführt werden, wie dies vorstehend für die Auswahl-Funktion beschrieben ist.
  • Einige spezifische Beispiele nützlicher Auslöser-Funktionen umfassen solche, die anpassen:
    • – irgendeine Speicher-Transaktion;
    • – Speicher-Transaktionen, die auf eine bestimmte Ebene der Speicher-Hierarchie Bezug nehmen, z. B. ein bestimmter Cache;
    • – Speicher-Transaktionen, die eine bestimmte Ebene der Speicher-Hierarchie treffen, z. B. einen bestimmten Cache;
    • – Speicher-Transaktionen die in irgendeiner bestimmten Ebene der Speicher-Hierarchie fehlschlagen;
    • – Speicher-Transaktionen, die bestimmte Cache-Protokoll-Zustand-Übergänge erfahren, z. B. schmutzige Aussonderungen;
    • – Speicher-Transaktionen, die auf einen bestimmten Bereich eines Speichers zugreifen, z. B. einen Bereich von Adressen, eine bestimmte Cache-Zeile, ein bestimmter Cache-Block innerhalb einer bestimmten Cache-Zeile, ein bestimmter Bereich des Cache, usw.;
    • – Speicher-Transaktionen von einer bestimmten Quelle, z. B. von der Prozessor-Pipeline, von einer bestimmten, direkten Speicherzugriff-(Direct Memory Access – DMA)-Vorrichtung, ein Kohärenzverkehr von einem anderen Prozessor, usw.; und
    • – Speicher-Transaktionen eines bestimmten Typs, wie beispielsweise Lesetransaktionen, Schreib-Transaktionen oder ungültige Transaktionen.
  • Die Verwendung der Auslöser-Funktion 250 ermöglicht der abtastenden Hardware, eine spezifische Zahl von Transaktionen vor Anwenden der Auswahl-Funktion auf die Datenfolge von Speicherreferenzen zu überspringen bzw. auszulassen. In einem anspruchsvollen Beispiel würde dies ermöglichen, drei Zugriffe auf einen bestimmten Block zu zählen und dann Speicher-Transaktions-Abtastungen für die nächsten zwei Ausfälle zu diesem Block zu sammeln. In einem anderen, nützlichen Beispiel kann man eine Auswahl nach einem Zugriff auf einen bestimmten Cache-Block durch einen bestimmten Zusammenhang triggern (wie beispielsweise ein Prozess oder ein Thread) und kann dann Abtastungen für eine spezifizierte Zahl von aufeinanderfolgenden Transaktionen zu demselben Block durch eine unterschiedliche Hardware, einen Prozess oder Thread-Zusammenhänge sammeln.
  • Deshalb sind dabei zwei Schritte einer Abtastung vorhanden:
    • 1) Bestimmen einer passenden Transaktion und dann
    • 2) Entscheiden, abtastende Daten beizubehalten oder auszusondern, die sich auf die passende Transaktion beziehen, so dass die Abtastung sowohl in räumlichen als auch temporären Dimensionen stattfinden kann.
  • Das Countdown-Register 265 kann über die Leitung 268 zurückgesetzt werden. Für eine zufällige Abtastung kann der Anfangswert, geschrieben in das Countdown-Register hinein, zufällig von einem Intervall von Zahlen ausgewählt werden, und die Zufalls-Zahl (random number) kann entweder über eine Software oder über eine Hardware-Schaltung, geeignet zum Erzeugen von Zufallszahlen, berechnet werden. Es sollte angemerkt werden, dass das Register 265 auch aufwärts zählen kann.
  • Abtastpuffer
  • 3 stellt die Details dar, wie man die Puffer 300302 zuordnen kann. Der Puffer kann als ein Satz von mittels Software lesbaren Registern, oder andern Typen von Speichern, ausgeführt werden. Der Puffer umfasst ein Status-Feld 310, ein Adressen-Feld 320, ein Kontext-Feld 330, ein Zugriffs-Quellen-Feld 340, ein Befehl-Feld 350, ein Latenz-Feld 360 und Felder 370 für andere Zustände.
  • Das Status-Feld 310 kann Block-Status-Informationen und Cache-Zustand-Protokoll-Informationen darüber umfassen, ob der Block "schmutzig" oder "sauber" ist (modifiziert oder nicht), gemeinsam geteilt ist (ein oder mehrere Ausführungs-Threads können auf die Daten zugreifen), exklusiv (nicht gemeinsam geteilt) ist, gültig oder ungültig ist (die Daten sind legitimiert) und ein Cache-Treffer oder ein Fehl-Status (miss status) ist. Es kann auch Informationen enthalten, wie beispielsweise die bestimmte Zeilen-Index-Zahl und die Blockzahl, die der Transaktion in einem Cache-Speicher zugeordnet sind. Falls mehrere Ebenen in der Speicher-Hierarchie vorhanden sind, dann können dort mehrere Kopien des Felds 310 vorhanden sein, wobei jedes Feld Status-Informationen über die Transaktion für eine bestimmte Ebene der Speicher-Hierarchie speichert.
  • Das Adressen-Feld 320 kann die virtuellen und/oder physikalischen Adressen der Daten, auf die durch die Transaktion, die abgetastet wird, zugegriffen ist, speichern.
  • Ein Punkt der Hardware-Umsetzung kann die Zahl von Drähten sein, die erforderlich ist, um die physikalischen und virtuellen Adressen zu dem Puffer 300 zu führen, zum Beispiel ungefähr 47 Drähte, oder dergleichen, für die virtuelle Adresse, plus 40, oder dergleichen, Drähte für die physikalische Adresse. In Computersystemen, die mittels einer Unterstützungs-Software verwaltete TLBs unterstützen, kann die Anzahl von Drähten durch einfaches Speichern des Index des TLB-Eintritts, der die virtuell-zu-physikalische Translation in dem Adressen-Feld 320 durchführt, zusammen mit dem Offset in die betreffende Seite hinein, reduziert werden. Dann kann die Software 280 den Eintritt von dem spezifizierten TLB-Eintritt lesen, um sowohl die virtuelle als auch die physikalische Adresse zu bestimmen.
  • Es ist anzumerken, dass sich diese Technik auf zwei Eigenschaften bezieht.
  • Die erste Eigenschaft erfordert, dass der TLB-Eintritt, der von Interesse ist, nicht zwischen der Zeit, zu der die Informationen aufgezeichnet wurden, und der Zeit, zu der die Software den TLB-Eintritt liest, ersetzt worden ist. In Fällen, wo die TLB eine bestimmte Annäherung der am kürzesten vorher verwendeten (LRU) Ersetzungspolice ausführt, wie dies der allgemeine Fall sein wird, wird dies kein Problem sein, da der Eintritt, der in Rede steht, kürzlich aufgrund davon verwendet worden ist, dass er in einem kürzlichen Cache-Zugriff eingesetzt worden ist.
  • Die zweite Eigenschaft erfordert, dass die Software den TLB-Eintritt lesen kann. In Fällen, wo ein direktes Lesen der TLB nicht möglich ist, kann die Software eine Schattenkopie der Inhalte der TLB beibehalten.
  • Das Kontext-Feld 330 kann die Adressen-Raum-Zahl (Address Space Number – ASN), den Hardware-Kontext-Identifizieren (Hardware Context Identifier – HCI) in dem Fall eines Multi-Threaded-Prozessors, einen Prozess-Identifizieren (Process Identifier- PID) und/oder einen Thread-Identifizierer (Thread Identifier – TID) der Quelle der Speicher-Transaktion speichern, wenn die Quelle eine Befehlsausführung in der Prozessor-Pipeline ist. Das Feld kann auch die Adressen-Raum-Zahl (Address Space Number – ASN), auf die durch die Speicher-Transaktion, verursacht durch den Befehl, Bezug genommen ist, speichern.
  • Das Quellen-Feld 340 kann dazu verwendet werden, die Quelle des Zugriffs, z. B. einen Lade- oder Speicherbefehl, eine DMA-Anforderung, oder eine Cache-Kohärenz-Protokoll-Operation, ebenso wie zusätzliche Informationen, um die Quelle zu identifizieren, zu speichern.
  • Falls die Quelle des Zugriffs eine Befehlsausführung war, dann kann der Programm-Zähler (Programm Counter – PC) des Befehls, der den Zugriff verursachte, in dem Befehl-Feld 350 gespeichert werden. Das Programm-Zähler-Feld 350 kann auch dazu verwendet werden, Informationen über andere Arten von Quellen, um ein Register zu sparen, zu speichern. Zum Beispiel kann, falls die Quelle eine Kohärenz-Operation von einem anderen Prozessor in einem Multiprozessor-Computersystem ist, dann das Feld 350 dazu verwendet werden, die Prozessor-Zahl des Prozessors, von dem die Anforderung ausging, die die Kohärenz-Operation verursachte, zu halten. Für einen DMA-Typ von Transaktionen kann die Identität, falls die I/O-Vorrichtung die DMA initiierte, gespeichert werden.
  • Das Zeitintervall (Latenz) zwischen aufeinanderfolgenden Zugriffen und/oder dem Intervall, von wo an die Anforderung ausgegeben wurde, bis die Daten in dem Prozessor ankommen (oder in dem Fall eines Schreibens, das Intervall, von wo an die Daten zu dem Speicher geschickt wurden, bis die Daten in dem Speicher festgelegt wurden), kann in dem Latenz-Feld 360 gespeichert werden. Das Intervall kann in Einheiten von Prozessor-Taktzyklen gemessen werden oder das Intervall kann in anderen Einheiten gemessen werden, wie beispielsweise die Zahl von Transaktionen, abgearbeitet durch das Speicher-System. Das Intervall kann auch in die Zeit, erforderlich dazu, die Transaktion an jeder Ebene der Speicher-Hierarchie zu verarbeiten, aufgeteilt werden.
  • Zusätzliche Register, wie beispielsweise das Feld 370, können zu dieser Struktur hinzugefügt werden, um einen zusätzlichen Speicher-Systemzustand zu speichern, der zum Zeitpunkt erfasst ist, zu dem die abgetastete Speicher-Transaktion abgearbeitet ist. Dieser Zustand kann Informationen über Speicher-Systemtransaktionen umfassen, die seit der letzten Abtastung aufgetreten sind, wie beispielsweise Zählungen über die gesamte Anzahl von Transaktionen, oder von Transaktionen, die einen bestimmten Satz von Kriterien erfüllen.
  • Wie in 2 dargestellt ist, können Abtastereignisse auf der Leitung 290, die Teil des abgetasteten Zustands sein können, treffen/fehlschlagen, gültig/ungültig, schmutzig, und dergleichen, umfassen. Ein Auswahlsignal auf der Leitung 291 kann bestimmen, welches bestimmte Ereignis abzutasten ist.
  • Andere Zustand-Informationen können auch Inhalte oder eine Zahl von gültigen Eintritten in Speicher-System-Strukturen umfassen, wie beispielsweise Schreib-Puffer, Victim-Cache, Übersetzungs-Vorgriffspuffer (Translation Lookaside Buffers – TLBs), Miss-Adressen-Dateien (Miss-Address Files – MAFs), und Speicher-Transaktions-Warteschlangen.
  • Random-Memory-Transaktions-Abtast-Techniken
  • In einer bevorzugten Ausführungsform werden Transaktionen, die auf irgendeine Ebene der Speicher-Hierarchie zugreifen, unter Verwendung von mindestens zwei Betriebsmoden abgetastet. In einem ersten Modus werden Zugriffe auf spezifische Bereiche (Adressen) von Speichern abgetastet. In einem zweiten Modus werden zufällig ausgewählte Speicher-Transaktionen abgetastet, um die Funktionsweise irgendeines Teils der Speicher-Hierarchie abzuschätzen.
  • In dem ersten Modus können die interessantesten Informationen durch Abtasten von mindestens zwei aufeinanderfolgenden Transaktionen zu derselben, physikalischen Stelle zusammengestellt werden, durch, zum Beispiel, einen Cache-Block. Dies wird Cache-Zustand-Übergänge ergeben.
  • In dem zweiten Modus wird eine zuverlässige Abtastung einer großen Anzahl von Transaktionen über die Zeit eine statistische Analyse ermöglichen, um die gesamte Speicher-Funktion abzuschätzen, ohne ernsthaftes Beeinträchtigen des Durchsatzes des Systems. Mit anderen Worten ermöglicht eine zufällige Abtastung, eine Speicher-Funktion in tatsächlichen Betriebssystemen zu messen.
  • Deshalb können die Vorrichtung und das Verfahren, die hier offenbart sind, Transaktionen abtasten, um Cache-Blöcke als sauber oder schmutzig zu spezifizieren, um Bereiche von Speichern, alle Speicherstellen, alle Speicherstellen, wo Cache-Blöcke schmutzig sind, Speicherstellen, wo die Daten nicht in dem Cache vorhanden sind, zu spezifizieren.
  • Da Cache-Zustand-Übergänge von besonderem Interesse sind, ist die Anordnung, dargestellt in 2, so ausgelegt, um Kopien von Zustand-Informationen für mindestens zwei aufeinanderfolgende Zugriffe zu speichern, wenn der Modus eine Cache-Abtastung ist. Die erste Kopie erfasst Informationen über den Zustand des Cache-Blocks nach dem ersten Zugriff. Der Zustand nach dem zweiten Zugriff wird als die zweite Kopie gespeichert. Durch Vergleichen dieser zwei Zustände ist es möglich, zu bestimmen, welche Übergänge in dem Cache-Kohärenz-Protokoll des Systems aufgetreten sein müssen.
  • Die Angabe von Speicher-Zustand-Informationen für aufeinanderfolgende Transaktionen kann durch sequenzielle Zugriffe verallgemeinert werden, die einfach durch Software spezifizierte Kriterien, wie beispielsweise aufeinanderfolgende Fehlschläge, aufeinanderfolgende Treffer, aufeinanderfolgende Ungültigkeiten, usw., anpassen. Diese sind unterschiedliche Variationen in Bezug auf den Cache-Abtast-Modus, eingestellt über die Leitung 262.
  • In der bevorzugten Ausführungsform werden die Zustand- und Adressen-Informationen erfasst, wenn ein Cache-Block aktualisiert wird, so dass dabei kein Erfordernis vorhanden ist, den Cache direkt zu lesen. Durch Erfassen der Informationen auf diese Art und Weise in den Cache 200 hinein ist das Hardware-Design einfacher, da das Erfordernis, Drähte von jedem Cache-Block zu der Abtasteinrichtung 270 zu führen, ver mieden wird. Das Design kann auch durch Begrenzen der Abtastung auf eine kleine Anzahl von Blöcken vereinfacht werden. Wenn nur eine kleine Anzahl von Blöcken gleichzeitig abtastet, wird eine zusätzliche Hardware für jeden Cache-Block vermieden.
  • Unter Verwendung einer Software, um das Monitor-Register 264 zu beladen, kann eine flexible Kontrolle eines weiten Bereichs von Überwachungstechniken ausgeführt werden. Zum Beispiel kann, wenn keine Zugriff-Aktivität für einen bestimmten Cache-Block innerhalb einer spezifizierten Zeitperiode erfasst ist, dann die Software die Überwachung dieses Blocks durch einfaches Spezifizieren eines anderen Blocks, um ihn zu überwachen, aussondern. In einem anderen Modus kann der überwachte Cache-Block zufällig ausgewählt werden, um statistisch das Verhalten jedes Blocks in dem Cache abzutasten. Alternativ kann eine Software die Blöcke in einer Round-Robin-Reihenfolge abtasten.
  • Es ist auch möglich, selektiv einen Cache-Block, der einer spezifizierten Programm-Variablen oder einer Daten-Struktur zugeordnet ist, zu überwachen. Hierbei bestimmt die Software, welcher Cache-Block eine bestimmte Variable speichern wird, und wählt diesen Block als den einen aus, um ihn zu überwachen. Diese Technik ermöglicht Programmierern, interaktiv eine Speicher-System-Funktion durch Identifizieren von Konflikten beim Ausführen von Programmen, die untersucht werden sollten, auszutesten. Ähnliche Techniken können durch eine adaptive Laufzeit-Software verwendet werden, um ernsthafte Cache-Konflikte über eine dynamische Daten-Wiederzuordnung zu vermeiden.
  • Es sollte angemerkt werden, dass die Transaktions-Abtastung, wie sie hier beschrieben ist, für unterschiedliche Ebenen in der Speicher-Hierarchie durch Duplizieren der Abtast-Software, dargestellt in 2, eingesetzt werden kann. Es ist anzumerken, dass diese Technik auf den zwei TLB-Eigenschaften, die vorstehend beschrieben sind, beruht.
  • Die Abtast-Techniken, wie sie hier beschrieben sind, ermöglichen eine feinfühlige Überwachung von Speicher-Transaktionen mit einem geringen Hardware-Overhead. Diese Informationen können auf viele Arten und Weisen verwendet werden. Zum Beispiel können die zusammengestellten Informationen System-Designer dabei helfen, besser die Funktionsweise von Speicher-Untersystemen, wie beispielsweise Cache, DRAM, und dergleichen, zu verstehen. Die Funktions-Daten können dazu verwendet werden, Optimierungen zu leiten.
  • Abschätzen von Speicher-Interaktionen unter Kontexten bzw. Zusammenhängen
  • Die abgetasteten Informationen über Speicher-System-Transaktionen können dazu verwendet werden, eine Vielzahl von Statistiken über eine Speicher-System-Aktivität zu berechnen. Dieser Prozess 400 ist in 4 dargestellt. Der Prozess setzt ein wiederholtes Auswählen eines Bereichs eines Speichers, um ihn zu überwachen, z. B. eines spezifischen Cache-Blocks innerhalb einer spezifischen, einem Satz zugeordneten Cache-Zeile innerhalb eines spezifischen Cache-Speichers, Schritt 410, ein Aufzeichnen von Zustand-Informationen von mehreren, aufeinanderfolgenden Speicher-Transaktionen, die auf diesen Bereich zugreifen, Schritt 420, und ein Kommunizieren dieser aufgezeichneten Zustand-Informationen zu einer Software, Schritt 430, ein.
  • Nachdem eine vorbestimmte Anzahl von Abtastungen zusammengestellt worden ist oder eine vorbestimmte Zeitdauer abgelaufen ist, kann die Abtast-Software statistisch die aufgezeichneten Informationen analysieren, um eine Vielfalt von Eigenschaften über eine Cache-Benutzung und von Speicher-System-Interaktionen unter Kontexten abzuschätzen.
  • Eine typische Art und Weise einer Verwendung dieser Maßnahme ist diejenige für die Software, periodisch einen Random-Cache-Block auszuwählen, um eine Folge von Abtastungen für Transaktionen zu überwachen und zusammenzustellen, die auf diesen bestimmten Block zugreifen. Nachdem eine vorgegebene Zeitperiode abgelaufen ist, wählt die Software einen neuen Random-Cache-Block aus, um ihn zu überwachen, und der gesamte Prozess 400 kann wiederholt werden. Über die Zeit werden Abtastungen für alle Blöcke in dem Cache entstehen.
  • Diese zufällige Abtastung in der räumlichen Dimension ermöglicht die Abschätzung von Statistiken, die sich auf ein gemeinsames Teilen und auf Konflikte in sowohl dem Raum als auch der Zeit beziehen. Es ist anzumerken, dass die zufällige Auswahl des Bereichs, um ihn zu überwachen, durch eine Hardware-Logik ausgeführt werden kann. Allgemein ist es möglich, jeden Bereich zu überwachen, bis eine spezifizierte Anzahl von Abtast-Ereignissen 290 aufgetreten ist. Die Ereignisse 290 können Speicher-Transaktionen zu dem Bereich, oder die gesamten Speicher-System-Transaktionen, oder eine abgelaufene Zeit, gemessen in Prozessor-Taktzyklen oder anderen Einheiten, sein.
  • Für jede Transaktion ist es möglich, eine Vielzahl von Informationen zu erfassen, wie dies hier beschrieben ist. Für diese Analysen umfassen die Informationen, die für jede Transaktion von Interesse sind, deren Treffer- oder Fehl- bzw. Miss-Status in dem Cache, der von Interesse ist, Cache-Protokoll-Zustand-Informationen über den Block, auf den durch die Transaktion Bezug genommen ist, den Typ einer Transaktion (z. B. lesen, schreiben oder für ungültig erklären), die virtuelle und physikalische Adresse, auf die durch die Transaktion Bezug genommen ist, die entsprechende Stelle innerhalb des Cache (wie beispielsweise die Block- und/oder Zeilen-Indizes).
  • Zusätzliche, aufgezeichnete Informationen identifizieren den Kontext der Transaktion, wie beispielsweise eine Cache-Kohärenz-Operation von einem anderen Prozessor, einen Direkt-Speicher-Zugriff von einer Eingangs/Ausgangs-Vorrichtung, oder eine Befehlsausführung von einem bestimmten Prozess, einem Thread, einer Adressen-Raum-Zahl oder einem Hardware-Kontext.
  • Die Analyse der Abtastungen umfasst zuerst Auswählen eines Untersatzes der Abtastungen, die von Interesse sind, Schritt 440. Insbesondere kann ein Untersatz Paare von Abtastungen von aufeinanderfolgenden Zugriffen zu einem Bereich, wie beispielsweise einem spezifischen Cache-Block, sein, die auch zusätzliche Funktionskriterien erfüllen.
  • Da das ausgewählte Transaktions-Paar von aufeinanderfolgenden Zugriffen zu derselben physikalischen Stelle in dem Cache resultierte, können Informationen, aufgezeichnet über die Transaktionen, dazu verwendet werden, ein gemeinsames Teilen oder Konflikte für diesen physikalischen Raum in dem Cache abzuschätzen. Auch können Statistiken über Häufigkeiten von verschiedenen Zustand-Übergängen in dem Cache-Protokoll bestimmt werden, da eine Prüfung des Protokoll-Zustands in Bezug auf zwei aufeinanderfolgende Transaktionen die Transaktion identifiziert, die stattgefunden haben muss, um von dem Zustand in der ersten Abtastung des Paars zu dem Zustand in der zweiten Abtastung des Paars zu gehen.
  • Um ein gemeinsames Teilen abzuschätzen, wählt die Analyse Paare aus, wo die zweite Transaktion in dem Paar ein Cache-Treffer im Schritt 450 war. Dies zeigt an, dass dort ein gemeinsames Teilen zwischen der ersten und der zweiten Transaktion vorhanden war. Durch Prüfen des Kontextes, der Informationen identifiziert, die beiden Abtastungen zugeordnet sind, ist es möglich, zu bestimmen, welche Kontexte nützlich diesen physikalischen Raum während des abgetasteten Zeitintervalls gemeinsam teilten. Durch Ansammeln dieser Information über viele solcher Paare von Abtastungen kann man statistisch Metriken abschätzen, die sich auf sowohl eine Intea-Kontext- als auch eine Inter-Kontext-Teilung von physikalischen Stellen beziehen.
  • Eine nützliche Metrik wird durch Zählen der Anzahl von Paaren bestimmt, wo das erste Paar in der Abtastung einen spezifischen Kontext anpasst und wo das zweite Paar in der Abtastung einen zweiten spezifischen Kontext anpasst, was effektiv zu einer Matrix von Zählungen führt, die durch die Identifizieren des ersten und des zweiten Kontextes indexiert sind. Ähnlich kann man, durch Analysieren von Paaren, wo die zweite, abgetastete Transaktion einen Cache-Fehler im Schritt 460 erfuhr, statistisch Metriken abschätzen, die sich auf einen Intea-Kontext- und einen Inter-Kontext-Konflikt für physikalische Stellen beziehen.
  • Eine alternative Verwendung dieser Hardware ist diejenige, einen spezifischen Cache-Bereich, um ihn zu überwachen, auszuwählen. Der ausgewählte Bereich entspricht dem Raum in dem Cache, der eine bestimmte Programm-Variable oder Daten-Struktur speichert. Durch Zusammenstellen von Abtastungen und Filtern der Abtastungen, um Abtast-Paare zu erhalten, wo mindestens eine der Transaktionen die Variable oder Daten-Struktur, die von Interesse ist, einsetzt, ist es möglich, Cache-Konflikt-Raten abzuschätzen, und andere, spezifische Programm-Variablen oder Daten-Strukturen, die die Quellen der Konflikte sind, zu identifizieren.
  • Diese Abschätzung kann dynamisch vorgenommen werden, um eine Online-Programm-Fehlersuche oder eine Optimierung von Funktions-Problemen innerhalb eines laufenden Programms oder Systems zu ermöglichen. Diese Technik ermöglicht Programmierern, interaktiv eine Speicher-System-Funktion durch Identifizieren von Konflikten beim Ausführen von Programmen, die untersucht werden, nach Fehlern zu durchsuchen. Ähnliche Techniken können durch eine adaptive Laufzeit-Software verwendet werden, um ernsthafte Cache-Konflikte über eine dynamische Daten-Verschiebung zu vermeiden.
  • Abschätzungsstatistiken von Eigenschaften von Speicher-Transaktionen
  • Die abgetasteten Informationen über Speicher-System-Transaktionen können dazu verwendet werden, eine Vielzahl von Statistiken über eine Speicher-System-Aktivität zu berechnen. Dieser Prozess 500 ist in 5 dargestellt und wird unter Verwendung der Hardware, die zuvor beschrieben ist, mittels der folgenden Schritte durchgeführt:
    • Schritt 1: Wähle eine Auswahl-Funktion aus, um Speicher-Transaktionen, die von Interesse sind, zu identifizieren, 510.
    • Schritt 2: Zeichne Informationen über ausgewählte Speicher-System-Transaktionen auf, 520.
    • Schritt 3: Kommuniziere die aufgezeichneten Zustand-Informationen zu der Software, 530.
    • Schritt 4: Wähle einen Untersatz von Transaktionen aus, die dahingehend angesehen werden, dass sie von Interesse sind, 540.
    • Schritt 5: Analysiere diesen Untersatz, um verschiedene Statistiken oder Eigenschaften abzuschätzen, 550.
  • Die aufgezeichneten Zustand-Informationen umfassen eine Fülle von Informationen über jede Speicher-Transaktion, so dass viele nützliche Statistiken berechnet werden können.
  • Die Informationen in den Abtastungen können umfassen:
    • – Adressen, auf die durch die Speicher-Transaktion Bezug genommen ist;
    • – einen Kontext identifizierende Informationen, wie beispielsweise einen Prozess-Identifizierer, einen Thread-Identifizieren, einen Hardware-Kontext-Identifizierer, eine Adressenraum-Zahl, einen Direkt-Speicher-Zugriffs-Vorrichtungs-Identifizierer oder einen Prozessor-Identifizierer eines Cache-Kohärenz-Verkehrs;
    • – Status-Informationen für jede Ebene in der Speicher-Hierarchie, auf die durch die Transaktion Bezug genommen ist, wie beispielsweise Cache-Treffer/Fehlschlagen, schmutzung/sauber, und/oder gemeinsam geteilter/exklusiver Status.
  • Analysieren der aufgezeichneten Zustand-Informationen
  • Ein Abtasten individueller Speicher-System-Transaktionen macht es möglich, eine Vielzahl von statistischen Metriken über Verteilungen von Eigenschaften des Speicher-System-Verhaltens zu berechnen. Zum Beispiel ist es möglich, Verteilungen von Latenzen zu Service-Speicher-Anforderungen abzuschätzen, oder Raten von Cache-Treffern an einer bestimmten Ebene oder Bereich in der Speicher-Hierarchie abzuschätzen. Filtermechanismen können verwendet werden, um Untersätze der aufgezeichneten Transaktionen, die von Interesse sind, zu identifizieren, was Statistikern ermöglicht, um sich mit bestimmten Aspekten des Speicher-Systems, die von Interesse sind, zu befassen, wie beispielsweise Transaktionen zu einem bestimmten Bereich oder einer bestimmten Ebene in der Speicher-Hierarchie, oder eine bestimmte Klasse von Transaktionen, wie beispielsweise lesen, schreiben, oder für ungültig erklären.
  • Nachdem ein Satz von Abtastungen, die von Interesse sind, identifiziert worden ist, können standardmäßige, statistische Techniken verwendet werden, um Durchschnitte, Standardabweichungen, Histogramme und andere Statistiken über die Abtastungen, die von Interesse sind, abzuleiten. Durchschnitte können dazu verwendet werden, Raten eines Auftretens von bestimmten Ereignissen auf der Leitung, 290, der 2, wie beispielsweise Cache-Treffer oder -Fehler, oder Räumungen, abzuschätzen.
  • Es ist auch möglich, den Anteil von Anforderungen aufgrund von Lesvorgängen, Schreibvorgängen oder ungültigen Vorgängen abzuschätzen. Diese Raten können in Bezug auf einen bestimmten Zusammenhang bestimmt werden, um so Metriken, wie beispielsweise Cache-Treffer-Raten pro Prozess, oder eine durchschnittliche Speicher-System-Latenzzeit, erfahren durch ein Thread, abzuschätzen. Es ist auch möglich, den Anteil einer Ebene der Speicher-Hierarchie abzuschätzen, der durch einen bestimmten Kontext verbraucht ist.
  • Standard-Fehler-Abschätz-Techniken können verwendet werden, um Vertraulichkeits-Intervalle über die Genauigkeit der abgeleiteten Statistiken zu erhalten. Insbesondere können, für Statistiken, die eine Anzahl von Abtastungen mit einer spezifischen Eigenschaft einsetzen, Fehlergrenzen unter Verwendung des reziproken Werts der Quadratwurzel der Anzahl von Abtastungen mit dieser Eigenschaft angenähert werden. Diese Fehlergrenzen können auch verwendet werden, um dynamisch die Rate zu kontrollieren, unter der ausgewählte Transaktionen abgetastet werden, um so eine Genauigkeit mit einem Abtast-Overhead abzuwägen.
  • Wenn die aufgezeichneten Zustand-Informationen Latenz-Informationen umfassen, entweder in der Form der Latenz, die erforderlich ist, um die Speicher-Transaktion zu verarbeiten, oder im Hinblick auf die Latenz zwischen zwei aufeinanderfolgenden, abgetasteten Speicher-Transaktionen, können die Informationen dazu verwendet werden, Statistiken, die auf einer Latenz basieren, zu berechnen. Eine Latenz wird typischerweise in Zeiteinheiten gemessen, wie beispielsweise Prozessor-Taktzyklen, können allerdings auch in anderen Einheiten gemessen werden, wie beispielsweise die Anzahl von Speicher-Transaktionen, die abgearbeitet sind.
  • Befehl und Daten-Neuverteilung
  • In einem sehr allgemeinen Sinne führen Prozessoren Befehle aus, die in Bezug auf Daten arbeiten. In vielen modernen Computersystemen werden die Befehle und Daten gewöhnlich als separate Strukturen unter Verwendung unterschiedlicher Speicherseiten beibehalten, da die Zugriffsmuster für Befehle sehr unterschiedlich gegenüber einem solchen für Daten ist. Eine Speicher-Auflistung virtuell zu physikalisch für Befehle und Daten wird gewöhnlich durch das Betriebssystem durchgeführt. Alternativ kann eine Neuverteilung von Strukturen manuell, oder durch Compiler, Linker und Loader, vorgenommen werden. Einige Systeme können Strukturen dynamisch, wenn sie die Befehle ausführen, neu verteilen.
  • Unter Verwendung der Hardware, die hier beschrieben ist, ist es möglich, ein Feedback zu einer Vielzahl von interessierenden Teilen einer Software anzugeben. Zum Beispiel können abgetastete Speicher-Transaktions-Zustand-Informationen verwendet werden, um, zum Beispiel, Seiten-Umlistungs-Policen anzusteuern, oder um eine Eigen-Interferenz durch Vorsehen einer Rückführung zu Compilern, Linkern oder Loadern zu vermeiden.
  • Zum Beispiel kann ein Software-Konflikt Adressen auf der Seiten-Ebene ansammeln, um über dynamische Seiten-Neuauflistungs-Algorithmen, ausgeführt durch Betriebssysteme, zu informieren. Es ist auch möglich, interessierende Profilierungs-Tools zu schaffen, die potenzielle Funktions-Probleme für Programmierer und Benutzer identifizieren.
  • Zum Beispiel ist es nun möglich, abzuschätzen, wie oft Daten schmutzig sind, wenn die Daten ausgesondert werden, und wie oft DMA-Übertragungen oder Cache-Kohärenz-Protokoll-Übertragungen auftreten, was ein Gefühl dafür gibt, wie effektiv das Speicher-System verwendet wird.
  • Seiten-Replizierung und Migration in einem Multiprozessor-Computersystem
  • In Multiprozessor-Systemen mit einem nicht gleichförmigen Speicher-Zugriff (Non-Uniform Memory Access – NUMA) besitzt jeder Prozessor Bereiche des Speicher-Systems, die schneller zugreifen können (oder mit einer höheren Bandbreite), als dies andere Teile des Speicher-Systems vornehmen können. Um eine Funktion zu verbessern, können Daten (die entweder Programm-Daten oder Befehle sein können), auf die häufig durch einen Prozessor zugegriffen wird, zu einem Bereich des Speicher-Systems bewegt werden, auf den schneller durch diesen Prozessor zugegriffen werden kann.
  • Diese Bewegung kann auf zwei Arten vorgenommen werden. Die Daten können repliziert werden, indem mehrere Kopien der Daten erstellt werden. Idealerweise werden die Daten vernünftig durch den System-Speicher "gestreut". Alternativ können die Daten durch tatsächliches Bewegen der Daten in einen Speicher mit einer niedrigeren Latenz oder höheren Bandbreite migriert werden. Die Schritte 600, die eingesetzt sind, sind in 6 dargestellt und umfassen das Folgende:
    • Schritt 1: Aufzeichnen von Informationen über ausgewählte Speicher-System-Transaktionen, 610.
    • Schritt 2: Identifizieren von Bereichen, auf die häufig zugegriffen ist, des Speichers (z. B. Seiten), 620.
    • Schritt 3: Identifizieren von Kandidaten für eine Replizierung und Migration, 630.
    • Schritt 4: Replizieren und/oder Migrieren von geeigneten Daten, um spezifische Metriken zu verbessern, 640.
  • Der Schlüssel zu diesem Prozess ist in Schritt 2 und Schritt 3 gegeben. Informationen darüber, auf welche Teile von Daten, z. B. über Informationen über virtuelle und physikalische Adressen, Bezug genommen ist, auf die häufig durch diesen Prozessor zugegriffen ist, und auch welche Teile von Daten wesentliche Cache-Fehler erfuhren oder hohe Latenzen bei deren Zugriff erfuhren, können verwendet werden, um Replizierungs- und/oder Migrations-Entscheidungen zu leiten.
  • Informationen über den Typ von Zugriffen (z. B. lesen, schreiben und für ungültig erklären) können die Entscheidung darüber leiten, ob zu replizieren oder zu migrieren ist, oder ob die Daten an Ort und Stelle zu belassen sind. Zum Beispiel sollten Daten, die häufig durch mehrere Prozessoren geschrieben werden (z. B. im Schreiben gemeinsam geteilte Seiten), nicht repliziert oder migriert werden, während Daten, die häufig gelesen, allerdings nur selten beschrieben werden (z. B. im Lesen gemeinsam geteilte Seiten), gute Kandidaten für eine Replizierung sind. Seiten, auf die nur schwer durch nur einen einzelnen Prozessor zugegriffen wird, sind gute Kandidaten für eine Migration zu einem Speicher, der näher zu dem zugreifenden Prozessor liegt. Diese Informationen können durch statistisches Abtasten von Speicher-System-Transaktions-Informationen gesammelt werden, wie dies hier beschrieben ist.
  • Die Informationen über Speicher-System-Transaktionen können dynamisch zusammengestellt werden und können in einer Online-Weise verwendet werden, um dynamisch die Replizierungs- und Migrations-Policen des Computersystems zu steuern. Typischerweise werden eine Replizierung und Migration durch das Betriebssystem gehand habt, allerdings können sie durch andere Software- oder Hardware-Schichten gehandhabt werden.
  • Dabei sind verschiedene, potenzielle Funktions-Metriken vorhanden, die versuchen können, Replizierungs- und Migrations-Policen zu verbessern, einschließlich einer Erhöhung in dem gesamten System durch Ersatz, eine Erhöhung in dem Durchsatz für bestimmte Aufträge mit einer hohen Priorität, einer Verringerung in einem Verkehr zwischen Prozessoren und Speichern, einer Verringerung der gesamten Speicher-Latenz, oder einer gesamten Erhöhung der System-Funktion.
  • Kontext-Ablaufplanung
  • Da Cache in einem hierarchischen Speicher Daten teilten, die von verschiedenen Hardware-Kontexten ausgehen, treten Threads, die in unterschiedlichen Hardware-Kontexten ablaufen, für diese Linien in einem Cache in Wettbewerb. Deshalb ist es erwünscht, Threads so ablaufmäßig zu planen, dass Ressource-Konflikte minimiert werden.
  • Eine vernünftige Ablaufplanung ist besonders wichtig für Multithreaded-Prozessoren, wo Speicher-Referenzen von unterschiedlichen Hardware-Kontexten an einer sehr feinstufigen Ebene verschachtelt werden, und die Relevanz wird dann erhöht, wenn diese Kontexte gemeinsam Speicher-System-Ressourcen teilen, wie beispielsweise Cache. Allerdings ist es auch für Single-Threaded-Prozessoren wichtig, wenn die Cache groß genug relativ zu der Anzahl von Speicher-Transaktionen, vorgenommen durch einen Thread während eines ablaufmäßigen Quantum, sind. Dann ist eine gewisse Hoffnung vorhanden, einige nützliche Cache-Inhalte zu erhalten, wenn das nächste Quantum bzw. die nächste Menge einem bestimmten Kontext zugeordnet ist. Alle diese Ablauf-Entscheidungen können dynamisch an eine Rückführung angepasst werden, gesammelt von einer statistischen Abtastung von Speicher-System-Transaktionen während eines Online-Betriebs.
  • Dies kann durch Abtasten von Speicher-System-Transaktions-Informationen, wie dies hier beschrieben ist, vorgenommen werden. Eine Betriebssystem-Software kann unter Berücksichtigung verschiedener Aspekte von Speicher-Referenz-Mustern von Threads oder Prozessen einen Vorteil erhalten, wenn Ablauf-Entscheidungen vorgenommen werden. Dieser Prozess 700 ist in 7 dargestellt.
  • Schritt 710 tastet Transaktionen für spezifizierte Kontexte ab. Durch Erfassen von alten und neuen Kontext-Identifizierern als Teil einer Cache-Überwachung, kann die Be triebssystem-Software statistisch den Grad abschätzen, mit dem unterschiedliche Kontexte in dem Cache gemeinsam geteilt werden und in Konflikt treten, und zwar im Schritt 720. Diese Abschätzungen können durch Kontext-Ablaufplanungs-Einrichtungen in den Schritten 731733 verwendet werden, um bevorzugt Kontexte ablaufmäßig zu planen. Die Ablaufplanungs-Entscheidungen 731733, die nachfolgend beschrieben sind, können unter Berücksichtigung von verschiedenen Metriken, einschließlich einer Erhöhung der Menge eines gemeinsamen Teilens unter Kontexten, die für Speicher-Ressourcen in Wettbewerb treten, oder Verringern von Konflikten, die gemeinsam Kontexte, die für Speicher-Ressourcen in Wettbewerb treten, teilen, von Vorteil sein.
  • Co-Ablaufplanung
  • Zum Beispiel macht es Sinn, bevorzugt einen Thread parallel ablaufmäßig zu planen, der einen großen Cache-Grundstock (Cache Footprint) besitzt, gleichzeitig mit einem Thread, der nur eine bescheidene Benutzung des Cache vornimmt, da die Speicher-System-Anforderungen solcher Threads zueinander passen, um dadurch das gemeinsame Teilen zu erhöhen. Auch macht es Sinn, nicht überlappende Bereiche des Cache so umfangreich wie möglich zu verwenden.
  • Andererseits sollte die Betriebssystem-Software anstreben, Ressource-Konflikte zu minimieren, zum Beispiel durch Vermeiden einer gleichzeitigen Ablaufplanung von zwei Threads mit großen Cache-Footprints, wo dies möglich ist, da dies zu viel mehr Konflikt-Fehlern als die Threads führen wird, die zueinander nützliche Daten von dem Cache ausräumen, um dadurch Konflikte zu verringern.
  • Ablaufplanung, die auf einer gemeinsamen Teilung basiert
  • Ablaufplanungs-Policen auf einer Basis einer gemeinsamen Teilung oder einer proportionalen Teilung wünschen Idealerweise, jedem Kontext eine maximale gemeinsame Teilung jedes Cache-Speichers in der Speicher-Hierarchie zu geben. Mit der vorliegenden Abtast-Technik ist es möglich, statistisch den Teil eines Cache, der durch jeden Kontext belegt ist, abzuschätzen, und zwar im Schritt 720. Dies ermöglicht der Ablaufplanungs-Einrichtung, ihre Entscheidungen auf Metriken zu begründen, wie beispielsweise solche, die jedem Prozess eine maximale, gemeinsame Teilung von Speicher-System-Ressourcen gibt, was effektiv Speicher-System-Ressourcen unter Kontexten im Verhältnis zu deren Erfordernissen unterteilt.
  • Ablaufplanung, die auf einer Zuordnung basiert
  • Jeder Kontext, der ablaufmäßig geplant werden kann, besitzt dazu zugeordnet Ressourcen, wie beispielsweise den Umfang eines Cache, den er verwenden kann. Ein Kontext, der mehr als seinen zugeordneten Anteil verwendet, kann verlangsamt oder ausgesetzt werden. Ein ähnlicher Kontext, der seinen zugeordneten Anteil nicht ausreichend benutzt, kann favorisiert werden. Während einige Kontexte anhängig sind, können andere deren gemeinsames Teilen des Cache erhöhen. In anhängigen oder ausgesetzten Kontexten kann ermöglicht werden, fortzufahren, nachdem deren Cache-Benutzung verringert wurde, und zwar als ein Ergebnis eines erhöhten Cache-Drucks von anderen, aktiven Kontexten. Dies kann gegenüber bekannten Maßnahmen unterschieden werden, die allgemein nicht ermöglichen, dass Informationen, auf der Cache-Zeilen- oder Block-Ebene, überwacht werden, und zwar anders als durch Simulation.
  • Alle diese Ablaufplanungs-Entscheidungen können dynamisch angepasst werden, um zurückgeführt zu werden, gesammelt aus einem statistischen Abtasten von Speicher-System-Transaktionen während eines Online-Betriebs.

Claims (24)

  1. Vorrichtung zum Abtasten von Zuständen eines Computersystems mit einem hierarchischem Speicher, der in einer Vielzahl von Ebenen organisiert ist, wobei der hierarchische Speicher Daten und Adressen speichert und die Vorrichtung umfasst: einen Selektor, der auf Basis eines ersten Zustandes und/oder von Transaktionsinformationen Speichertransaktionen auswählt, wobei die Speichertransaktionen durch den hierarchischen Speicher abzuarbeiten sind; einen Auslöser (250); und einen Abtaster (280), der Zustände des Computersystems (100) speichert, die mit den ausgewählten Transaktionen identifiziert werden, während die ausgewählten Speichertransaktionen in dem hierarchischen Speicher abgearbeitet werden, wobei der Selektor ein Modus-Register (264) sowie ein Überwachungs-Register (263) enthält und das Modus-Register einen Transaktionsmodus speichert, gemäß dem Speichertransaktionen ausgewählt werden, und das Überwachungs-Register den ersten Zustand speichert, gemäß dem Speichertransaktionen ausgewählt werden; und der Auslöser den Selektor auf Basis eines zweiten Zustandes und/oder von Transaktionsinformationen aktiviert; dadurch gekennzeichnet, dass: die Auswählfunktion bestimmt, welche spezielle Speichertransaktion abgetastet werden sollte.
  2. Vorrichtung nach Anspruch 1, wobei die abgetasteten Zustände in einem Puffer (300, 302) gespeichert werden, und die des Weiteren eine Einrichtung enthält, die signalisiert, wenn der Puffer zu lesende Zustände speichert.
  3. Vorrichtung nach Anspruch 1, wobei die Auswahl auf einer logischen Kombination des Modus und des ersten Zustandes basiert.
  4. Vorrichtung nach Anspruch 1 oder Anspruch 2, wobei der Selektor (260) durch einen Zähler (265) mit dem Auslöser (250) gekoppelt ist und der Zähler eine Rate bestimmt, mit der der Selektor aktiviert wird, wobei die Rate durch das Zählen von Auslöser-Ereignissen bestimmt wird.
  5. Vorrichtung nach Anspruch 4, wobei die Auslöser-Ereignisse Taktzyklen sind.
  6. Vorrichtung nach Anspruch 4, wobei die Auslöser-Ereignisse Transaktionen sind.
  7. Vorrichtung nach einem der Ansprüche 1 bis 6, wobei der Auslöser (250) und der Selektor (260) jeweils die Transaktionsinformationen von einem Übersetzungs-Vorgriffspuffer (240) empfangen und der Übersetzungs-Vorgriffspuffer virtuelle Adressen in physikalische Adressen übersetzt.
  8. Vorrichtung nach einem der Ansprüche 1 bis 7, wobei ein Transaktions-Modus Transaktionen auf Adressen basierend auswählt und die Adressen physikalische Blockadressen, Cache-Zeilennummern, physikalische Speicheradressen oder virtuelle Speicheradressen enthalten.
  9. Vorrichtung nach einem der Ansprüche 1 bis 7, wobei ein Transaktions-Modus Transaktionen auf Speicherebenen basierend auswählt, und die Speicherebenen chipintegrierte Caches, externe Caches und Hauptspeicher einschließen.
  10. Vorrichtung nach einem der Ansprüche 1 bis 7, wobei ein Transaktions-Modus Transaktionen auf Quellen der Transaktionen basierend auswählt und die Quellen Befehle, Direktspeicherzugriffs-Operationen und Datenkohärenzmeldungen einschließen.
  11. Vorrichtung nach einem der Ansprüche 1 bis 7, wobei ein Transaktions-Modus Transaktionen auf Kontexten basierend auswählt und wobei Kontexte Prozesse, Threads, Adressräume oder Hardware-Kontexte einschließen.
  12. Vorrichtung nach Anspruch 2, wobei der Puffer (300302) eine Vielzahl von Feldern (310, 320, 340, 350, 360, 370) enthält und die Felder zum Speichern des Status von an Adressen gespeicherten Daten, auf die durch die ausgewählte Tiansaktion zugegriffen wird, des Status der Adressen, Adressen der Daten, auf die durch die Transaktion zugegriffen wird, Kennungen von Kontexten, aus denen die Transaktionen stammen, der Identifizierung von Quellen der Transaktionen und von Latenzen dienen, die gemessen werden, während die Transaktionen abgearbeitet werden.
  13. Vorrichtung nach einem der Ansprüche 1 bis 12, wobei der erste oder zweite Zu stand den Zustand von internen Speichersystemstrukturen einschließt und die internen Speichersystemestrukturen Schreibpuffer, Victim-Caches, Übersetzungs-Vorgriffspuffer, Miss-Adressendateien oder Speichertransaktions-Warteschlangen einschließen und der Zustand die Anzahl aktiver Einträge in den internen Speichersystemstrukturen einschließt.
  14. Vorrichtung nach Anspruch 4, wobei der Zähler (265) mit einem vorgegebenen Wert geladen ist, um die Rate des Abtastens zu bestimmen.
  15. Vorrichtung nach Anspruch 14, wobei der vorgegebene Wert willkürlich aus einem Intervall von Zahlen gewählt wird.
  16. Vorrichtung nach einem der Ansprüche 1 bis 15, wobei die Auslöser-Aktivierungen auf dem Typ von Transaktion basieren und wobei der Typ Lese-, Schreib- oder Annulierungstiansaktionen einschließt.
  17. Vorrichtung nach einem der Ansprüche 1 bis 16, wobei die ausgewählten Transaktionen eine Abfolge von Transaktionen einschließen, die einem vorgegebenen gleichen Auswahlkriterium entsprechen.
  18. Vorrichtung nach einem der Ansprüche 1 bis 17, wobei Software den Selektor (260) und den Auslöser (250) setzen kann.
  19. Vorrichtung nach einem der Ansprüche 1 bis 18, wobei der erste Zustand vor und der zweite Zustand nach dem Abarbeiten der ausgewählten Transaktionen aufgezeichnet wird.
  20. Vorrichtung nach einem der Ansprüche 1 bis 19, wobei der erste und der zweite Zustand Ereignisse einschließen, die gezählt werden, während aufeinanderfolgende ausgewählte Transaktionen abgearbeitet werden.
  21. Vorrichtung nach Anspruch 20, wobei die Ereignisse Taktzyklen und Transaktionen einschließen.
  22. Vorrichtung nach einem der Ansprüche 1 bis 19, wobei der Zustand einen Index eines Eintrages in einem Übersetzungs-Vorgriffspuffer (240) einschließt, der verwendet wird, um eine spezielle virtuelle Adresse der Transaktionen in eine entsprechende physikalische Adresse umzuwandeln.
  23. Vorrichtung nach einem der Ansprüche 1 bis 19, wobei der abgetastete Zustand einen Teil der Adressen der Transaktion einschließt und der Teil Indizes in Speicherseiten entspricht.
  24. Computersystem (100), das eine Vorrichtung nach einem der Ansprüche 1 bis 23 enthält.
DE69821196T 1997-11-26 1998-11-25 Anordnung zum räumlichen und zeitlichen Abtasten in einem Rechnerspeichersystem Expired - Lifetime DE69821196T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US979822 1997-11-26
US08/979,822 US6202127B1 (en) 1997-11-26 1997-11-26 Apparatus for spatial and temporal sampling in a computer memory system

Publications (2)

Publication Number Publication Date
DE69821196D1 DE69821196D1 (de) 2004-02-26
DE69821196T2 true DE69821196T2 (de) 2004-09-02

Family

ID=25527176

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69821196T Expired - Lifetime DE69821196T2 (de) 1997-11-26 1998-11-25 Anordnung zum räumlichen und zeitlichen Abtasten in einem Rechnerspeichersystem

Country Status (4)

Country Link
US (1) US6202127B1 (de)
EP (1) EP0918288B1 (de)
JP (1) JP4371452B2 (de)
DE (1) DE69821196T2 (de)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6601149B1 (en) * 1999-12-14 2003-07-29 International Business Machines Corporation Memory transaction monitoring system and user interface
US6725334B2 (en) * 2000-06-09 2004-04-20 Hewlett-Packard Development Company, L.P. Method and system for exclusive two-level caching in a chip-multiprocessor
US6668308B2 (en) * 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
US7007205B1 (en) 2001-02-15 2006-02-28 Silicon Graphics, Inc. Method and apparatus for recording trace data in a microprocessor based integrated circuit
US6738885B1 (en) * 2001-02-15 2004-05-18 Silicon Graphics, Inc. Device and method for storing information in memory
US7769974B2 (en) * 2004-09-10 2010-08-03 Microsoft Corporation Increasing data locality of recently accessed resources
US7287128B1 (en) 2005-01-25 2007-10-23 Seagate Technology Llc Write on reference mesh
US7991959B2 (en) * 2005-05-16 2011-08-02 Texas Instruments Incorporated Visualizing contents and states of hierarchical storage systems
US7603521B2 (en) * 2005-05-16 2009-10-13 Texas Instruments Incorporated Prioritizing caches having a common cache level
US7779206B2 (en) * 2005-05-16 2010-08-17 Texas Instruments Incorporated Cache inspection with inspection bypass feature
US7739453B2 (en) * 2005-05-16 2010-06-15 Texas Instruments Incorporated Providing information associated with a cache
US20060259696A1 (en) * 2005-05-16 2006-11-16 Texas Instruments Incorporated Determining differences between cached copies of an address
US20060259695A1 (en) * 2005-05-16 2006-11-16 Texas Instruments Incorporated Visualizing contents and states of hierarchical storage systems across multiple cores
US7788642B2 (en) * 2005-05-16 2010-08-31 Texas Instruments Incorporated Displaying cache information using mark-up techniques
US7673101B2 (en) * 2005-05-16 2010-03-02 Texas Instruments Incorporated Re-assigning cache line ways
US20060259701A1 (en) * 2005-05-16 2006-11-16 Texas Instruments Incorporated Providing cache status information across multiple cache levels
US7434002B1 (en) * 2006-04-24 2008-10-07 Vmware, Inc. Utilizing cache information to manage memory access and cache utilization
US7581064B1 (en) 2006-04-24 2009-08-25 Vmware, Inc. Utilizing cache information to manage memory access and cache utilization
US8095931B1 (en) * 2006-04-27 2012-01-10 Vmware, Inc. Controlling memory conditions in a virtual machine
US8949295B2 (en) 2006-09-21 2015-02-03 Vmware, Inc. Cooperative memory resource management via application-level balloon
US8131941B2 (en) * 2007-09-21 2012-03-06 Mips Technologies, Inc. Support for multiple coherence domains
US20090089510A1 (en) 2007-09-28 2009-04-02 Mips Technologies, Inc. Speculative read in a cache coherent microprocessor
US8392663B2 (en) * 2007-12-12 2013-03-05 Mips Technologies, Inc. Coherent instruction cache utilizing cache-op execution resources
US20090248988A1 (en) * 2008-03-28 2009-10-01 Mips Technologies, Inc. Mechanism for maintaining consistency of data written by io devices
JP5256948B2 (ja) * 2008-09-04 2013-08-07 富士通株式会社 キャッシュ論理検証装置、キャッシュ論理検証方法およびキャッシュ論理検証プログラム
US8418146B2 (en) * 2008-11-26 2013-04-09 Microsoft Corporation Sampling techniques for dynamic data-race detection
US8583875B1 (en) 2010-07-13 2013-11-12 Vmware, Inc. Efficient readable ballooning of guest memory by backing balloon pages with a shared page
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
CN103620547B (zh) 2011-01-27 2018-07-10 英特尔公司 使用处理器的转换后备缓冲器的基于客户指令到本机指令范围的映射
WO2012103373A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Variable caching structure for managing physical storage
WO2012103245A2 (en) 2011-01-27 2012-08-02 Soft Machines Inc. Guest instruction block with near branching and far branching sequence construction to native instruction block
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
WO2012103253A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Multilevel conversion table cache for translating guest instructions to native instructions
US9684600B2 (en) * 2011-11-30 2017-06-20 International Business Machines Corporation Dynamic process/object scoped memory affinity adjuster
US9712453B1 (en) 2012-03-26 2017-07-18 Amazon Technologies, Inc. Adaptive throttling for shared resources
US10152409B2 (en) 2012-04-30 2018-12-11 Vmware, Inc. Hybrid in-heap out-of-heap ballooning for java virtual machines
US9852054B2 (en) 2012-04-30 2017-12-26 Vmware, Inc. Elastic caching for Java virtual machines
US9015203B2 (en) 2012-05-31 2015-04-21 Vmware, Inc. Balloon object feedback for Java Virtual Machines
US9940228B2 (en) 2012-06-14 2018-04-10 Vmware, Inc. Proactive memory reclamation for java virtual machines
WO2014151652A1 (en) 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor
WO2014151691A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. Method and apparatus for guest return address stack emulation supporting speculation
US10140216B2 (en) * 2016-01-21 2018-11-27 Arm Limited Measuring address translation latency
DE102018128045A1 (de) 2018-11-09 2020-05-14 Infineon Technologies Ag Behandlung von Ausnahmen in einem Programm
US11048637B2 (en) * 2019-06-18 2021-06-29 Samsung Electronics Co., Ltd. High-frequency and low-power L1 cache and associated access technique
US11144356B2 (en) * 2019-10-30 2021-10-12 International Business Machines Corporation Dynamic determination of memory requirements for function as a service multi-invocation flows

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6047623B2 (ja) 1982-02-12 1985-10-22 株式会社日立製作所 アドレス変換方式
US4583165A (en) 1982-06-30 1986-04-15 International Business Machines Corporation Apparatus and method for controlling storage access in a multilevel storage system
US5282274A (en) 1990-05-24 1994-01-25 International Business Machines Corporation Translation of multiple virtual pages upon a TLB miss
US5151981A (en) * 1990-07-13 1992-09-29 International Business Machines Corporation Instruction sampling instrumentation
US5418973A (en) * 1992-06-22 1995-05-23 Digital Equipment Corporation Digital computer system with cache controller coordinating both vector and scalar operations
US5623627A (en) * 1993-12-09 1997-04-22 Advanced Micro Devices, Inc. Computer memory architecture including a replacement cache
US5603004A (en) * 1994-02-14 1997-02-11 Hewlett-Packard Company Method for decreasing time penalty resulting from a cache miss in a multi-level cache system
EP0689141A3 (de) * 1994-06-20 1997-10-15 At & T Corp Unterbrechungsbasierte hardwaremässige Unterstützung für Systemleistungsprofilierung
US5608892A (en) * 1995-06-09 1997-03-04 Alantec Corporation Active cache for a microprocessor
JPH0997214A (ja) 1995-09-29 1997-04-08 Internatl Business Mach Corp <Ibm> 補助プロセッサのためのアドレス変換を含む情報処理システム

Also Published As

Publication number Publication date
EP0918288A3 (de) 2000-01-12
DE69821196D1 (de) 2004-02-26
EP0918288A2 (de) 1999-05-26
JP4371452B2 (ja) 2009-11-25
EP0918288B1 (de) 2004-01-21
US6202127B1 (en) 2001-03-13
JPH11328019A (ja) 1999-11-30

Similar Documents

Publication Publication Date Title
DE69821196T2 (de) Anordnung zum räumlichen und zeitlichen Abtasten in einem Rechnerspeichersystem
DE69824688T2 (de) System und Verfahren zur Leistungsoptimierung eines Rechnersystems
DE69819849T2 (de) Anordnung zum willkürlichen Abtasten von Instruktionen in einer Prozessorpipeline
DE69816686T2 (de) Hochfrequenzabtastung von Leistungszählern
DE69921289T2 (de) Verfahren um volumen einer plattenmatrixspeicheranordnung auszutauschen
DE69826418T2 (de) Anordnung zum Abtasten mehrerer Instruktionen in einer Prozessorpipeline
DE112006003081B4 (de) Leistungspriorisierung in Multithreadprozessoren
DE3751284T2 (de) Verfahren für die Abschätzung der Leistung eines Datenprozessorsystems.
DE60221136T2 (de) System und verfahren zur überwachung von computeranwendungen und der betriebsmittelausnutzung
DE19983793B4 (de) System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher
DE3689287T2 (de) Datenverarbeitungsgerät.
DE3687842T2 (de) Verfahren und Gerät zum Software-Austesten.
DE602004012492T2 (de) DMA-Steuerung mit Busbesetzungszeit-Beschränkung sowie DMA-Parametersätze für mehrere logische Prozessoren
DE112005002420T5 (de) Verfahren und Vorrichtung zum Pushen von Daten in den Cache eines Prozessors
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE112005001050T5 (de) Liefern eines alternativen Cachespeicherungsschemas auf der Speicherbereichnetzwerkebene
DE10050684A1 (de) Verfahren und System zur periodischen Ablaufverfolgung für die Echtzeitgenerierung von Segmenten von Aufrufstack-Bäumen
DE102007006190A1 (de) Techniken zur Verwendung von Speicher-Attributen
DE112012004629T5 (de) Dynamischer Speicheraffinitätsanpasser auf Prozess/Objektebene
DE112006002908T5 (de) Technik für die Kommunikation und Synchronisation von Threads
Trahay et al. Numamma: Numa memory analyzer
DE112014000336T5 (de) Vorablesezugriff für einen übergeordneten Kern in einem Mehrkern-Chip
DE69737116T2 (de) Mehrstufiger Cachespeicher
DE69126108T2 (de) Rotierende Speicheranordnung
DE3650021T2 (de) Cache-Speicherübereinstimmungsvorrichtung mit Verriegelung.

Legal Events

Date Code Title Description
8364 No opposition during term of opposition