DE69824688T2 - System und Verfahren zur Leistungsoptimierung eines Rechnersystems - Google Patents

System und Verfahren zur Leistungsoptimierung eines Rechnersystems Download PDF

Info

Publication number
DE69824688T2
DE69824688T2 DE69824688T DE69824688T DE69824688T2 DE 69824688 T2 DE69824688 T2 DE 69824688T2 DE 69824688 T DE69824688 T DE 69824688T DE 69824688 T DE69824688 T DE 69824688T DE 69824688 T2 DE69824688 T2 DE 69824688T2
Authority
DE
Germany
Prior art keywords
transactions
computer system
information
functional units
memory
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 - Fee Related
Application number
DE69824688T
Other languages
English (en)
Other versions
DE69824688D1 (de
Inventor
Jeffrey A. Menlo Park Dean
George Z. Marlboro Chrysos
James E. Newton Hicks
Carl A. Atherton Waldspurger
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 DE69824688D1 publication Critical patent/DE69824688D1/de
Application granted granted Critical
Publication of DE69824688T2 publication Critical patent/DE69824688T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • 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/3409Recording 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 for performance assessment
    • 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/3452Performance evaluation by statistical analysis
    • 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/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/87Monitoring of transactions
    • 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

Landscapes

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

Description

  • Diese Erfindung bezieht sich allgemein auf die Optimierung der Leistung von Computersystemen, und insbesondere auf ein Sammeln von Leistungs-Statistiken durch Abtasten, und Analysieren der abgetasteten Statistiken, um eine Systemoptimierung zu leiten.
  • Computersysteme werden anspruchsvoller und schneller, allerdings hält die Software-Anwendungs-Funktion nicht damit Schritt. Zum Beispiel wird in einem typischen Vier-Wege-Ausgabe-Prozessor nur ungefähr ein Zwölftel der verfügbaren Ausgabe-Schlitze gut ausgenutzt. Es ist wichtig zu verstehen, warum der Software-Ausführungs-Fluss nicht vollständig von der erhöhten Berechnungsleistung, die zum Verarbeiten von Befehlen verfügbar ist, vorteilhaft Gebrauch machen kann. Ähnliche Probleme entstehen in anderen Vorrichtungen in Computersystemen, die graphische Steuereinheiten, Speichersysteme, Eingabe/Ausgabe-Steuereinheiten und Netzwerk-Schnittstellen umfassen: die tatsächliche Funktionsweise bzw. Leistung ist oftmals geringer als die potentielle Spitzenleistung und es ist wichtig zu verstehen, warum dies der Fall ist.
  • Es ist üblich, solche Probleme bei Prozessoren den Speicher-Latenzzeiten zuzuschreiben, wobei, tatsächlich, viele Software-Anwendungen viele Zyklen aufwenden, um darauf zu warten, dass Datenübertragungen abgeschlossen werden. Moderne Speicher sind typischerweise in einer Multi-Level-Hierarchie angeordnet. Dabei ist der Datenfluß komplex und schwierig zu bestimmen, insbesondere dann, wenn mehrere Kontexte gleichzeitig für dieselbe Speicherressource, wie beispielsweise Cache-Blöcke, in Wettbewerb treten. Andere Probleme, wie beispielsweise Verzweigungs-Fehlvorhersagen und Cache-Fehlbeurteilungen, verschwenden auch Prozessor-Zyklen und verbrauchen eine Speicherbandbreite für Daten, auf die nutzlos Bezug genommen ist.
  • Eingabe/Ausgabe-Schnittstellen und Netzwerk-Steuereinheiten von Computersystemen werden auch anspruchsvoller. In vielen Ausführungsformen umfassen die Schnittstellen und Steuereinheiten Mikroprozessoren und Pufferspeicher, bei denen es schwieriger wird, das dynamische Verhalten zu messen und zu verstehen, wenn sich die Komplexität erhöht.
  • Unabhängig von den allgemeinen Ursachen müssen System-Architekten und Hardware- und Softwareingenieure wissen, welche Transaktionen blockieren, welche Da ten zu einer Engstelle werden, und warum dies der Fall ist, um die Leistung von modernen Computersystemen zu verbessern.
  • Typischerweise wird dies durch Erzeugen eine „Profils" über die Verhaltensweise eines Computersystems, während es arbeitet, vorgenommen. Ein Profil ist eine Aufzeichnung von Leistungs-Daten. Häufig wird das Profil graphisch oder statistisch so präsentiert, dass Funktions- bzw. Leistungs-Engstellen leicht identifiziert werden können.
  • Ein Profilieren kann durch eine Gerätschaft und Simulation vorgenommen werden. Mit einer Gerätschaft bzw. Instrumentierung wird ein zusätzlicher Code zu Ausführungsprogrammen hinzugefügt, um spezifische Ereignisse zu überwachen. Eine Simulation versucht, das Verhalten des gesamten Systems in einer künstlichen Umgebung zu emulieren, im Gegensatz dazu, das Programm in dem realen System auszuführen. Auch kann eine Instrumentierung nur für Prozessor-Pipelines, nicht für andere Vorrichtungen, verwendet werden.
  • Jedes dieser zwei Verfahren besitzt seine Nachteile. Eine Instrumentierung stört das wahre Verhalten des Systems aufgrund der hinzugefügten Befehle und der zusätzlichen Daten-Referenzen. Mit anderen Worten schlägt eine Instrumentierung von komplexen Systemen in großem Maßstab in zweierlei Hinsicht fehl. Das System wird verlangsamt und die Funktions- bzw. Leistungs-Daten sind schlecht, oder bestenfalls oberflächlich.
  • Eine Simulation vermeidet eine Störung und Overhead. Allerdings arbeitet eine Simulation nur bei kleinen, gut definierten Problemen, die leicht als Modell dargestellt werden können. Es ist extrem schwierig, wenn nicht sogar unmöglich, ein System in großem Maßstab zu simulieren, mit tausenden von Benutzern, die über Faseroptik-Verbindungen mit Netzwerk-Steuereinheiten verbunden sind, die auf Terabytes an Daten über die Verwendung von Dutzenden von Mehrfach-Ausgabe-Prozessoren zugreifen. Es ist an das modellmäßige Darstellen einer Web-Suchmaschine zu denken, wie beispielsweise Digital's Alta Vista, die auf einige Zehnmillionen Treffer jeden Tag von der ganzen Welt anspricht. Jeder Treffer bietet möglicherweise bis zu hunderten von Web-Seiten als Suchergebnisse an.
  • Eine in einer Hardware ausgeführte Ereignis-Abtastung ist verwendet worden, um Profil-Informationen für Prozessoren zu liefern. Eine Hardware-Abtastung besitzt eine Anzahl von Vorteilen gegenüber einer Simulation und Instrumentierung: sie erfordert keine modifizierenden Software-Programme, um deren Leistung zu messen. Eine Abtastung arbeitet in Bezug auf vollständige Systeme, mit einem relativ geringen Overhead. Tatsächlich ist in neuerer Zeit gezeigt worden, dass eine auf einer Abtastung basierende Profilierung mit geringem Overhead dazu verwendet werden kann, detaillierte Instruktions-Level-Informationen über Pipeline-Engstellen und deren Ursachen zu erhalten. Allerdings fehlt es vielen Hardware-Abtasttechniken an einer Flexibilität, da sie so ausgelegt sind, um spezifische Ereignisse, in Isolation, zu messen.
  • Es ist erwünscht, ein verallgemeinertes Verfahren und ein System zum Optimieren der Leistung, um Computersysteme zu betreiben, zu schaffen. Das Verfahren sollte in der Lage sein, Prozessoren, Speicher-Untersysteme, I/O-Schnittstellen, Graphik-Steuereinheiten, Netzwerk-Steuereinheiten, oder irgendeine andere Komponente, die digitale Signale manipuliert, zu überwachen.
  • Die Überwachung sollte in der Lage sein, wahlweise Transaktionen abzutasten und relevante Informationen über jede davon aufzuzeichnen. Im Gegensatz dazu sollte, mit einem auf einem Ereignis basierenden System, eine wahlweise Transaktions-Überwachung ermöglichen, nicht nur diskrete Ereignisse zu überwachen, sondern auch Ereignisse in irgendeiner Kombination. Es sollte auch möglich sein, auf die abgetasteten Ereignisse in Bezug auf individuelle Transaktionen, wie beispielsweise Befehle, oder Speicher-Referenzen, oder Zusammenhänge, in denen die Transaktionen standen, Bezug zu nehmen. Zusätzlich sollte es möglich sein, die abgetasteten Daten zu mehreren, gleichzeitigen Transaktionen in Bezug zu setzen, um ein wahres Verständnis über das System zu erhalten. All dies sollte, ohne Störung der Betriebsweise des Systems, eine andere als die Zeit, die erforderlich ist, um die erwünschien Leistungsdaten zu lesen, möglich sein.
  • ROTH C ET AL: „PERFORMANCE MONITORING ON THE POWERPCTM 604 MICROPROCESSOR" INTERNATIONAL CONFERENCE ON COMPUTER DESIGN: VLSI IN COMPUTERS AND PROCESSORS, US, NEW YORK, IEEE, 2. Oktober 1995 (1995-10-2), Seiten 212–215, XP00631915, offenbart ein System zum Optimieren der Leistung eines Computersystems, wobei das Computersystem eine Vielzahl von Funktionseinheiten umfasst, wobei das System zum Optimieren aufweist:
    eine Quelle zum Bereitstellen von Transaktionen, die durch das Computersystem abzuarbeiten sind;
    eine Einrichtung zum Auswählen von Transaktionen zum Abtasten, die durch eine Vielzahl von Funktionseinheiten des Computersystems abzuarbeiten sind;
    einen Prozessor und Software zum Analysieren der Zustandsinformationen.
  • Gemäß der vorliegenden Erfindung ist ein solches System dadurch gekennzeichnet, dass die Transaktionen gleichzeitig von den funktionellen Einheiten abgetastet werden; und
    durch Pufferspeicher, die Zustandsinformationen speichern, während die ausgewählten Transaktionen durch die Funktionseinheiten abgearbeitet werden, wobei die Zustandsinformationen wenigstens eine Adressen-Information, eine Transaktionsquellen-Information und eine Latenz-Information enthalten,
    wobei die Pufferspeicher Zustandsinformationen im Verlauf der Zeit als eine Ansammlung von Zustandsinformationen speichern und die Ansammlung von Zustandsinformationen analysiert wird, um die Leistungsstatistiken des Computersystems zu schätzen, wobei die Leistungsstatistiken verwendet werden, um die Leistung des Computersystems dynamisch zu optimieren, während das Computersystem arbeitet.
  • Transaktionen, die durch eine bestimmte Funktionseinheit des Computersystems verarbeitet werden sollen, werden für eine Überwachung ausgewählt. Die Transaktionen können gleichzeitig ausgewählt werden. Zustandsinformationen werden gespeichert, während die ausgewählten Transaktionen durch die Funktionseinheit verarbeitet werden. Die Zustandsinformationen werden analysiert, um eine Optimierung zu leiten.
  • Gemäß einem Aspekt können mehrere, unterschiedliche Funktionseinheiten gleichzeitig abgetastet werden.
  • Die Erfindung schafft auch ein Verfahren zum Optimieren der Leistung eines Computersystems mit einer Vielzahl von Funktionseinheiten, wobei das Verfahren die folgenden Schritte umfasst:
    Bereitstellen von Transaktionen von einer Quelle, die durch das Computersystem abzuarbeiten sind:
    Auswählen von durch eine Vielzahl von Funktionseinheiten des Computersystems abzuarbeitenden Transaktionen, wobei die Transaktionen gleichzeitig durch die Funktionseinheiten abgetastet werden;
    Speichern von Zustandsinformationen als eine Ansammlung von Zustandsinformationen im Verlauf der Zeit in Pufferspeichern, während die ausgewählten Transaktionen durch die Funktionseinheiten abgearbeitet werden, wobei die Zustandsinformationen we nigstens eine Adressen-Information, eine Transaktionsquellen-Information und eine Latenz-Information enthalten; und
    Analysieren der Ansammlung von Zustandsinformationen unter Verwendung eines Prozessors und von Software, um Leistungsstatistiken des Computersystems zu schätzen, wobei die Leistungsstatistiken verwendet werden, um die Leistung des Computersystems dynamisch zu optimieren, während das Computersystem arbeitet.
  • In den beigefügten Zeichnungen:
  • 1 zeigt ein Blockdiagramm eines komplexen Computersystems, das abgetastet werden soll;
  • 2 zeigt ein Blockdiagramm eines Mechanismus zum Auswählen von Transaktionen, verarbeitet durch das System der 1, gemäß einer bevorzugten Ausführungsform;
  • 3 zeigt ein Blockdiagramm eines Abtastpuffers; und
  • 4 zeigt ein Blockdiagramm eines Verfahrens zum Abtasten und Optimieren eines Computersystems.
  • 1 stellt ein Computersystem 100 dar. Das Computersystem 100 umfasst eine oder mehrere funktionale Einheiten) 111114, zum Beispiel Prozessoren, Speicher, eine Eingabe/Ausgabe-Schnittstelle und Netzwerk-Steuereinheiten. Typischerweise sind die Einheiten 111114 miteinander durch Busse, Datenkanäle und Netzwerke, z. B. 150, in Abhängigkeit von einer bestimmten Konfiguration, verbunden.
  • Der Prozessor 111 kann von einer verschiedenartigen Architektur sein, CISC oder RISC, Einfach- oder Mehrfach-Ausgabe, locker oder eng gekoppelt. Die Speicher 112 sind typischerweise unter hierarchischen Niveaus angeordnet, wobei Speicher näher zu den Prozessoren eine höhere Bandbreite und einen geringeren Speicher haben, und Speicher, die weiter entfernt liegen, eine geringere Bandbreite und mehr Speicher haben. Die Speicher können auf einem Chip oder außerhalb eines Chips befindliche Cache-Speicher, SAM, DRAM, eine Festplatte, oder dergleichen, umfassen. Die I/O-Schnittstelle 113 verbindet sich mit peripheren Vorrichtungen. Einige der Schnittstellen können interne Prozessoren und Speicher umfassen. Die Netzwerk-Steuereinheiten 114 können sich schnittstellenmäßig mit Local- und Wide-Area-Networks verbinden.
  • Während eines Betriebs des Systems 100 werden Transaktionen (T) 101 durch eine Quelle 110 als Eingabe für das System erzeugt. Die verschiedenen Funktionseinheiten 111114 des Systems 100 verarbeiten die Transaktionen 101, um einen Ausgang 102 für ein Drain zu schaffen. Es sollte angemerkt werden, dass die Transaktionen von außerhalb des Systems stammen können, oder von innerhalb des Systems, und zwar aufgrund der Verarbeitung. Zusätzlich erzeugt die Verarbeitung von Transaktionen, zum Beispiel von Befehlen, gewöhnlich viele zusätzliche, interne Transaktionen, wie beispielsweise Speicher-Referenzen, Platten-Transfers, oder Netzwerk-Nachrichten.
  • Während die Transaktionen 101 verarbeitet werden, werden Ereignisse 104 signalisiert, z. B. Befehl-Aussonderungen und Traps, Cache-Fehler, Taktzyklen, Ausnahmezustände, usw.. Die tatsächlichen Ereignisse 104 können in Abhängigkeit von der Ausführung der Funktionseinheiten 111114 signalisiert werden.
  • Während das System 100 arbeitet, wird ein Zustand 130 beibehalten. Der Zustand 130 wird gewöhnlich über die Funktionseinheiten verteilt. Eine Verarbeitung der Transaktionen verursacht Zustandsübergänge. Einige der Zustandsübergänge können von einem bestimmten Interesse sein, um die Funktionsweise bzw. Leistung des Systems zu verstehen.
  • Um die Abtastung von Transaktionen, Ereignissen und dem Zustand vorzunehmen, werden Transaktionen einem Transaktions-Selektor präsentiert. Der Transaktions-Selektor kann für unterschiedliche Funktionseinheiten 111114 unter Verwendung eines üblichen Designs, wie es hier beschrieben ist, repliziert werden.
  • Allgemein muss der Selektor eine Einrichtung sein, um Transaktionen basierend auf dem Zustand des Systems und die Transaktion selbst auszuwählen. Obwohl es nicht Teil der Erfindung ist, können Transaktionen zufällig, zum Beispiel durch Initialisieren eines Zählers auf einen zufällig auswählenden Wert, Erhöhen des Zählers für jede Transaktion und Auswählen einer Transaktion, wenn der Zähler überläuft (oder unterläuft), ausgewählt werden. Transaktionen können nur für eine solche Verarbeitung von bestimmten Eigenschaften ausgewählt werden (zum Beispiel durch Erhöhen des Zählers nur für Transaktionen, die einen spezifizierten Satz von Eigenschaften anpassen), oder können nur dann ausgewählt werden, wenn sich das System in bestimmten Zuständen befindet (durch Erhöhen des Zählers nur dann, wenn ein spezifizierter Zustand vorliegt).
  • 2 stellt die herausragenden Merkmale einer möglichen Ausführung eines Selektors 200 dar. Der Selektor 200 umfasst einen Trigger 210, einen Zähler 220 und einen Markierer 230.
  • Der Zähler 220 wird mit einem Wert (Init-Wert) 221 auf einer Leitung 222 eingestellt und zurückgesetzt (initialisiert). Der Wert 221 kann durch eine Hardware (HW) 223 oder eine Software (SW) 224 erzeugt werden. Wie nachfolgend beschrieben werden wird, bestimmt der Wert 221, teilweise, eine Abtastrate, und kleine Anfangswerte erhöhen die Abtastrate und große Werte verringern die Abtastrate. Falls der Zähler abwärts zählt, dann erhöhen kleine Anfangswerte die Abtastrate und große Anfangswerte verringern die Rate.
  • Als ein Vorteil kann der Wert 221 gleichförmig und zufällig aus einem ganzzahligen Intervall ausgewählt werden. Die durchschnittliche Rate einer Abtastung kann durch Auswählen eines geeigneten, ganzzahligen Intervalls eingestellt werden, von dem der Wert 221 ausgewählt ist.
  • Der Zähler 220 wird durch ein Zählerereignissignal, empfangen auf der Leitung 225, erhöht (oder erniedrigt, in Abhängigkeit von dem Design). Das Zählerereignissignal 225 kann von einem oder von mehreren Ereignissignal(en) (Ereignis1, Ereignis2, Ereignis3) 104 durch ein Zählauswahlsignal auf der Leitung 229 ausgewählt werden. Die Ereignissignale 104 können Taktzyklen, Transaktionen, verfügbar für eine Verarbeitung, Transaktionen, ausgenommen für eine Verarbeitung, usw., umfassen.
  • Der Trigger 210 bestimmt, wenn und unter welchen Bedingungen der Zähler 220 aufwärts zählt (oder abwärts zählt), und der Markierer 230 bestimmt, welchen Transaktionen als ausgewählte Transaktionen (T') 103 markiert sind.
  • Deshalb empfängt der Trigger 210 die Transaktionen 101, die Ereignisse 104 und den Zustand 130, und zwar in Abhängigkeit von der bestimmten Funktionseinheit, die abgetastet wird. Die momentanen Transaktions-Informationen, die Ereignisse und der Zustand werden logisch durch den Trigger 210 unter Verwendung einer Funktion, zum Beispiel einer logischen Funktion, umfassend Bool'sche Operatoren (AND, OR, NOT), kombiniert. Falls das Ergebnis der Kombination wahr ist, dann wird der Zähler 220 zum Zählen freigegeben, wobei ansonsten, falls es falsch ist, dies nicht der Fall ist.
  • Einige spezifische Beispiele von nützlichen Triggerfunktionen umfassen, sind allerdings nicht darauf beschränkt, solche, die passen bei: irgendeiner Transaktion, Transaktionen eines bestimmten Typs (Speicher-Referenz-Befehle, Transaktionen, die auf ein bestimmtes Niveau der Speicherhierarchie Bezug nehmen, z. B. ein bestimmter Cache oder Cache-Block), Transaktionen, die einen bestimmten Zustandsübergang verursachen werden, z. B. Dirty-Daten-Ausweisungen, Daten, die auf einen bestimmten Bereich in den Speichern Bezug nehmen, z. B. einen Bereich von Adressen, eine bestimmte Cache-Linie, einen bestimmten Cache-Block innerhalb einer bestimmten Cache-Leitung, einen bestimmten Bereich des Cache, usw., Transaktionen von einer bestimmten Quelle, z. B. von einer Prozessor-Pipeline, von einer I/O-Schnittstelle, z. B. einem Direktspeicherzugriff, Transaktionen, die auf Daten-Kohärenz-Nachrichten in Bezug gesetzt sind, usw.. Es sollte angenommen werden, dass der Trigger 220 durch entweder die Hardware 223 oder die Software 224 programmierbar ist.
  • Die Verwendung der Triggerfunktion 250 ermöglicht der Abtast-Hardware, spezifizierte Transaktionen zu überspringen. Zum Beispiel würde dies, in einem Beispiel mit anspruchsvoller Funktion, ermöglichen, drei Zugriffs-Transaktionen zu einem bestimmten Cache-Block zu zählen und dann Speicher-Transaktions-Abtastungen für die nächsten zwei Fehlzugriffe zu diesem selben Block zu sammeln. In einem anderen nützlichen Beispiel kann man eine Markierung nach einer Transaktion, die von einem bestimmten Zusammenhang stammt, wie beispielsweise einem Prozessor, einem Prozess in einem Thread, und einer I/O-Schnittstelle, stammen, triggern, und dann Abtastungen für eine spezifizierte Zahl von darauf folgenden Transaktionen, oder eine spezifizierte Zeitdauer, sammeln.
  • Der Markierer 230 identifiziert eine Transaktion als eine ausgewählte Transaktion T' 103, immer wenn der Zähler überläuft (oder unterläuft). An diesem Punkt kann der Zähler 220 mit einem neuen Wert 221 zurückgesetzt werden. Es sollte angemerkt werden, dass sich der Wert dynamisch in Abhängigkeit davon ändern kann, welcher Typ einer Abtastung erwünscht ist, der detaillierten Abtastung über ein kurzes Zeitintervall mit vielen Abtastungen, oder der allgemeinen Abtastung mit geringem Overhead über ein längeres Zeitintervall unter Verwendung einer zufälligen Abtastung.
  • Der Markierer 230 ist auch so konfiguriert, dass er Ereignisse 104 und einen Zustand 130, ebenso wie die Transaktionen, aufnehmen kann. Die Aufgabe des Markierers 230 ist diejenige, zu bestimmen, ob die momentane Transaktion für eine Abtastung zu dem Zeitpunkt, zu dem die Markierung getriggert ist, aufgrund eines Überlaufens des Zählers 220, von Interesse ist, und, falls dies nicht der Fall ist, dann kann die Transaktion ignoriert werden und der Zähler kann zurückgesetzt werden.
  • Die verschiedenen Funktionen, die tatsächlich bewirken können, dass der Markierer 230 eine Transaktion auswählt, umfassen, sind allerdings nicht darauf beschränkt, Trans aktionen, die auf ein bestimmtes Niveau in der Speicherhierarchie Bezug nehmen, Referenzen zu einem bestimmten Bereich eines Speichers innerhalb eines bestimmten Niveaus der Speicherhierarchie, Transaktionen eines bestimmten Typs, z. B. Verzweigungsbefehle, Transaktionen, die ein zugeordnetes Ereignis haben, z. B. ein Fehlschlagen, eine Verzweigungs-Fehlvorhersage, eine Aussonderung, einen bestimmten Zustandsübergang, z. B. Dirty-Aussonderungen, Transaktionen, die von einer bestimmten Quelle stammen, z. B. ein Befehl, der in der Prozessor-Pipeline ausgeführt wird, eine Befehlsausführung von einem bestimmten Zusammenhang, Prozess, Thread, oder Adressenraum, einen Direktspeicherzugriff von einer Eingabe/Ausgabe-Schnittstelle, Cache-Kohärenz-Nachrichten in einem Multiprozessor-Computersystem, usw..
  • Die Markierung der ausgewählten Transaktion kann durch Versehen der Transaktion mit einem zusätzlichen „Abtast" („Sample") Bit, z. B. von T zu T', erreicht werden. Zum Beispiel wird, falls die Transaktion ein Befehl ist, das Befehlsfeld mit einem zusätzlichen Bit erweitert, das mit der Transaktion mitgeführt wird, bis die Transaktion vollständig verarbeitet ist. Alternativ werden die Transaktionen nummeriert oder in anderer Weise identifiziert. In der vorliegenden Erfindung werden mehrfache Transaktionen gleichzeitig ausgewählt, wobei in einem solchen Fall mehrfache Bits benötigt werden, um sie zu markieren.
  • Nachdem eine Transaktion für eine Abtastung ausgewählt worden ist, wird die entsprechende Funktionseinheit, die die markierte Transaktion 103 verarbeiten wird, das Abtast-Bit an jeder entsprechenden Verarbeitungsstufe prüfen, und Zustandsinformationen, die für sie verfügbar sind, sammeln. Die gesammelten Zustandsinformationen werden in einer Mehrzahl von Puffern gespeichert, wie dies im Detail nachfolgend beschrieben ist. Wenn mehr als ein Puffer verwendet wird, können mehrfache Transaktionen gleichzeitig abgetastet werden. Die Stelle des Puffers liegt in der Auswahl des Designers, vorzugsweise nahe zu der Stelle, wo die Abtast-Informationen erzeugt sind.
  • Einige Zustandsinformationen können aufgezeichnet werden, bevor die Transaktion durch die Funktionseinheit verarbeitet wird, um einen Anfangszustand zu erfassen, und zusätzliche Informationen können nach dem Abschluss der Transaktion aufgezeichnet werden, um einen Endzustand zu erfassen. Nachdem eine spezifizierte Anzahl von Transaktionen aufgezeichnet worden ist, zum Beispiel dann, wenn der Abtastpuffer voll ist, kann ein Lesesignal erzeugt werden. Das Lesesignal kann in der Form einer Unterbrechung, eines durch eine Software abrufbaren Werts, eingestellt in ein Register, oder eines Ausnahmezustands vorliegen. Das Lesesignal kann eine Software freigeben, um die abgetasteten Daten für eine weitere Verarbeitung zu lesen.
  • Es sollte angemerkt werden, dass mehrere Puffer verwendet werden können, um mehrere Abtastungen zusammenzustellen. Ein Erhöhen der Anzahl von Puffern amortisiert die Kosten eines Abtast-Overheads, indem mehr als eine Abtastung pro gelesenem Signal übertragen wird.
  • Eine Beendigung einer Verarbeitung einer Abtast-Transaktion kann die Verarbeitung der Transaktion oder die Aussonderung der Verarbeitung aufgrund der Ankunft an einem bestimmten, nicht korrekten oder illegalen Zustand, oder einer Unterbrechung der Verarbeitung aufgrund eines bestimmten, externen Ereignisses, abschließen.
  • 3 stellt die Details dar, wie ein Puffer 300 zum Speichern von Zustandsinformationen zugeordnet werden kann. Der Puffer 300 kann als ein Satz von durch eine Software lesbaren Registern, oder andere Typen von Speichern, ausgeführt werden. Der Puffer umfasst ein Status-Feld 310, ein Adressen-Feld 320, ein Kontext-Feld 330, ein Transaktions-Quellen-Feld 340, ein Befehls-Feld 350, ein Latenz-Feld 360 und Felder 370 für andere Zustände und Ereignisse.
  • Das Status-Feld 310 speichert Zustandsinformationen, die sich auf die bestimmte Transaktion, die verarbeitet werden soll, beziehen. Zum Beispiel kann, falls die Transaktion eine Speicherreferenz ist, der Zustand anzeigen, ob ein Cache-Block schmutzig (dirty) oder sauber (clean) (modifiziert oder nicht), exklusiv (nicht gemeinsam geteilt), gültig oder ungültig (die Daten sind legitimiert) und ein Cache-Treffer- oder Fehler-Status ist.
  • Das Adressen-Feld 320 kann die virtuelle und/oder physikalische Adresse, die der Transaktion zugeordnet ist, speichern.
  • Das Kontext-Feld 330 kann die Adressen-Raum-Zahl (Adress Space Number – ASN), den Hardware-Kontext-Identifizierer (HCI) in dem Fall eines Multi-Threaded-Prozessors, einen Prozess-Identifizierer (PID) und/oder einen Thread-Identifizierer (TID) der Quelle der Transaktion speichern. Das Feld kann die Adressen-Raum-Zahl (ASN), auf die durch die Transaktion Bezug genommen ist, speichern.
  • Das Quellen-Feld 340 kann dazu verwendet werden, die Quelle der Transaktion, z. B. Lade- oder Speicher-Befehl, eine DMA-Anforderung oder eine Cache-Kohärenz- Protokoll-Operation, ebenso wie zusätzliche Informationen, um die Quelle zu identifizieren, und zwar in Abhängigkeit von der bestimmten Funktionseinheit, zu speichern.
  • Falls die Quelle der Transaktion eine Abrufeinheit der Prozessor-Pipeline ist, dann kann der Programm-Zähler (PC) des Befehls in dem Befehls-Feld 350 gespeichert werden. Das Programm-Zähler-Feld 350 kann auch dazu verwendet werden, Informationen über andere Arten von Quellen zu speichern, um ein Register zu sichern. Zum Beispiel kann dann, wenn die Quelle eine Kohärenz-Operation von einem anderen Prozessor in einem Multiprozessor-Computersystem ist, das Feld 350 dazu verwendet werden, die Prozessorzahl des Prozessors, von der DMA-Anforderung ausgehend, die die Kohärenz-Operation verursachte, zu halten. Für einen DMA-Typ von Transaktionen kann die Identität der I/O-Vorrichtung, die die DMA initiierte, gespeichert werden.
  • Das Zeitintervall (Latenz) zwischen aufeinanderfolgenden Transaktionen oder aufeinanderfolgenden Stufen einer Transaktions-Verarbeitung kann in dem Latenz-Feld 360 gespeichert werden. Das Intervall kann im Hinblick auf Prozessor-Taktzyklen gemessen werden, oder das Intervall kann in anderen Einheiten, wie beispielsweise der Zahl von Transaktionen, die verarbeitet werden sollen, gemessen werden. Das Intervall kann auch in die Zeit, erforderlich dazu, die Transaktion an jedem Level einer Speicherhierarchie zu verarbeiten (in dem Fall einer Abtast-Speicher-Funktion), oder Stufen einer Prozessor-Pipeline (in dem Fall eines Prozessors), aufgeteilt werden.
  • Zusätzliche Register, wie beispielsweise ein Feld 370, können zu dieser Struktur hinzugefügt werden, um einen zusätzlichen Systemzustand zu speichern, der zu dem Zeitpunkt erfasst ist, zu dem die abgetastete Transaktion verarbeitet ist. Dieser Zustand kann die Inhalte oder die Zahl von gültigen Eintritten in Speichersystemstrukturen umfassen, wie beispielsweise Schreibpuffer, Victim-Cache, Translations-Lookside-Puffer (TBLs), Fehl-Adressen-Dateien (Miss-Adress-Files – MAFs), und Speicher-Transaktions-Warteschlangen, und zwar in dem Fall einer Funktionseinheit.
  • Eine kurze Ausführung über einige beispielhafte Abtaststrategien werden nun angegeben. Die vorliegende Erfindung kann dazu verwendet werden, eine gleichzeitige Abtastung vorzunehmen.
  • Eine Art und Weise, in der interessante Informationen zusammengestellt werden können, ist diejenige einer Abtastung an mindestens zwei aufeinanderfolgenden Transaktionen, z. B. ein „Paar"; als Beispiel zwei Speicherreferenzen zu demselben Cache-Block, oder zwei in Bezug stehende Befehle. Ein paarweises Abtasten kann auf eine N-weise Abtastung über ein vorbestimmtes Zeitfenster erweitert werden.
  • Deshalb können die Vorrichtung und das Verfahren, die hier offenbart sind, Transaktionen abtasten zu: spezifischen Cache-Blöcken, clean oder dirty, spezifischen Bereichen von Speichern, allen Speicherstellen, allen Speicherstellen, wo Cache-Blöcke „dirty" sind, zu Speicherstellen, wo sich die Daten nicht in dem Cache befinden.
  • Die Angabe eines Speicherns von Zustandsinformationen für aufeinanderfolgende Transaktionen können zu sequenziellen Zugriffen verallgemeinert werden, die einfache, durch eine Software spezifizierte Kriterien anpassen, wie beispielsweise aufeinanderfolgende Fehler, aufeinanderfolgende Treffer, aufeinanderfolgende Ungültigkeiten, usw..
  • Zusätzlich ermöglichen die Abtast-Techniken, wie sie hier beschrieben sind, eine feinfühligere Überwachung von Funktionseinheiten 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 unterstützen, besser die Funktionsweise bzw. die Leistung eines Prozessors, und von Speicher-Untersystemen, wie beispielsweise Cache, DRAM, und dergleichen, zu verstehen. Die Funktions-Daten werden dazu verwendet, Optimierungen zu leiten.
  • Zum Beispiel kann man, um den Umfang einer gemeinsamen Nutzung eines Speichers abzuschätzen, Paare von Speicher-Transaktionen auswählen, wo die zweite Transaktion in dem Paar ein Cache-Treffer ist. Dies zeigt an, dass dort eine gemeinsame Aufteilung zwischen der ersten und der zweiten Transaktion vorhanden war. Durch Prüfen der den Zusammenhang identifizierenden Informationen, die beiden Abtastungen zugeordnet sind, ist es möglich, zu bestimmen, welche Zusammenhänge nützlicherweise gemeinsam diesen physikalischen Raum während des abgetasteten Zeitintervalls teilen. Durch Sammeln dieser Informationen über viele solche Paare von Abtastungen kann man statistisch Metriken abschätzen, die sich auf eine gemeinsame Teilung von physikalischen Stellen in einem Intra-Kontext und einem Inter-Kontext beziehen.
  • Eine nützliche Metrik wird durch Zählen der Anzahl von Paaren bestimmt, wo das erste Paar in der Abtastung einen spezifischen Zusammenhang anpasst und wo das zweite Paar in der Abtastung einen zweiten, spezifischen Zusammenhang anpasst, was effektiv zu einer Matrix von Zählungen führt, die durch die Identifizierer des ersten und des zweiten Kontextes indexiert ist. Ähnlich kann man, durch Analysieren von Paaren, wo die zweite abgetastete Transaktion einen Cache-Fehler erfuhr, statistisch Metriken abschätzen, die sich auf einen Konflikt in Bezug auf physikalische Stellen eines Intra-Kontexts und eines Inter-Kontexts beziehen.
  • Eine alternative Verwendung dieser Hardware ist diejenige, einen spezifischen Cache-Bereich dahingehend auszuwählen, um ihn zu überwachen. Der ausgewählte Bereich entspricht dem Raum in dem Cache, der ein bestimmtes Programm, das variabel ist, oder eine Datenstruktur speichert. Durch Zusammenstellen von Abtastungen und Filtern der Abtastungen, um Abtastpaare zu erhalten, wo mindestens eine der Transaktionen die variable oder Datenstruktur, die von Interesse ist, einsetzt, ist es möglich, Cache-Konflikt-Raten abzuschätzen und andere, spezifische Programmvariablen oder Datenstrukturen, die die Quellen von Konflikten sind, zu identifizieren.
  • Diese Abschätzung kann dynamisch vorgenommen werden, um ein Online-Programm-Debugging (Fehlersuche) oder eine Optimierung von Funktions- bzw. Leistungsproblemen innerhalb eines laufenden Programms oder Systems zu ermöglichen. Diese Technik ermöglicht Programmierern, interaktiv eine Speichersystemfunktion von Fehlern zu befreien, durch Identifizieren von Konflikten in Ausführprogrammen, die untersucht sind. Ähnliche Techniken können durch eine adaptive Laufzeit-Software verwendet werden, um ernsthafte Cache-Konflikte über eine Dynamik-Daten-Neuzuordnung zu vermeiden.
  • Ein Abtasten von individuellen Speichersystem-Transaktionen macht es möglich, eine Vielzahl von statistischen Metriken über Verteilungen von Eigenschaften eines Speichersystemverhaltens zu berechnen. Zum Beispiel ist es möglich, Verteilungen von Latenzen zu schätzen, um Speicheranforderungen zu bedienen, oder Raten von Cache-Treffern unter einem bestimmten Niveau oder einem Bereich in der Speicherhierarchie abzuschätzen. Filtermechanismen können dazu verwendet werden, Untersätze der aufgezeichneten Transaktionen, die von Interesse sind, zu identifizieren, was ermöglicht, Statistiken auf bestimmte Aspekte des Speichersystems, die von Interesse sind, zu fokussieren, wie beispielsweise Transaktionen zu einem bestimmten Bereich oder Level in der Speicherhierarchie, oder eine bestimmte Klasse von Transaktionen, wie beispielsweise Lesevorgänge, Schreibvorgänge oder Ungültigkeiten.
  • 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 abzuschätzen, für die bestimmte Ereignisse auftreten, wie beispielsweise Cache-Treffer oder -Fehler, oder Aussonderungen.
  • Es ist auch möglich, den Anteil von Anforderungen aufgrund von Lesevorgängen, Schreibvorgängen oder Ungültigkeiten abzuschätzen. Diese Raten können auch in Bezug auf einen bestimmten Zusammenhang abgeschätzt werden, wie beispielsweise Abschätzen von Metriken, wie beispielsweise Cache-Treffer-Raten pro Prozess, oder durchschnittliche Speichersystem-Latenzzeit, die durch ein Thread erfahren ist. Es ist auch möglich, den Anteil eines Levels der Speicherhierarchie abzuschätzen, der durch einen bestimmten Kontext verbraucht wird.
  • Standardfehler-Abschätztechniken können verwendet werden, um Aussagewahrscheinlichkeits-Intervalle über die Genauigkeit der erwünschten Statistiken zu erhalten. Insbesondere können, für Statistiken, die eine Anzahl von Abtastungen mit einer spezifischen Eigenschaft einsetzen, Fehlerbereichsgrenzen unter Verwendung des Umkehrwerts der Quadratwurzel der Anzahl von Abtastungen mit dieser Eigenschaft abgeschätzt werden. Diese Fehlerbereichsgrenzen können auch dazu verwendet werden, dynamisch die Rate zu steuern, unter der ausgewählte Transaktionen abgetastet werden, um so eine Genauigkeit mit einem Abtast-Overhead abzuwägen.
  • Wenn die aufgezeichneten Zustandsinformationen Latenzinformationen umfassen, entweder in der Form der Latenz, die dazu erforderlich ist, 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, wie beispielsweise die Zahl von Speicher-Transaktionen, die verarbeitet werden soll, gemessen werden.
  • In einem sehr allgemeinen Sinne führen die 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 von unterschiedlichen Speicherseiten beibehalten, da die Zugriffsmuster für Befehle sehr viel unterschiedlicher als diejenigen für die Daten sind. Eine virtuelle zu physikalische Speicherauflistung für Befehle und Daten wird gewöhnlich durch das Betriebssystem vorgenommen. Alternativ kann eine Neuzuordnung von Strukturen manuell oder durch Compiler, Linker und Loader vorgenommen werden. Einige Systeme können Strukturen dynamisch, wenn die Befehle ausgeführt werden, wieder zuordnen.
  • Unter Verwendung der Hardware, die hier beschrieben ist, ist es möglich, ein Feedback in Bezug auf eine Vielfalt von interessanten Teilen einer Software zu liefern. Zum Beispiel können Transaktions-Zustandsinformationen für einen abgetasteten Speicher dazu verwendet werden, zum Beispiel Seiten-Neuauflistungs-Policen zu bewirken, oder eine Selbst-Interferenz zu vermeiden, indem ein Feedback zu Compilern, Linkern oder Loadern vorgesehen wird.
  • Zum Beispiel kann eine Software Konfliktadressen auf einem Seitenniveau zusammenstellen, um über dynamische Seiten-Neuauflistungs-Algorithmen, ausgeführt durch das Betriebssystem, zu informieren. Es ist auch möglich, Profilierungs-Tools, die von Interesse sind, die potentielle Funktionsprobleme Programmierern und Benutzern anzeigen, vorzusehen.
  • Zum Beispiel ist es nun möglich, abzuschätzen, wie oft Daten „dirty" sind, wenn die Daten ausgesondert werden, und wie oft DMA-Transfers zu Cache-Kohärenz-Protokoll-Transaktionen auftreten, was einen Anhalt dafür gibt, wie effektiv das Speichersystem verwendet wird.
  • Bei Multiprozessorsystemen mit nicht gleichförmigem Speicherzugriff (Non-Uniform Memory Access – NUMA) besitzt jeder Prozessor Bereiche des Speichersystems, auf die er schneller (oder mit höherer Bandbreite) zugreifen kann als auf andere Teile des Speichersystems. Um die Funktion bzw. Leistung zu verbessern, können Daten (die entweder Programmdaten oder Befehle sind), auf die häufig durch einen Prozessor zugegriffen wird, zu einem Bereich des Speichersystems bewegt werden, auf den schneller durch den Prozessor zugegriffen werden kann.
  • Diese Bewegung kann auf zwei Arten und Weisen ausgeführt werden. Die Daten können durch Markieren von Mehrfach-Kopien der Daten repliziert werden. Idealerweise werden die Daten in vernünftiger Weise „gestreut" („scattered"), und zwar über das Speichersystem. Alternativ können die Daten durch tatsächliches Bewegen der Daten in einen Speicher mit niedrigerer Latenz oder höherer Bandbreite umgestellt werden.
  • Informationen über den Typ von Zugriffen (z. B. Lesen, Schreiben und Ungültigkeiten) können weiterhin die Entscheidung leiten, ob die Daten zu replizieren, zu migrieren oder 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), wahrscheinlich nicht repliziert oder migriert werden, während Daten, die häufig gelesen werden, allerdings nur selten geschrieben werden (z. B. in Bezug auf im Lesen gemeinsam geteilter Seiten), gute Kandidaten für eine Replizierung sind. Seiten, auf die selten nur durch einen einzelnen Prozessor zugegriffen wird, sind gute Kandidaten für eine Migration zu einem Speicher, der sich näher zu dem zugreifenden Prozessor befindet. Diese Informationen können durch ein statistisches Abtasten von Speichersystem-Transaktionsinformationen, wie dies hier beschrieben ist, gesammelt werden.
  • Die Informationen über Speichersystem-Transaktionen werden dynamisch gesammelt und können in einer On-Line weise verwendet werden, um dynamisch die Replizierungs- und Migrations-Policen des Computersystems zu steuern. Typischerweise werden eine Replizierung und Migration durch das Betriebssystem gehandhabt, allerdings können sie auch durch andere Software- oder Hardware-Ebenen gehandhabt werden.
  • Dabei sind mehrere, potenzielle Funktions-Metriken vorhanden, die die Replizierungs- oder Migrations-Policen versuchen können, zu verbessern, einschließlich einer Erhöhung des gesamten Systemdurchsatzes, einer Erhöhung des Durchsatzes für bestimmte Aufgaben mit hoher Priorität, einer Verringerung in dem Verkehr zwischen Prozessoren und Speichern, eine Verringerung der gesamten Speicher-Latenzzeit, oder einer gesamten Erhöhung der Systemleistung.
  • Da Cache in einem hierarchischen Speicher Daten speichern, die von verschiedenen Hardware-Kontexten ausgehen, treten Threads, die in unterschiedlichen Hardware-Kontexten ausführen, für Linien (Leines) in einem Cache in Wettbewerb. Deshalb ist es erwünscht, Threads ablaufmäßig so zu planen, dass Ressource-Konflikte minimiert werden. Dies kann durch Abtasten von Speichersystem-Transaktionsinformationen, wie dies hier beschrieben ist, vorgenommen werden.
  • Das ablaufmäßige Planen von Entscheidungen kann aus der Betrachtung verschiedener Metriken, einschließlich Erhöhen der Menge eines gemeinsamen Teilens unter Kontexten, die in Bezug auf Speicher-Ressourcen in Wettbewerb treten, oder Verringern von Konflikten unter Kontexten, die in Bezug auf Speicher-Ressourcen in Wettbewerb treten, Gebrauch machen.
  • Zum Beispiel macht es Sinn, bevorzugt ein Thread parallel ablaufmäßig zu planen, das einen großen Cache-Footprint besitzt, gleichzeitig mit einem Thread, das nur einen sehr geringen Gebrauch von dem Cache macht, da sich die Speichersystemanforderungen solcher Threads einander ergänzen, um dadurch ein gemeinsames 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, eine parallele Ablaufplanung von zwei Threads mit großen Cache-Footprints dort, wo möglich, zu vermeiden, da dies zu viel mehr Konfliktfehlern führen wird, da die Threads nützliche Daten zueinander von dem Cache aussondern, um dadurch Konflikte zu verringern.
  • Durch Erfassen von alten und neuen Konflikt-Identifizierern als Teil eines Cache-Monitors kann die Betriebssystem-Software statistisch den Grad abschätzen, den unterschiedliche Kontexte gemeinsam teilen und in dem Cache in Konflikt treten. Diese Abschätzungen können zu einer Ablaufplanungseinrichtung zugeführt werden.
  • Eine vernünftige Ablaufplanung ist besonders wichtig für Multithreaded-Prozessoren, wo Speicherreferenzen von unterschiedlichen Hardware-Kontexten unter einem sehr feinkörnigen Niveau verschachtelt werden, und die Relevanz wird erhöht, wenn diese Kontexte gemeinsam Speichersystem-Ressourcen, wie beispielsweise Cache, teilen. Allerdings ist dies auch für Einzel-Threaded-Prozessoren wichtig, wenn die Cache groß genug relativ zu der Anzahl von Speicher-Transaktionen sind, vorgenommen durch ein Thread während eines Ablaufplanungs-Quantums. Dann ist dabei eine gewisse Hoffnung vorhanden, einige nützliche Cache-Inhalte beizubehalten, wenn das nächste Quantum einem bestimmten Kontext zugeordnet wird. Alle diese Ablaufplanungs-Entscheidungen können sich dynamisch an ein Feedback anpassen, das von einer statistischen Abtastung von Speichersystem-Transaktionen während eines Online-Betriebs gesammelt werden.
  • Auf einer Teilung basierende oder auf einer proportionalen Teilung basierende Ablaufplanungs-Policen wollen Idealerweise jedem Kontext eine spezifizierte Teilung bzw. einen Anteil jedes Cache-Speichers in der Speicherhierarchie geben. Mit der vorliegenden Abtasttechnik ist es möglich, statistisch den Bereich eines Cache, der durch jeden Kontext belegt ist, abzuschätzen. Dies ermöglicht der Ablaufplanungs-Einrichtung, ihre Entscheidungen auf Metriken zu stützen, beispielsweise so, dass jedem Prozess ein spezifizierter Anteil der Speichersystem-Ressourcen gegeben wird, was effektiv Speichersystem-Ressourcen unter Kontexten im Verhältnis zu deren Erfordernissen unterteilt.
  • Um dies vorzunehmen, können Kontexte, die mehr als deren zugeordneten Anteil belegen, verlangsamt werden oder ausgesetzt werden. Während bestimmte Kontexte ausgesetzt werden, können andere ihren Anteil des Cache erhöhen. Dem ausgesetzten Kontext kann ermöglicht werden, fortzufahren, nachdem die Benutzung des Cache als Folge eines erhöhten Cache-Drucks von anderen, aktiven Kontexten verringert wurde. Dies kann gegenüber bekannten Maßnahmen unterschieden werden, die allgemein nicht zulassen, dass Informationen an der Cache-Leitung bzw. dem Block-Level überwacht werden, andere als durch Simulation.
  • Alle diese Ablaufplanungs-Entscheidungen können sich dynamisch an ein Feedback anpassen, gesammelt von einer statistischen Abtastung von Speichersystem-Transaktionen während eines Online-Betriebs.
  • Die Profilierungs-Hardware, die vorstehend beschrieben ist, kann in einer Vielfalt von unterschiedlichen Arten und Weisen verwendet werden. Da die vorliegende Technik sehr detaillierte Informationen über die Verarbeitung von individuellen Transaktionen, wie beispielsweise Instruktionen bzw. Befehlen, liefert, könnte eine Anwendung eine große Anzahl von Befehlen profilieren. Die Abtast-Informationen können in einem Speicherpuffer für eine spätere Verarbeitung durch Profilierungs-Tools gespeichert werden, um detaillierte Befehls-Level-Informationen zu erzeugen.
  • Die Informationen können dazu verwendet werden, zum Beispiel Histogramme von Lade-Latenzen für jeden Lade-Befehl, Histogramme von Befehlsausführzeiten, und vielleicht sogar eine leicht umfangreichere Analyse des Pipeline-Zustands für jeden Befehl, zu entwickeln. Da die Menge an Informationen, die durch diese Maßnahme geliefert wird, wahrscheinlich ziemlich hoch ist, ist das gesamte Speicher-Overhead der vorliegenden Technik auch wahrscheinlich sehr hoch, da eine wesentliche Menge eines Speicherverkehrs umfasst ist. Zum Beispiel wird, falls eine Billion Befehle pro Sekunde abgerufen werden, und ein Abtasten alle 10.000 abgerufene Befehle durchgeführt, wobei dann die Datenrate für die Profil-Informationen ungefähr 2,4 MB pro Sekunde sein wird.
  • Die nachfolgenden Abschnitte beschreiben Verfahren, die durch eine Software ausgeführt sind, zum Verringern einer Bandbreite durch Aggregieren von Profil-Informationen.
  • Der Umfang von abgetasteten Daten kann durch Ignorieren einiger Felder der Profil-Aufzeichnung reduziert werden, z. B. die Daten in dem Puffer 300, mit Ausnahme dann, wenn sie explizit angefordert werden. Ein Benutzer des Systems 100 kann unterschiedliche Level einer Profilierung wünschen. In dem niedrigsten Overhead-Modus kann die Profilierungs-Anwendungs-Software einen Profil-Report für das gesamte oder einen Teil eines Programms erzeugen, unter Verwendung nur der PC- und Retire-Delay-Felder. In Abhängigkeit von der Optimierung, die durchgeführt werden soll, können andere Werte pro PC durch Mittelung, oder andere statistische Metriken, wie beispielsweise Minimum, Maximum, oder Berechnen einer Standardabweichung, zusammengefasst werden. Unter Zuteilung von mehr Zeit, um Daten zu verarbeiten, kann die Profilierungs-Anwendung Histogramme von verschiedenen Befehl-Latenzen erzeugen.
  • Die effektive Speicheradresse, die Verzweigungs-Target-Adresse und die Verzweigungs-Historik-Abtastungen werden wahrscheinlich eine kostenintensivere Verarbeitung erfordern als die anderen Felder. Diese Felder können wahrscheinlich ignoriert werden, mit der Ausnahme dann, wenn Daten gesammelt werden, um spezifische Optimierungsaufgaben durchzuführen. Unter Vorgabe eines Inter-Befehl-Abruf-Abstands zwischen Befehlen in Zyklen, kann die Profilierungsanwendung auch Informationen über Level einer Konkurrenz sammeln.
  • Ein Filtern der Profilierungs-Informationen kann auch durch Hardwareeinrichtungen vorgenommen werden, zum Beispiel durch ein Maskierungsregister, oder eine programmierbare Logik. Zum Beispiel nur eine Abtastung, wenn dort ein Cache-Fehler vorlag, oder wenn der Befehl ausgesondert wird, oder andere, Bool'sche Kombinationen von Operationscoden, Operanden, Adressen, Ereignissen und Latenzen.
  • Die vorliegende Profilierungstechnik kann dazu verwendet werden, ein präzises Verständnis der internen Operation eines Out-Of-Order-Ausgabe-Prozessor, wie beispielsweise des Prozessors Alpha 21264, zu erhalten. Eines der ersten Dinge, die über diesen Typ einer Maschinen-Organisation anzumerken sind, ist dasjenige, dass dort viele Plätze vorhanden sind, wo ein Befehl in der Pipeline hängen bleiben könnte, und eine große Anzahl von Gründen, warum sie hängen bleiben könnten.
  • Zum Beispiel könnte ein Befehl hängen bleiben, da einige seiner Operanden nicht als Daten bereit sind, da einige der Ressourcen, die für die Ausführung des ausgewählten Befehls erforderlich sind, nicht verfügbar sind, oder da andere Befehle ausgewählt wurden, um sie davor auszuführen.
  • Eine exakte Bestimmung, wo ein Befehl stecken blieb, warum er stecken blieb und wie lange er stecken blieb, hängt stark von dem präzisen Zustand der Maschine ab, wenn dieser Befehl ausgeführt wird. Da der Prozessor so dynamisch ist, ist es schwierig für Software-Funktions-Tools, diesen Zustand statistisch zu bestimmen.
  • Die Profilierungstechnik, die hier beschrieben ist, kann auch dazu verwendet werden, eine N-weise Abtastung durchzuführen. Hierbei kann der dynamische Zustand von Interaktionen zwischen mehreren, gleichzeitig verarbeiteten Transaktionen erfasst werden. Anstelle eines Profilierens einer einzelnen Transaktion werden zwei oder mehr separate Transaktionen gleichzeitig profiliert. Der dynamische „Abstand" zwischen den ausgewählten Transaktionen kann als die Anzahl von Transaktionen gemessen werden, die einer Verarbeitung unterworfen sind, oder als die Anzahl von Taktzyklen, die die gepaarten Transaktionen „separieren".
  • Profil-Informationen für N-weise, abgetastete Befehle besitzen viele mögliche Verwendungen. Zuerst können die Informationen analysiert werden, um nützliche Konkurrenz-Level zu messen. Dies macht es möglich, wahre Engstellen zu lokalisieren. Wahre Engstellen sind durch lange Staus, verbunden mit einer niedrigen Konkurrenz, charakterisiert. N-weise Abtastungen können auch eine Pfad-Profilierung erleichtern und können Kandidaten-Ausführungs-Pfade durch Beschränken der Pfade eindeutig machen, um mindestens zwei Punkte entlang des Pfads zu umfassen. Weiterhin kann es von einer N-weisen Abtastung auch möglich sein, statistisch detaillierte Prozessor-Pipeline-Zustände zu rekonstruieren. Hierbei kann die Auswahl der Gruppe von Befehlen auf einer bestimmten Messung einer Ähnlichkeit zwischen den Befehlen basieren, zum Beispiel eine kürzliche Verzweigungs-Historik, Staus, Befehls-Typen, oder eine andere, kürzliche Zustands-Historik.
  • Ein genaues Aufzeigen von Funktions-Engstellen in Out-Of-Order-Prozessoren erfordert detaillierte Informationen über sowohl Stauzeit als auch Konkurrenz-Level. Im Gegensatz zu In-Order-Prozessoren ist ein Befehl mit langer Latenz nicht dann problema tisch, wenn dabei eine ausreichende Konkurrenz vorhanden ist, um effektiv den Prozessor zu verwenden, während sich ein Befehl mit langer Latenz im Stau befindet.
  • Eine Maßnahme, um Konkurrenz-Informationen zu erhalten, ist diejenige, den gesamten Pipeline-Zustand als Speicherauszug zu führen. Dies wird direkt ergeben, wo sich Sätze von gleichzeitig ausführenden Befehlen in den Stufen der Pipeline zu einem gegebenen Zeitpunkt befinden. Allerdings könnte ein „Dumping" („Deponieren") des gesamten Pipeline-Zustands in Register und Puffer hinein extrem kostspielig sein, sowohl in Bezug auf die Zeit als auch in Bezug auf den Raum. Weiterhin können voluminöse Daten, die erzeugt sind, wahrscheinlich nicht effektiv aggregiert werden, um die Kosten einer Abtastung zu amortisieren. Noch schlechter ist dasjenige, dass diese Maßnahme tatsächlich unzureichend ist, da nur solche Befehle, die ausgesondert werden, als „nützlich" gezählt werden, und die Informationen, über die Befehle abgerufen sind, die allerdings nicht ausgesondert sind, sind bis dahin noch nicht bekannt.
  • Eine unterschiedliche Art einer Mehrfach-Weg-Abtastung kann auch dazu verwendet werden, die durchschnittliche Anzahl von Befehlen, verarbeitet durch die Pipeline, über eine Anzahl mit festgelegter Größe von Prozessor-Zyklen zu bestimmen.
  • Es ist auch möglich, abgetastete Zustands-Informationen zu verwenden, um Fälle, die von Interesse sind, zu identifizieren, während Konkurrenz-Informationen aggregiert werden. Zum Beispiel kann es nützlich sein, den durchschnittlichen Konkurrenz-Level zu berechnen, wenn eine Speicher-Zugriffs-Transaktion in einem der Cache „zutrifft" („hits"), und um dann den durchschnittlichen Konkurrenz-Level mit dem Fall zu vergleichen, wo ein Cache-Fehler aufgetreten ist. Andere interessante Aspekte, um eine Korrelation mit variierenden Konkurrenz-Leveln zu prüfen, umfassen Register abhängige Staus, Cache-Fehler-Staus, Verzweigungs-Fehlvorhersage-Staus, und eine kürzliche Verzweigungs-Historik.
  • Ein zusätzlicher Vorteil einer Profilierung eines Clusters von Befehlen ist die Fähigkeit, Pfad-Profile zu erhalten. Pfad-Profile sind für zahlreiche Compiler-Optimierungen, und eine Spur-Ablaufplanung, nützlich.
  • Weiterhin werden, durch Beschränken von Mehrfach-Punkten entlang eines Ausführungs-Pfads eines Programms zusammen mit einer kürzlichen Verzweigung, genommen von einer Historik, Pfad-Profile eindeutig gemacht. Diese Eindeutigkeit verbessert die N-weise Abtastung; d. h. wenn sich N erhöht, verbessert sich eine Eindeutigkeit. Für einen schwer ausgeführten Code kann eine gleichzeitige Profilierung die relative Reihenfolge einer Ausführung von Befehlen an jeder Stufe einer Prozessor-Pipeline für alle ausführenden Befehle ergeben. Demzufolge kann man nun statistisch die tatsächliche Operation der Ausführungs-Pipeline in einem Operationssystem rekonstruieren.
  • Die letzte Generation von Mikroprozessoren setzt alle Tricks ein, die Computer-Architekten zulassen, um die höchstmögliche Leistung zu liefern. Diese Mikroprozessoren rufen mehrere Befehle pro Zyklus ab, geben sie aus und schöpfen sie aus. Zusätzlich führen diese Prozessoren Befehle Out-Of-Order aus. Einige davon führen sogar Speicher-Operationen Out-Of-Order aus.
  • Allerdings sind Funktions-Charakteristika sehr variabel, und zwar aufgrund der vielen, heuristischen Mechanismen, verwendet durch Prozessoren, die Befehle und Speicher-Operationen Out-Of-Order ausgeben. Als ein Vorteil ermöglichen die Profilierungstechniken, wie sie hier beschrieben sind, dem System, eine Funktion bzw. Leistung eines Programms in ausreichendem Detail so zu messen, dass die Leistung des Systems 100 automatisch verbessert werden kann.
  • Die vorliegenden Profilierungstechniken können dazu verwendet werden, eine Optimierung des Systems 100 durchzuführen. Die nachfolgenden Abschnitte sind dazu vorgesehen, Programmierer und durch einen Compiler angewiesene Optimierungen von Software-Programmen zu leiten.
  • Da Out-Of-Order-Superskalar-Mikroprozessoren Befehle entsprechend zu einer Daten- und Ressource-Verfügbarkeit umordnen, ist eine Zusammenstellungszeit einer Befehls-Ablaufplanung sehr viel wichtiger als dies für architekturmäßig einfachere Prozessoren der Fall ist. Hierbei liegen Hauptengstellen aufgrund eines Befehls-Abrufens und von Speicher-Operationen vor.
  • Genauer gesagt gehen Zyklen nicht in der Prozessor-Pipeline aufgrund einer Verzweigung oder aufgrund von Sprung-Fehlvorhersagen, von On-Chip-Cache-Fehlern und von TLB-Fehlern verloren. Dies sind schwierige, wenn nicht sogar unmögliche, Zustände, um sie statistisch abzuleiten. Zyklen gehen auch für Verzögerungen in Of-Chip-Operationen auf höherem Level, aufgrund von Cache-Fehlern, Ressource-Störstellen und Ordnungs-Störstellen, verloren. Verlorene Zyklen verschwenden Zeit.
  • Mit herkömmlichen Ereignis-Fehlern kann man die Aggregat-Zahl dieser Funktions-Entkräftungs-Ereignisse messen, allerdings ist dies extrem schwierig, falls nicht sogar unmöglich, um verlorene Zyklen einem bestimmten Befehl in dem Programm zuzuschreiben.
  • Die Profilierungstechnik, wie sie hier beschrieben ist, ermöglicht einem Benutzer, Haupt-Leistungs-Probleme und Korrelations-Probleme in Bezug auf die spezifischen Befehle zu messen.
  • Eine Front-End-Optimierung, die eine Leistung unterstützt, ist die Umordnung von Befehlen in Basis-Blöcken und Basis-Blöcken in Prozeduren. Ein Basis-Block ist als ein Satz von Befehlen definiert, die linear als eine Einheit ausgeführt werden, oder nicht auf einmal. Prozeduren sind allgemein ein kohäsiver Satz von Basis-Blöcken, erreicht über Aufruf-Befehle. Prozeduren können mehrere Basis-Blöcke umfassen. Eine Umordnung von Befehlen in Basis-Blöcken und von Basis-Blöcken in Prozeduren kann den Ausführungsfluss und Datenzugriffe ändern, um Seiten- und Cache-Temporär-Lokalitäten zu optimieren, und um die Anzahl von Verzweigungen zu verringern. Verzweigungen verschwenden Zyklen, da sie nur den Ausführungsfluss umleiten, und keine nützliche Arbeit in Bezug auf die Daten vornehmen. Diese Optimierung, als Eingabe, muss Kontroll-Fluss-Graphik-Kanten-Frequenzen kennen.
  • Ähnlich muss, um eine Spur-Ablaufplanung von Befehlen durchzuführen, ein Compiler eine Graphik-Kante und Pfad-Häufigkeiten im Fluss kontrollieren. Eine Spur-Ablaufplanungseinrichtung könnte eine noch bessere Arbeit dann vornehmen, wenn sie abschätzen muss, wie lange es benötigt, um jeden Basis-Block oder einen größeren Ausführungs-Pfad auszuführen. Für Betriebssysteme im großen Maßstab, wie beispielsweise die Suchmaschine Alta Vista, ist dies schwierig mit traditionellen Tools in einer Realzeit zu messen.
  • Viele Compiler-Optimierungen, wie beispielsweise eine Spur-Ablaufplanung und eine Hot-Cold-Optimierung, beruhen auf einer Erkenntnis, wie Ausführungs-Pfade häufig durch ein Programm genommen werden. Diese werden als „heiße" („hot") Pfade bezeichnet. Bis kürzlich wurden häufig ausgeführte Pfade durch Profilieren des Programms, entweder über eine Instrumentierung oder eine Simulation, geleitet, um Basis-Block- oder Kanten-Zählungen zu sammeln, und dann, unter Verwendung dieser Zählungen, um direkt heiße (hot) oder kalte (cold) Pfade abzuleiten.
  • In neuerer Zeit sind Techniken verwendet worden, um Pfad-Informationen direkt zu sammeln. Obwohl diese Techniken exakte Pfad-Informationen liefern, tendieren sie auch dazu, dass sie einen ziemlich hohen Overhead haben, was sie ungeeignet macht, um aktive Computersysteme in großem Maßstab zu messen. Mit der vorliegenden Profilierung können Pfad-Informationen unter Zufall erfasst werden, mit einem minimalen Overhead, und sie geben dennoch eine statistisch korrekte Ansicht über die tatsächlichen Ausführungsabläufe.
  • Die meisten modernen Mikroprozessoren protokollieren die Richtungen der letzten N Verzweigungen in einem globalen Verzweigungs-Historik-Register. Das Verzweigungs-Historik-Register kann, als ein sich bewegendes Fenster, dazu verwendet werden, die kürzlichen Verzweigungs-Vorhersagen anzusehen, und können ein zukünftiges Befehls-Abrufen entsprechend beeinflussen. Durch Erfassen der Inhalte dieses Registers zu einer Befehls-Abrufzeit, zusammen mit dem PC des Befehls, der abgetastet werden soll, ist es manchmal möglich, eine statistische Analyse einer Steuer-Ablauf-Graphik zu verwenden, um den exakten Pfad durch die letzten N Verzweigungen zu hypothetisieren, die der Prozessor genommen haben muss.
  • Allerdings können, da herkömmliche Historik-Register gewöhnlich nur die Richtungen der Verzweigungen, und nicht die tatsächlichen Ziel-Bestimmungen, enthalten, die Informationen unpräzise sein. Insbesondere können Übergänge in Steuer-Abläufe Unstimmigkeiten beim Identifizieren von tatsächlichen Pfaden, die genommen sind, hervorrufen.
  • Auch können asynchrone Ereignisse, die einen verzweigten Code verursachten, um ihn auszuführen, wie beispielsweise Unterbrechungen oder Kontext-Umschaltungen, die Verzweigungs-Historik-Bits belasten. Allerdings sollte dieses Ereignis nicht relativ häufig sein, und dessen Auftreten in einem Betriebssystem sollte zufällig über den Code verteilt sein. Da das Ziel dasjenige ist, Pfade mit einer hohen Häufigkeit zu identifizieren, können Pfade mit einer geringen Häufigkeit, umfassend solche, die durch „mit Rausch behaftete" Verzweigungs-Historik-Bits erzeugt sind, erzeugt durch nicht vorhersagbare, asynchrone Ereignisse, ignoriert werden.
  • Andere Informationen über eine kürzliche Ausführungs-Historik des Prozesses können auch dabei unterstützen, den Ausführungs-Pfad, der genommen worden ist, um einen bestimmten Befehl zu erhalten, zu identifizieren. Ein Teil von Informationen, der nützlich ist, ist die Kenntnis eines zweiten PC-Werts eines Befehls, der kürzlich vorher ausgeführt wurde. Unter Verwendung von Mehrfach-PC-Werten, vielleicht mit einer N-weisen Abtastung, können Pfade, die nur einen PC umfassen, eliminiert werden.
  • Hohe Fehlraten in Cache oder Translations-Look-Aside-Puffern (TLBs) können wesentlich die Leistung des Systems herabsetzen. Maßnahmen nach dem Stand der Technik haben allgemein auf entweder einer spezifizierten Hardware oder spezialisierten Software-Schemata zum Sammeln von Cache-Fehl-Adressen, wie beispielsweise periodisch Entleeren des TLB, beruht. Diese beobachteten Fehl-Muster vermitteln ein geeignetes Verständnis über die häufig zugegriffenen oder „heißen" (hot) Seiten, die verwendet werden können, um virtuell-zu-physikalische Seitenauflistungspolicen zu beeinflussen. Allerdings können Adressen-Informationen, die dazu notwendig sind, eine Analyse abzuschließen, nicht zu dem Zeitpunkt verfügbar sein, zu dem das Ereignis erfasst ist.
  • Eine wichtige Aufgabe, durchgeführt während einer Code-Optimierung, ist eine ideale Befehl-Ablaufplanung. Eine ideale Befehl-Ablaufplanung zeichnet einen Code auf, um Verzögerungen aufgrund von Speicher-Latenzen zu minimieren. Obwohl eine statische Reihenfolge von benachbarten Befehlen in einem Basis-Block weniger wichtig ist, als dies für die vorherige Generation von In-Order-RISC-Prozessoren war, ist eine makroskopische Befehl-Ablaufplanung viel wichtiger in Out-Of-Order-Prozessoren.
  • Ein sehr wichtiger Aspekt einer Befehl-Ablaufplanung ist die Ablaufplanung von Belastungen und Speicherungen. Dies ist der Fall, da statische Ablaufplanungseinrichtungen nicht immer exakte Abhängigkeits-Informationen haben, die ihnen ermöglichen würden, eine Ablaufplanung der Speicher-Zugriff-Befehle zu optimieren. Zusätzlich ist es sehr schwierig, exakt die Latenz von Speicher-Zugriff-Befehlen vorherzusagen. Da Befehl-Ablaufplanungseinrichtungen gewöhnlich präzise Informationen über Speicher-Zugriffe fehlen, planen sie allgemein Belastungen und Speicherungen unter Verwendung von D-Chache-Treffern bzw. -Hits. Zum Beispiel versucht eine ausbalancierte Ablaufplanung, eine solche Ablaufplanung zu erzeugen, die eine gleiche Menge einer Latenz pro Last bzw. Beladung umfasst. Dies ist eine Verbesserung gegenüber demjenigen, dass immer angenommen wird, dass Lade/Speicher-Operationen immer in dem Cache ankommen werden.
  • Falls man Lade- und Speicher-Latenzen über eine zufällige Abtastung sammelt, kann man jeden Befehl entsprechend seinem Histogramm von Latenzen ablaufmäßig planen. Die vorliegende Technik kann dazu verwendet werden, Optimierungen durch Sammeln von Latenz-Informationen ohne Übernahme der Kosten einer vollständigen Cache-Simulation vorzunehmen.
  • 4 stellt die Schritte 401404 zum Abtasten der Leistung irgendeiner oder aller der Funktionseinheiten 111114 des Computersystems 100 dar. Die Abtastungen werden über die Zeit aggregiert bzw. gesammelt und dann analysiert. Die Analyse wird verwendet, um dynamisch das System zu aktualisieren, während es arbeitet. Die Abtastung kann für das optimierte System über die Zeit so fortgeführt werden, dass das System optimal „abgestimmt" bleibt, falls eine Belastung variiert.
  • Die vorstehende Beschreibung ist auf spezifische Ausführungsformen gerichtet worden. Es wird für Fachleute auf dem betreffenden Fachgebiet ersichtlich werden, dass Modifikationen an den beschriebenen Ausführungsformen unter Erreichen aller oder einiger der Vorteile vorgenommen werden können.

Claims (10)

  1. System zum Optimieren der Leistung eines Computersystems (100), wobei das Computersystem eine Vielzahl von Funktionseinheiten (111114) umfasst und das System zum Optimieren umfasst: eine Quelle (110) zum Bereitstellen von Transaktionen (111), die durch das Computersystem abzuarbeiten sind; eine Einrichtung (200) zum Auswählen von Transaktionen zum Abtasten, die durch eine Vielzahl von Funktionseinheiten des Computersystems abzuarbeiten sind; einen Prozessor (111) und Software zum Analysieren der Zustandsinformationen; gekennzeichnet dadurch, dass die Transaktionen gleichzeitig von den funktionellen Einheiten abgetastet werden; und durch Pufferspeicher (300), die Zustandsinformationen (130) speichern, während die ausgewählten Transaktionen (103) durch die Funktionseinheiten abgearbeitet werden, wobei die Zustandsinformationen wenigstens eine Adressen-Information (320), eine Transaktionsquellen-Information (340) und eine Latenz-Information (360) enthalten, wobei die Pufferspeicher (200) Zustandsinformationen im Verlauf der Zeit als eine Ansammlung von Zustandsinformationen speichern und die Ansammlung von Zustandsinformationen analysiert wird, um Leistungsstatistiken des Computersystems (110) zu schätzen, wobei die Leistungsstatistiken verwendet werden, um die Leistung des Computersystems (110) dynamisch zu optimieren, während das Computersystem arbeitet.
  2. System nach Anspruch 1, wobei die Auswähleinrichtung (230) eine Vielzahl gleichzeitig abgearbeiteter Transaktionen (101) auswählt.
  3. System nach Anspruch 1 oder Anspruch 2, wobei die Transaktionen (101) Befehle sind, die durch den Prozessor (111) ausgeführt werden, und der Prozessor eine der Vielzahl von Funktionseinheiten ist.
  4. System nach Anspruch 1 oder Anspruch 2, wobei die Transaktionen (101) Datenzugriffe sind, die einem Speicher-Teilsystem (112) bereitgestellt werden, wobei das Speicher-Teilsystem eine der Vielzahl von Funktionseinheiten ist.
  5. System nach Anspruch 1 oder Anspruch 2, wobei die Transaktionen (101) Netzwerk-Meldungen sind, die durch eine Netzwerksteuerung (114) abgearbeitet werden, wobei die Netzwerksteuerung eine der Vielzahl von Funktionseinheiten ist.
  6. System nach einem der vorangehenden Ansprüche, wobei die Zustandsinformationen (130) in dem Speicher gespeichert werden, bevor und nachdem die ausgewählten Transaktionen (103) analysiert werden.
  7. System nach Anspruch 1, wobei die Zustandsinformationen (130) gelesen und gespeichert werden, nachdem eine vorgegebene Anzahl ausgewählter Transaktionen (101) durch die Auswähleinrichtung (200) ausgewählt worden ist.
  8. System nach einem der vorangehenden Ansprüche, wobei die Funktionseinheiten (111114) Prozessoren (111), Speicher (112), Ein-/Ausgabe-Schnittstellen (113) und Netzwerksteuerungen (114) enthalten.
  9. System nach einem der vorangehenden Ansprüche, wobei die Einrichtung (200) zum Auswählen ein Selektor ist, der eine Einrichtung zum Steuern der Abtastfrequenz des Selektors aufweist, und der Selektor gleichzeitig Transaktionen auswählt, die ausführbare Befehle und Speicherbezugsbefehle einschließen, die auszuführen sind, um die Datenflussrate in den Speicher und aus ihm abzutasten; und wobei die Datenflussraten in den Speicher und aus ihm analysiert werden, um Optimierung des Computersystems zu ermöglichen.
  10. Verfahren zum Optimieren der Leistung eines Computersystems (110) mit einer Vielzahl von Funktionseinheiten (111114), wobei das Verfahren die folgenden Schritte umfasst: Bereitstellen von Transaktionen (111) von einer Quelle (110), die durch das Computersystem abzuarbeiten sind; Auswählen von durch eine Vielzahl von Funktionseinheiten des Computersystems abzuarbeitenden Transaktionen, wobei die Transaktionen gleichzeitig durch die Funktionseinheiten abgetastet werden; Speichern von Zustandsinformationen (130) als eine Ansammlung von Zustandsinformationen im Verlauf der Zeit in Pufferspeichern (300), während die ausgewählten Transaktionen durch die Funktionseinheiten abgearbeitet werden, wobei die Zustandsinformationen wenigstens eine Adressen-Information (320), eine Transaktionsquellen-Information (340) und eine Latenz-Information (360) enthalten; und Analysieren der Ansammlung von Zustandsinformationen unter Verwendung eines Prozessors (111) und von Software, um Leistungsstatistiken des Computersystems zu schätzen, wobei die Leistungsstatistiken verwendet werden, um die Leistung des Computersystem (110) dynamisch zu optimieren, während das Computersystem arbeitet.
DE69824688T 1997-11-26 1998-11-25 System und Verfahren zur Leistungsoptimierung eines Rechnersystems Expired - Fee Related DE69824688T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US980124 1997-11-26
US08/980,124 US6374367B1 (en) 1997-11-26 1997-11-26 Apparatus and method for monitoring a computer system to guide optimization

Publications (2)

Publication Number Publication Date
DE69824688D1 DE69824688D1 (de) 2004-07-29
DE69824688T2 true DE69824688T2 (de) 2005-07-14

Family

ID=25527371

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69824688T Expired - Fee Related DE69824688T2 (de) 1997-11-26 1998-11-25 System und Verfahren zur Leistungsoptimierung eines Rechnersystems

Country Status (4)

Country Link
US (1) US6374367B1 (de)
EP (1) EP0919919B1 (de)
JP (1) JPH11272519A (de)
DE (1) DE69824688T2 (de)

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6742003B2 (en) * 2001-04-30 2004-05-25 Microsoft Corporation Apparatus and accompanying methods for visualizing clusters of data and hierarchical cluster classifications
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6763452B1 (en) 1999-01-28 2004-07-13 Ati International Srl Modifying program execution based on profiling
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US8121828B2 (en) * 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US7275246B1 (en) * 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US6636905B1 (en) * 1999-03-26 2003-10-21 Unisys Corporation Method for analyzing input/output performance of a data processing system
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US6748589B1 (en) 1999-10-20 2004-06-08 Transmeta Corporation Method for increasing the speed of speculative execution
US7197431B2 (en) * 2000-08-22 2007-03-27 International Business Machines Corporation Method and system for determining the use and non-use of software programs
US7103877B1 (en) * 2000-11-01 2006-09-05 International Business Machines Corporation System and method for characterizing program behavior by sampling at selected program points
US6772370B1 (en) * 2000-11-03 2004-08-03 Freescale Semiconductor, Inc. Method and apparatus for generation of pipeline hazard test sequences
US6751759B1 (en) * 2000-11-03 2004-06-15 Freescale Semiconductor, Inc. Method and apparatus for pipeline hazard detection
US6801994B2 (en) * 2000-12-20 2004-10-05 Microsoft Corporation Software management systems and methods for automotive computing devices
US7093108B2 (en) * 2001-02-01 2006-08-15 Arm Limited Apparatus and method for efficiently incorporating instruction set information with instruction addresses
US7093236B2 (en) * 2001-02-01 2006-08-15 Arm Limited Tracing out-of-order data
US20030004974A1 (en) * 2001-06-28 2003-01-02 Hong Wang Configurable system monitoring for dynamic optimization of program execution
US6742179B2 (en) * 2001-07-12 2004-05-25 International Business Machines Corporation Restructuring of executable computer code and large data sets
JP4143283B2 (ja) * 2001-09-12 2008-09-03 株式会社日立製作所 計算機の処理性能変更装置
US7159216B2 (en) * 2001-11-07 2007-01-02 International Business Machines Corporation Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system
US6918098B2 (en) * 2002-07-16 2005-07-12 Hewlett-Packard Development Company, L.P. Random code generation using genetic algorithms
GB2393272A (en) * 2002-09-19 2004-03-24 Advanced Risc Mach Ltd Controlling performance counters within a data processing system
US20040128446A1 (en) * 2002-12-27 2004-07-01 Carole Dulong Value profiling with low overhead
US20090052608A1 (en) * 2007-08-21 2009-02-26 International Business Machines Corporation Method for dynamically adjusting hardware event counting time-slice windows
US20040167854A1 (en) * 2003-02-21 2004-08-26 Knowles W. Jeffrey System and method of currency conversion in financial transaction process
US20040187108A1 (en) * 2003-02-21 2004-09-23 Knowles W. Jeffrey Method of scheduling and event processing in computer operating system
US20040167863A1 (en) * 2003-02-21 2004-08-26 Knowles W. Jeffrey System and method of transferring data through transaction process
US8041633B2 (en) * 2003-02-21 2011-10-18 Mtrex, Inc. System and method of electronic data transaction processing
US20040193395A1 (en) * 2003-03-26 2004-09-30 Dominic Paulraj Program analyzer for a cycle accurate simulator
TWI227398B (en) * 2003-04-15 2005-02-01 Asustek Comp Inc Automatic adjusting device of computer system performance
US20050027648A1 (en) * 2003-07-29 2005-02-03 Knowles W. Jeffrey System and method of account reconciliation for electronic transactions
US6925928B2 (en) * 2003-09-18 2005-08-09 Anthony Fox Trash compactor for fast food restaurant waste
US7308683B2 (en) * 2003-10-30 2007-12-11 International Business Machines Corporation Ordering of high use program code segments using simulated annealing
US7421592B1 (en) * 2004-02-13 2008-09-02 Microsoft Corporation High performance counter for realistic measurement of computer system load
US7735073B1 (en) * 2004-02-28 2010-06-08 Oracle International Corporation Method and apparatus for data object profiling
US7389502B2 (en) * 2004-03-31 2008-06-17 Intel Corporation Program phase detection for dynamic optimization
US7350046B2 (en) * 2004-04-02 2008-03-25 Seagate Technology Llc Managed reliability storage system and method monitoring storage conditions
JP4599902B2 (ja) * 2004-06-18 2010-12-15 株式会社日立製作所 ハードウェアモニタを用いた性能解析方法
US20060005180A1 (en) * 2004-06-30 2006-01-05 Nefian Ara V Method and system for hot path detection and dynamic optimization
US8640114B2 (en) 2006-09-07 2014-01-28 Oracle America, Inc. Method and apparatus for specification and application of a user-specified filter in a data space profiler
US8990377B2 (en) * 2004-12-06 2015-03-24 International Business Machines Corporation Method to effectively collect data from systems that consists of dynamic sub-systems
US7426684B2 (en) * 2005-04-29 2008-09-16 Hewlett-Packard Development Company, L.P. Lost-cycle measurement using cycle counter
US7703079B1 (en) 2005-05-03 2010-04-20 Oracle America, Inc. System performance prediction
US20070089094A1 (en) * 2005-10-13 2007-04-19 Levine Frank E Temporal sample-based profiling
US8253748B1 (en) * 2005-11-29 2012-08-28 Nvidia Corporation Shader performance registers
US7809928B1 (en) 2005-11-29 2010-10-05 Nvidia Corporation Generating event signals for performance register control using non-operative instructions
JP4760491B2 (ja) * 2005-12-08 2011-08-31 株式会社日立製作所 イベント処理システム、イベント処理方法、イベント処理装置、及び、イベント処理プログラム
US7596719B2 (en) * 2006-02-14 2009-09-29 Atmel Corporation Microcontroller information extraction system and method
DE102006041444B4 (de) 2006-09-04 2014-10-30 Infineon Technologies Ag Schaltungsanordnung und Verfahren zum Erfassen einer Ausführungszeit eines Befehls in einem Rechnersystem
US8813055B2 (en) 2006-11-08 2014-08-19 Oracle America, Inc. Method and apparatus for associating user-specified data with events in a data space profiler
JP4836811B2 (ja) 2007-01-26 2011-12-14 株式会社東芝 パフォーマンスモニタ装置および情報処理装置
US8762951B1 (en) * 2007-03-21 2014-06-24 Oracle America, Inc. Apparatus and method for profiling system events in a fine grain multi-threaded multi-core processor
US8341612B2 (en) * 2007-05-16 2012-12-25 International Business Machines Corporation Method and apparatus for run-time statistics dependent program execution using source-coding
JP2009129301A (ja) * 2007-11-27 2009-06-11 Nec Electronics Corp 自己診断回路及び自己診断方法
US8296749B2 (en) * 2007-12-28 2012-10-23 Intel Corporation Program translation and transactional memory formation
US7840677B2 (en) * 2008-03-11 2010-11-23 International Business Machines Corporation Systems, methods and computer program products for improving placement performance of message transforms by exploiting guided replication
US7493610B1 (en) 2008-03-27 2009-02-17 International Business Machines Corporation Versioning optimization for dynamically-typed languages
JP5217870B2 (ja) 2008-10-07 2013-06-19 富士通株式会社 プログラム性能測定装置、方法、プログラム、プログラム記録媒体
US8429665B2 (en) * 2010-03-19 2013-04-23 Vmware, Inc. Cache performance prediction, partitioning and scheduling based on cache pressure of threads
US9880848B2 (en) * 2010-06-11 2018-01-30 Advanced Micro Devices, Inc. Processor support for hardware transactional memory
US9483268B2 (en) 2012-03-16 2016-11-01 International Business Machines Corporation Hardware based run-time instrumentation facility for managed run-times
US9280447B2 (en) 2012-03-16 2016-03-08 International Business Machines Corporation Modifying run-time-instrumentation controls from a lesser-privileged state
US9454462B2 (en) 2012-03-16 2016-09-27 International Business Machines Corporation Run-time instrumentation monitoring for processor characteristic changes
US9430238B2 (en) 2012-03-16 2016-08-30 International Business Machines Corporation Run-time-instrumentation controls emit instruction
US9471315B2 (en) 2012-03-16 2016-10-18 International Business Machines Corporation Run-time instrumentation reporting
US9405541B2 (en) 2012-03-16 2016-08-02 International Business Machines Corporation Run-time instrumentation indirect sampling by address
US9465716B2 (en) 2012-03-16 2016-10-11 International Business Machines Corporation Run-time instrumentation directed sampling
US9442824B2 (en) 2012-03-16 2016-09-13 International Business Machines Corporation Transformation of a program-event-recording event into a run-time instrumentation event
US9411591B2 (en) 2012-03-16 2016-08-09 International Business Machines Corporation Run-time instrumentation sampling in transactional-execution mode
US9367316B2 (en) 2012-03-16 2016-06-14 International Business Machines Corporation Run-time instrumentation indirect sampling by instruction operation code
US9158660B2 (en) 2012-03-16 2015-10-13 International Business Machines Corporation Controlling operation of a run-time instrumentation facility
US9250902B2 (en) 2012-03-16 2016-02-02 International Business Machines Corporation Determining the status of run-time-instrumentation controls
US10129168B2 (en) * 2014-06-17 2018-11-13 Analitiqa Corporation Methods and systems providing a scalable process for anomaly identification and information technology infrastructure resource optimization
US9710354B2 (en) 2015-08-31 2017-07-18 International Business Machines Corporation Basic block profiling using grouping events
US11003428B2 (en) 2016-05-25 2021-05-11 Microsoft Technolgy Licensing, Llc. Sample driven profile guided optimization with precise correlation
US11645075B1 (en) * 2021-06-30 2023-05-09 Amazon Technologies, Inc. Program flow classification

Family Cites Families (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4084231A (en) 1975-12-18 1978-04-11 International Business Machines Corporation System for facilitating the copying back of data in disc and tape units of a memory hierarchial system
US4481583A (en) 1981-10-30 1984-11-06 At&T Bell Laboratories Method for distributing resources in a time-shared system
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
US4800521A (en) 1982-09-21 1989-01-24 Xerox Corporation Task control manager
US4590550A (en) 1983-06-29 1986-05-20 International Business Machines Corporation Internally distributed monitoring system
US5103394A (en) 1984-04-30 1992-04-07 Hewlett-Packard Company Software performance analyzer
US4845615A (en) 1984-04-30 1989-07-04 Hewlett-Packard Company Software performance analyzer
US4972338A (en) 1985-06-13 1990-11-20 Intel Corporation Memory management for microprocessor system
US4821178A (en) 1986-08-15 1989-04-11 International Business Machines Corporation Internal performance monitoring by event sampling
US4965717A (en) 1988-12-09 1990-10-23 Tandem Computers Incorporated Multiple processor system having shared memory with private-write capability
JPH02271435A (ja) 1989-04-13 1990-11-06 Mitsubishi Electric Corp タスクトレース装置
JPH03210649A (ja) 1990-01-12 1991-09-13 Fujitsu Ltd マイクロコンピュータおよびそのバスサイクル制御方法
US5282274A (en) 1990-05-24 1994-01-25 International Business Machines Corporation Translation of multiple virtual pages upon a TLB miss
US5301299A (en) 1990-06-07 1994-04-05 Intel Corporation Optimized write protocol for memory accesses utilizing row and column strobes
US5151981A (en) 1990-07-13 1992-09-29 International Business Machines Corporation Instruction sampling instrumentation
US5450609A (en) 1990-11-13 1995-09-12 Compaq Computer Corp. Drive array performance monitor
US5339425A (en) 1990-12-11 1994-08-16 Fisher Controls International, Inc. Operating system for a process controller
JPH0774984B2 (ja) 1991-06-10 1995-08-09 インターナショナル・ビジネス・マシーンズ・コーポレイション システム資源利用率測定方法とデータ処理システム
US5630157A (en) 1991-06-13 1997-05-13 International Business Machines Corporation Computer organization for multiple and out-of-order execution of condition code testing and setting instructions
JPH079632B2 (ja) 1991-06-18 1995-02-01 インターナショナル・ビジネス・マシーンズ・コーポレイション アドレス変換装置および方法
US5450586A (en) 1991-08-14 1995-09-12 Hewlett-Packard Company System for analyzing and debugging embedded software through dynamic and interactive use of code markers
US5269017A (en) 1991-08-29 1993-12-07 International Business Machines Corporation Type 1, 2 and 3 retry and checkpointing
US5287508A (en) 1992-04-07 1994-02-15 Sun Microsystems, Inc. Method and apparatus for efficient scheduling in a multiprocessor system
GB2266606B (en) 1992-04-27 1996-02-14 Intel Corp A microprocessor with an external command mode
JP3544214B2 (ja) 1992-04-29 2004-07-21 サン・マイクロシステムズ・インコーポレイテッド プロセッサの状態を監視する方法及び監視システム
US5515538A (en) 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US5418973A (en) 1992-06-22 1995-05-23 Digital Equipment Corporation Digital computer system with cache controller coordinating both vector and scalar operations
US5450349A (en) 1992-10-27 1995-09-12 Digital Equipment Corporation Computer system performance evaluation system and method
US5452457A (en) 1993-01-29 1995-09-19 International Business Machines Corporation Program construct and methods/systems for optimizing assembled code for execution
JPH06290079A (ja) 1993-03-30 1994-10-18 Hitachi Ltd 情報処理システム
US5594741A (en) 1993-03-31 1997-01-14 Digital Equipment Corporation Method for control of random test vector generation
US5452440A (en) 1993-07-16 1995-09-19 Zitel Corporation Method and structure for evaluating and enhancing the performance of cache memory systems
US5379432A (en) 1993-07-19 1995-01-03 Taligent, Inc. Object-oriented interface for a procedural operating system
US5485574A (en) 1993-11-04 1996-01-16 Microsoft Corporation Operating system based performance monitoring of programs
US5623627A (en) 1993-12-09 1997-04-22 Advanced Micro Devices, Inc. Computer memory architecture including a replacement cache
US5922070A (en) 1994-01-11 1999-07-13 Texas Instruments Incorporated Pipelined data processing including program counter recycling
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
US5493673A (en) 1994-03-24 1996-02-20 International Business Machines Corporation Method and apparatus for dynamically sampling digital counters to improve statistical accuracy
US5446876A (en) 1994-04-15 1995-08-29 International Business Machines Corporation Hardware mechanism for instruction/data address tracing
US5581482A (en) 1994-04-26 1996-12-03 Unisys Corporation Performance monitor for digital computer system
EP0689141A3 (de) 1994-06-20 1997-10-15 At & T Corp Unterbrechungsbasierte hardwaremässige Unterstützung für Systemleistungsprofilierung
US5528753A (en) 1994-06-30 1996-06-18 International Business Machines Corporation System and method for enabling stripped object software monitoring in a computer system
US5537541A (en) 1994-08-16 1996-07-16 Digital Equipment Corporation System independent interface for performance counters
JP3588485B2 (ja) 1994-08-26 2004-11-10 富士通株式会社 プロセススケジューリング方式
JP2908739B2 (ja) 1994-12-16 1999-06-21 インターナショナル・ビジネス・マシーンズ・コーポレイション 多重プロセッサ・システムにおけるcpuのモニタリング・システム及び方法
US5655115A (en) 1995-02-14 1997-08-05 Hal Computer Systems, Inc. Processor structure and method for watchpoint of plural simultaneous unresolved branch evaluation
US5748468A (en) 1995-05-04 1998-05-05 Microsoft Corporation Prioritized co-processor resource manager and method
US5608892A (en) 1995-06-09 1997-03-04 Alantec Corporation Active cache for a microprocessor
ATE278788T1 (de) 1995-07-26 2004-10-15 Pioneer Hi Bred Int Expressionskontrollesequenz zur allgemeinen und effektiven genexpression in pflanzen
JPH0997214A (ja) 1995-09-29 1997-04-08 Internatl Business Mach Corp <Ibm> 補助プロセッサのためのアドレス変換を含む情報処理システム
US5691920A (en) 1995-10-02 1997-11-25 International Business Machines Corporation Method and system for performance monitoring of dispatch unit efficiency in a processing system
US5751945A (en) 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system
US5765204A (en) 1996-06-05 1998-06-09 International Business Machines Corporation Method and apparatus for adaptive localization of frequently accessed, randomly addressed data
US5854934A (en) 1996-08-23 1998-12-29 Hewlett-Packard Company Optimizing compiler having data cache prefetch spreading
US5799143A (en) 1996-08-26 1998-08-25 Motorola, Inc. Multiple context software analysis
US5802593A (en) 1996-09-06 1998-09-01 Intel Corporation Method and apparatus for improving disk drive performance
US5802386A (en) 1996-11-19 1998-09-01 International Business Machines Corporation Latency-based scheduling of instructions in a superscalar processor
US5862371A (en) 1996-11-25 1999-01-19 International Business Machines Corporation Method and system for instruction trace reconstruction utilizing performance monitor outputs and bus monitoring
US5878208A (en) 1996-11-25 1999-03-02 International Business Machines Corporation Method and system for instruction trace reconstruction utilizing limited output pins and bus monitoring
US5884080A (en) 1996-11-26 1999-03-16 International Business Machines Corporation System and method for instruction burst performance profiling for single-processor and multi-processor systems
US5857097A (en) 1997-03-10 1999-01-05 Digital Equipment Corporation Method for identifying reasons for dynamic stall cycles during the execution of a program
US5944841A (en) 1997-04-15 1999-08-31 Advanced Micro Devices, Inc. Microprocessor with built-in instruction tracing capability
US5933626A (en) 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for tracing microprocessor instructions
US5860018A (en) 1997-06-25 1999-01-12 Sun Microsystems, Inc. Method for tracking pipeline resources in a superscalar processor
US5987598A (en) 1997-07-07 1999-11-16 International Business Machines Corporation Method and system for tracking instruction progress within a data processing system
US5923872A (en) 1997-11-26 1999-07-13 Digital Equipment Corporation Apparatus for sampling instruction operand or result values in a processor pipeline
US6000044A (en) 1997-11-26 1999-12-07 Digital Equipment Corporation Apparatus for randomly sampling instructions in a processor pipeline
US5964867A (en) 1997-11-26 1999-10-12 Digital Equipment Corporation Method for inserting memory prefetch operations based on measured latencies in a program optimizer
US5809450A (en) 1997-11-26 1998-09-15 Digital Equipment Corporation Method for estimating statistics of properties of instructions processed by a processor pipeline

Also Published As

Publication number Publication date
US6374367B1 (en) 2002-04-16
DE69824688D1 (de) 2004-07-29
JPH11272519A (ja) 1999-10-08
EP0919919A2 (de) 1999-06-02
EP0919919A3 (de) 2000-02-23
EP0919919B1 (de) 2004-06-23

Similar Documents

Publication Publication Date Title
DE69824688T2 (de) System und Verfahren zur Leistungsoptimierung eines Rechnersystems
DE69819849T2 (de) Anordnung zum willkürlichen Abtasten von Instruktionen in einer Prozessorpipeline
DE69821196T2 (de) Anordnung zum räumlichen und zeitlichen Abtasten in einem Rechnerspeichersystem
DE69806564T2 (de) Verfahren zur Schätzung von Statistiken der Eigenschaften von Speichersysteminteraktionen zwischen Kontexten in einem Rechnersystem
DE69812849T2 (de) Verfahren zur Schätzung von Statistiken der Eigenschaften von Speichersystemtransaktionen
DE69826418T2 (de) Anordnung zum Abtasten mehrerer Instruktionen in einer Prozessorpipeline
DE69811832T2 (de) Verfahren zur Schätzung von Statistiken der Eigenschaften von durch eine Prozessorpipeline bearbeiteten Wechselwirkungen
US6442585B1 (en) Method for scheduling contexts based on statistics of memory system interactions in a computer system
DE69807729T2 (de) Threadumschaltungssteuerung in einem multithreadprozessorsystem
DE602004006858T2 (de) Abrechnungsverfahren und -schaltung zur bestimmung der pro-thread-nutzung von prozessorbetriebsmitteln in einem simultanen multithread-prozessor (smt)
Lim et al. Waiting algorithms for synchronization in large-scale multiprocessors
DE112006001408T5 (de) Verbesserung für Leistungsüberwachungsarchitektur für die analyse kritischer Wege
Kunkel et al. A performance methodology for commercial servers
Jayasena et al. Detection of false sharing using machine learning
DE102012210895A1 (de) Vorhersage der ungeordneten Parallelverarbeitung der Befehle von Threads in einem Multithread-Prozessor
Oh et al. LIME: A framework for debugging load imbalance in multi-threaded execution
Rane et al. Enhancing performance optimization of multicore/multichip nodes with data structure metrics
Rane et al. Performance optimization of data structures using memory access characterization
Machina et al. Predicting cache needs and cache sensitivity for applications in cloud computing on cmp servers with configurable caches
Eklöv et al. A profiling method for analyzing scalability bottlenecks on multicores
Pai et al. An operational performance model of breadth-first search
DE102022127208A1 (de) Optimierung der Anwendungsausführung auf der Grundlage von Metriken für die Parallelität auf Speicherebene (MLP)
Dublish Managing the memory hierarchy in GPUs
Zhou Autonomic Thread Parallelism and Mapping Control for Software Transactional Memory
Pasqualin et al. Thread and Data Mapping in Software Transactional Memory: An Overview

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee