DE112016006686T5 - Verfahren und vorrichtung zur zeit- und ereignisausgerichteten mehrschicht-, mehrfachagent-leistungsüberwachung - Google Patents

Verfahren und vorrichtung zur zeit- und ereignisausgerichteten mehrschicht-, mehrfachagent-leistungsüberwachung Download PDF

Info

Publication number
DE112016006686T5
DE112016006686T5 DE112016006686.4T DE112016006686T DE112016006686T5 DE 112016006686 T5 DE112016006686 T5 DE 112016006686T5 DE 112016006686 T DE112016006686 T DE 112016006686T DE 112016006686 T5 DE112016006686 T5 DE 112016006686T5
Authority
DE
Germany
Prior art keywords
pma
memory
identifier
coordinator
memory address
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.)
Pending
Application number
DE112016006686.4T
Other languages
English (en)
Inventor
Francesc Guim Bernat
Kshitij A. Doshi
Alejandro Duran Gonzalez
David Pardo Keppel
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE112016006686T5 publication Critical patent/DE112016006686T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • 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/3404Recording 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 parallel or distributed programming
    • 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/3476Data logging
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Ein Verarbeitungssystem enthält einen Verarbeitungskern und einen Leistungsüberwachungsagent- (PMA) Koordinator, der kommunikativ an den Verarbeitungskern gekoppelt ist, zum Empfangen, vom Verarbeitungskern, einer Anfrage zum Überwachen einer Ereignisart, die mit einer Einrichtung des Verarbeitungssystems verknüpft ist, wobei die Anfrage eine erste Kennung zum Identifizieren der Ereignisart und eine zweite Kennung zum Identifizieren der Einrichtung umfasst, Bestimmen einer Speicheradresse eines Speichers auf Basis der ersten Kennung und der zweiten Kennung und Senden einer Anweisung zu einem PMA-Ausführungselement, das mit der Einrichtung verknüpft ist, um das PMA-Ausführungselement zu veranlassen, Informationen bezüglich der Ereignisart in einer Aufzeichnung, beginnend bei der Speicheradresse des Speichers, zu speichern.

Description

  • TECHNISCHES GEBIET
  • Ausführungsformen der Offenbarung betreffen im Allgemeinen ein Verarbeitungssystem und betreffen insbesondere einen Verteilte-Leistung-Monitor (PMON), der die Leistung mehrerer Verarbeitungseinheiten im Verarbeitungssystem durch eine zentralisierte Steuerung überwachen kann.
  • HINTERGRUND
  • In den meisten modernen mehrfach programmierten Datenverarbeitungs- oder Computersystemen kämpfen verschiedene Aufgaben oder Benutzeranwendungen um Verarbeitungszeit zur Ausführung auf einer zentralen Verarbeitungseinheit (CPU) oder einer ähnlichen Verarbeitungseinrichtung. Selbst in einer Umgebung mit höchstem Multi-Tasking-Niveau ist eine Aktivität tendenziell stoßartig, mit Perioden einer Latenz oder Inaktivität, gefolgt von Perioden intensiver Verarbeitungsaktivität.
  • Figurenliste
  • Die Offenbarung wird anhand der folgenden ausführlichen Beschreibung und aus den beiliegenden Zeichnungen verschiedener Ausführungsformen der Offenbarung vollkommen verständlich. Die Zeichnungen sollten jedoch nicht als Einschränkung der Offenbarung auf die spezifischen Ausführungsformen sondern nur als Erklärung und Erläuterung verstanden werden.
    • 1 zeigt ein Verarbeitungssystem, das eine mehrschichtige PMON-Architektur gemäß einer Ausführungsform der vorliegenden Offenbarung enthält.
    • 2 zeigt Einzelheiten eines bezeichneten Speicherbereichs gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 3 zeigt ausführlich ein PMA-Ausführungselement gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 4 ist ein Ablaufdiagramm eines Verfahrens zum Betreiben eines Verarbeitungssystems gemäß einer Ausführungsform der Offenbarung.
    • 5A ist ein Blockdiagramm, das eine Mikroarchitektur für einen Prozessor zeigt, in dem eine Ausführungsform der Offenbarung verwendet werden kann.
    • 5B ist ein Blockdiagramm, das eine Pipeline nach Programmreihenfolge und eine Registerumbenennungsstufen-, Ausgabe-/Ausführungs-Pipeline nicht nach Programmreihenfolge zeigt, die gemäß zumindest einer Ausführungsform der Offenbarung implementiert sind.
    • 6 zeigt ein Blockdiagramm der Mikroarchitektur für einen Prozessor gemäß einer Ausführungsform der Offenbarung.
    • 7 ist ein Blockdiagramm, das ein System zeigt, in dem eine Ausführungsform der Offenbarung verwendet werden kann.
    • 8 ist ein Blockdiagramm eines Systems, in dem eine Ausführungsform der Offenbarung arbeiten kann.
    • 9 ist ein Blockdiagramm eines Systems, in dem eine Ausführungsform der Offenbarung arbeiten kann.
    • 10 ist ein Blockdiagramm eines System-on-a-Chip (SoC) gemäß einer Ausführungsform der vorliegenden Offenbarung
    • 11 ist ein Blockdiagramm einer Ausführungsform eines SoC-Designs gemäß der vorliegenden Offenbarung.
    • 12 zeigt ein Blockdiagramm einer Ausführungsform eines Computersystems.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Ein Verarbeitungssystem (z.B. ein System-on-a Chip (SoC)) kann mehrere integrierte Schaltungseinheiten (die in der Folge als IC-Funktionseinheiten bezeichnet werden) zur Durchführung gewisser Aufgaben enthalten. Die IC-Funktionseinheiten können zentrale Verarbeitungseinheiten (CPUs), Speichersteuerungen, Cache-Kohärenzsteuerungen usw. enthalten. Diese IC-Funktionseinheiten können über ein Bussystem (z.B. eine In-Die-Verbindung (IDI) oder eine Ringverbindung) unter Verwendung eines Kommunikationsprotokolls (z.B. des IDI-Protokolls) miteinander kommunizieren. Jede der IC-Funktionseinheiten kann einen spezialisierten Leistungsmonitor (PMON) zur Messung von Leistungsmetriken enthalten, die mit einer Ausführung dieser Aufgaben verknüpft sind. Der PMON kann ein Block einer Logikschaltung sein, der in einer IC-Funktionseinheit eingebettet ist, um das Auftreten leistungsbezogener Ereignisse zu zählen. Die Ereignisse können unterschiedliche Arten von Ereignissen sein, enthaltend zum Beispiel L1/L2-Fehlschläge, Last-Level Cache (LLC)-Fehlschläge oder einen CPU-Taktstopp.
  • Ein PMON einer IC-Funktionseinheit kann mit einer begrenzten Anzahl (z.B. drei) Zählern verknüpft sein, die in Hardware oder Software implementiert sind, um das Auftreten einer Art von Ereignissen zu zählen. In einigen Verarbeitungssystemen kann der PMON mehrere Arten von Ereignissen überwachen, die mit der IC-Funktionseinheit verknüpft sind. Da die Anzahl überwachter Ereignisarten die Anzahl der Zähler überschreiten kann, kann ein Zähler zeitgemultiplext sein, um unterschiedliche Arten von Ereignissen zu zählen. Zum Beispiel kann der PMON das Auftreten einer Art von Ereignisse bis zu einem Schwellenwert zählen und dann ein PMON-Unterbrechungssignal generieren, um einen Verarbeitungskern zu informieren, dass die Zählung des Ereignisses den Schwellenwert überschritten hat. Eine Software-Anwendung, die auf dem Verarbeitungskern ausgeführt wird, kann die Zählung aufzeichnen und den Zähler für eine folgende Prozessorzeiteinheit neu initialisieren. Wegen des Multiplexens sammelt die Software-Anwendung die Zählungen der Ereignisart bei einer bestimmten Abtastrate über Millionen von Anweisungen über mehrere CPUs. Ferner kann die Software-Anwendung eine Statistik (z.B. den Durchschnitt) aus diesen Abtastungen berechnen, um ein Ereignisprofil zu erstellen, das die Ursache der Ereignisart zeigen kann (z.B. eine leichte Erhöhung in Zyklen pro Anweisung (CPI)).
  • In Betrieb jedoch kann eine Art von Ereignissen stoßweise auftreten und der Zugang zum Speicher kann über mehrere Hierarchieebenen und üblicherweise nicht gleichmäßig im Zeitverlauf erfolgen. Wenn die Anzahl von Verarbeitungskernen innerhalb eines Verarbeitungssystems steigt und die Speicherstruktur komplexer wird, ist es schwieriger, die Ursachen einer Ereignisart anhand des Ereignisprofils zu identifizieren, das aus der Statistik erstellt wurde, die unter Verwendung von Abtastungen von Ereigniszählungen erstellt wurde.
  • Ausführungsformen der vorliegenden Offenbarung enthalten ein Verarbeitungssystem, das eine mehrschichtige PMON-Architektur enthält, die eine unterbrechungsfreie Ereignisdatensammlung direkt in Speicherbereiche ermöglicht, die unterschiedlichen Arten von Ereignissen zugewiesen sind. Da die gesammelten Ereignisdaten in den Speicherbereichen gespeichert werden, die Ereignisarten zugewiesen und durch Kennungen, die mit Ereignisarten verknüpft sind, identifiziert werden, kann eine Software-Anwendung, die auf dem Verarbeitungskern läuft, die gesammelten Daten unter Verwendung einer Speicheradresse abrufen, die direkt in den Benutzerraum der Software-Anwendung abgebildet wird. Auf diese Weise können die Ereignisdaten kontinuierlich feinkörnig gesammelt werden, ohne ein Multiplexen zu benötigen.
  • In einer Ausführungsform kann die PMON-Architektur eine oder mehr IC-Funktionseinheiten enthalten, die kommunikativ durch eine Verbindung (z.B. die IDI) aneinander gekoppelt sind. Jede IC-Funktionseinheit kann ein programmierbares Leistungsüberwachungsagent- (PMA) Ausführungselement enthalten, das über die Verbindung kommunikativ an einen zentralisierten PMA-Koordinator gekoppelt ist. Eine Software-Anwendung, die auf einem Verarbeitungskern läuft, kann Anfragen an den PMA-Koordinator über eine Anwendungsprogrammierungsschnittstelle (PMON API) ausgeben. Die Anfragen können PMON-Parameter spezifizieren, enthaltend zum Beispiel die IC-Funktionseinheit und die zu überwachende Ereignisart, einen Plan, nach dem die Ereignisarten aufgezeichnet werden, die Speicherregionen zum Aufzeichnen der Ereignisart usw. Die Ereignisarten können durch eine Ereignisartkennung dargestellt sein und der Plan kann durch eine Abtastrate dargestellt sein. In Antwort auf einen Empfang einer Anfrage kann der PMA-Koordinator das PMA-Ausführungselement der bezeichneten IC-Funktionseinheit programmieren, die spezifizierten Arten von Ereignissen zu überwachen und die Leistungsdaten, die mit der Ereignisart verknüpft sind, in der Speicherregion aufzuzeichnen, die für die IC-Funktionseinheit und die Ereignisart bezeichnet ist. Die Leistungsdaten können Informationen enthalten, die zur Berechnung von Metriken verwendet werden können, die sich auf die Leistung der IC-Funktionseinheit beziehen. Somit können PMA-Ausführungselemente Leistungsdaten aufzeichnen, die sich auf Ereignisarten in den zugewiesenen Speicherregionen beziehen, ohne Unterbrechungen hervorzurufen, um den Verarbeitungskern aufzufordern, eine Datensammlung aus Zählern durchzuführen.
  • 1 zeigt ein Verarbeitungssystem 100, das eine mehrschichtige PMON-Architektur gemäß einer Ausführungsform der vorliegenden Offenbarung enthält. Wie in 1 dargestellt, kann das Verarbeitungssystem 100 eine oder mehr IC-Funktionseinheiten 102A - 102B, einen PMA-Koordinator 104, einen Speicher 106 und eine Verbindung (z.B. die IDI) enthalten, die IC-Funktionseinheiten 102A- 102B, PMA-Koordinator 104 und Speicher 106 unter Verwendung eines Kommunikationsprotokolls (z.B. des IDI-Protokolls) kommunikativ verbindet. Wie oben besprochen, können die IC-Funktionseinheiten einen Prozessor, eine Speichersteuerung, eine Cache-Steuerung enthalten. Zum Beispiel kann in einer Ausführungsform die IC-Funktionseinheit 102A ein Prozessor sein, der einen Verarbeitungskern 110 zur Ausführung ausführbarer Anweisungen von Software-Anwendungen enthalten kann. Zusätzlich kann jede der IC-Funktionseinheiten 102A - 102B ein PMA-Ausführungselement 112A, 112B enthalten, das Anweisungen und Parameter vom PMA-Koordinator 104 empfangen kann. Daher kann das PMA-Ausführungselement 112A, 112B programmiert sein, Ereignisarten zu überwachen, die mit der entsprechenden IC-Funktionseinheit verknüpft sind, und Leistungsdaten aufzeichnen, die mit Ereignisarten verknüpft sind, die mit der IC-Funktionseinheit in einer bezeichneten Speicherregion verknüpft sind.
  • In einer Ausführungsform, wie in 1 dargestellt, kann das Verarbeitungssystem 100 eine System-on-a-Chip-Hardware-Schaltung sein, die auf einem einzelnen Die (demselben Substrat) innerhalb eines einzigen Halbleiter-Package implementiert sein kann. Das Verarbeitungssystem 100 kann eine IC-Funktionseinheit 102 eines Prozessors enthalten. Der Prozessor 102 kann einen Verarbeitungskern 110 enthalten, der eine Anweisungsausführungs-Pipeline und verknüpfte Hardware-Komponenten (wie L1/L2 Cache usw.) enthalten kann. Der Verarbeitungskern 110 kann programmiert sein, Software-Anwendungen auszuführen, die aus ausführbaren Anweisungen bestehen. In einer Ausführungsform kann der Verarbeitungskern 110 mit einer Schnittstellenfunktionsbibliothek versehen sein, die als PMON API 114 bezeichnet ist, sodass eine Software-Anwendung, die auf Verarbeitungskern 110 läuft, PMON API 114 zur Ausgabe von Leistungsüberwachungsanfragen über Verbindung 108 an den PMA-Koordinator 104 verwenden kann. Die Leistungsüberwachungsanfragen können Konfigurationsdaten für den PMA-Koordinator 104 enthalten. Die Konfigurationsdaten können einen Speicheradressenbereich enthalten, der mit Speicher 106 verknüpft ist, um gesammelte Leistungsdaten zu speichern. In einer Ausführungsform kann die durch den Speicheradressenbereich spezifizierte Speicherregion einen zirkulären Zwischenspeicher bilden, um die Leistungsdaten zu speichern, wohingegen, wenn der Zwischenspeicher voll ist, der älteste Inhalt durch neue Leistungsdaten überschrieben wird. Der zirkuläre Zwischenspeicher kann benutzt werden, um einen Zwischenspeicherüberlauf zu vermeiden. Die Konfigurationsdaten können auch Ereignisartkennungen, Kennungen (z.B. Anweisungspointer) für Anweisungen, die die Art von Ereignissen generieren, und die Schwellenwerte, die mit der zu sammelnden Ereignisart verknüpft sind, enthalten. Die Leistungsdaten, die mit einer Ereignisart verknüpft sind, können in einem Segment aufgezeichnet werden, das der Ereignisart im Speicheradressenbereich zugewiesen ist. Zum Beispiel kann jede Ereignisart mit einem Adressenversatz in Bezug auf eine Startadresse des Speicheradressenbereichs verknüpft sein. Daher können die Leistungsdaten, die für die Ereignisart gesammelt werden, beginnend mit dem Adressenversatz aufgezeichnet werden. Daher können Leistungsdaten unterschiedlicher Ereignisarten in unterschiedlichen Segmenten aufgezeichnet werden, wobei jedes der Segmente mit einem jeweiligen Adressenversatz verknüpft sein kann. Die Leistungsüberwachungsanfragen können auch eine Anweisung enthalten, das PMA-Ausführungselement 112A, 112B zu starten, stoppen, initialisieren (oder konfigurieren) oder neu zu initialisieren (oder neu zu konfigurieren). Diese Anweisungen können mit einem Plan verbunden sein, demgemäß die Leistungsdatensammlung ausgeführt wird.
  • Der PMA-Koordinator 104 kann eine Hardware Steuerung sein, die Programmierungsanweisungen und Parameter an PMA-Ausführungselemente 112A, 112B senden kann, um die Durchführung der PMON-Anfragen zu delegieren, die vom Verarbeitungskern 110 empfangen werden. Der PMA-Koordinator 104 kann Konfigurationsdaten für PMA-Ausführungselemente 112A, 112B vorsehen, die spezifizieren können, wie Leistungsdaten in Bezug auf eine Ereignisart zu sammeln sind und wo im Speicher die gesammelten Leistungsdaten zu speichern sind. Der Verarbeitungskern 110 kann Registern 118 für Software-Anwendungen freilegen, die die Konfigurationsdaten in diesen Registern speichern können, um Anfragen an den PMA-Koordinator 104 zu senden.
  • In einer Implementierung kann der PMA-Koordinator 104 einen Decodierer 116, Register 118, einen Übersetzungszwischenspeicher 120, eine PMA-Koordinator-Logikschaltung 122 und eine Verbindungsschnittstelle 124 (z.B. eine IDI-Schnittstelle) enthalten. Der PMA-Koordinator 104 ist kommunikativ mit IC-Funktionseinheiten 102A, 102B (und ihren entsprechenden PMA-Ausführungselementen 112A, 112B) und Speicher 106 verbunden, um Nachrichten unter Verwendung eines Verbindungskommunikationsprotokolls (z.B. des Kohärenz-IDI-Protokolls) auszutauschen. Die Verbindungsschnittstelle 124 kann eine Logikschaltung zum Verbinden von Komponenten des PMA-Koordinators 104 mit der Verbindung 108 enthalten, um Anfragen zu empfangen, die von einer Software-Anwendung (unter Verwendung von PMON API 114) ausgegeben werden, die auf Verarbeitungskern 110 läuft, PMON-Konfigurationsdaten abzurufen, die im Speicher 106 gespeichert sind, und weitere Anfragen an PMA-Ausführungselemente 112A, 112B zu senden, um Leistungsüberwachungsaufgaben auszuführen. In einer Ausführungsform ist Verbindung 108 eine On-Die, ringbasierte Verbindung, die einen Datenring, einen Anfragering, einen Bestätigungsring und einen Snoop-Ring enthält. Der Datenring kann zum Senden von Daten verwendet werden; der Anfrage- und Bestätigungsring können zum Senden von Steuersignalen zur Datenübertragung verwendet werden; und der Snoop-Ring kann zum Senden von Cache-Signalen verwendet werden, die aufgrund von Speicherzugriffen (z.B. Lesen und/oder Schreiben) generiert werden. Der PMA-Koordinator 104 kann Nachrichten, die sich auf eine Leistungsüberwachung mit anderen Komponenten im Verarbeitungssystem 100 beziehen, unter Verwendung dieser Ringe kommunizieren, die bereits in dem ringbasierten Bussystem vorhanden sind. In einer anderen Ausführungsform kann ein zusätzlicher PMON-Ring dem bestehenden ringbasierten Bussystem hinzugefügt werden, um die Kommunikation der Nachrichten, die sich auf eine Leistungsüberwachung beziehen, zu erleichtern.
  • In einer Ausführungsform können Register 118 modellspezifische Register (MSRs) sein, die Konfigurationsdaten speichern können, die vom Verarbeitungskern 110 empfangen werden. Der Verarbeitungskern 110 kann eine Software-Anwendung ausführen, um Konfigurationsanfragen (z.B. unter Verwendung von PMON API 114) an den PMA-Koordinator 104 zu senden. Die Konfigurationsanfragen können die Konfigurationsdaten enthalten, die in Registern 118 und dann im Speicher 106 gespeichert werden sollen. Zum Beispiel können während eines Initialisierungsprozesses (oder Neuinitialisierungsprozesses) die Konfigurationsanfragen vom Verarbeitungskern 110 Konfigurationsdaten (z.B. die bezeichneten Speicheradressenbereiche), die mit unterschiedlichen IC-Funktionseinheiten verknüpft sind, zum PMA-Koordinator 104 und dann in den Speicher 106 überführen. Anschließend, nach Empfang einer Startanfrage, die Leistung einer IC-Funktionseinheit zu überwachen, kann die PMA-Koordinatorlogik 122 die Konfigurationsdaten aus Speicher 106 laden. In einer Ausführungsform kann ein erstes Register den Speicheradressenbereich speichern, der den zirkulären Zwischenspeicher umfasst, um Leistungsdaten, die mit einer IC-Funktionseinheit verknüpft sind, zu speichern. Ein zweites Register kann die Speicherstellen zum Speichern von Ereignisartkennungen, Anweisungskennungen usw. speichern. Ein drittes Register kann die Adressenversätze für Speichersegmente speichern, die mit unterschiedlichen Ereignisarten verknüpft sind. Ein viertes Register kann einen aktuellen Anfangs-Pointer und Ende-Pointer für den zirkulären Zwischenspeicher speichern. Ein fünftes Register kann die Anweisung (z.B. Start, Stopp, Initialisieren oder Neuinitialisieren) an das PMA-Ausführungselement 112A, 112B speichern.
  • Die PMA-Koordinator-Logikschaltung 122 kann unter Benutzung der Konfigurationsdaten arbeiten, die in Registern 118 gespeichert sind. Daher kann die Software-Anwendung, die auf Verarbeitungskern 110 läuft, den Betrieb des PMA-Koordinators 104 durch Modifizieren der Konfigurationsdaten, die in Registern 118 gespeichert sind, ändern.
  • Die PMA-Koordinator-Logikschaltung 122 kann Leistungsüberwachungsaufgaben der PMA-Ausführungselemente 122A, 122B auf Basis von Konfigurationsdaten in Registern 118 zuweisen. In einer Ausführungsform kann die PMA-Koordinator-Logikschaltung 122 Anweisungen und Parameter an die PMA-Ausführungselemente 122A, 122B senden, um Zähler, die mit diesen PMA-Ausführungselementen verknüpft sind, zu aktivieren (oder deaktivieren). Die Anweisungen von der PMA-Koordinator-Logikschaltung 122 an die PMA-Ausführungselemente 122A, 122B können auf Basis der Konfigurationsdaten generiert werden, die in Registern 118 gespeichert sind. Die PMA-Koordinator-Logikschaltung 122 kann Cache-Agenten (z.B. Cache Steuerungen) zum Einrichten von Speicherregionen verwenden, die PMA-Ausführungselementen 122A, 122B zugewiesen werden. Zum Beispiel kann eine Software-Anwendung einen Code enthalten, um Speicherregionen zum Speichern der Konfigurationsdaten und der Leistungsdaten zuzuordnen, und die Pointer zu den Speicherregionen können durch die Cache Steuerungen in Registern 118 gesichert werden.
  • Jedes PMA-Ausführungselement 122A, 122B kann mit einer bezeichneten Speicherregion 132A, 132B verknüpft sein, die durch einen entsprechenden Speicheradressenbereich spezifiziert ist. In einer Ausführungsform kann der Speicheradressenbereich im physischen Speicheradressenraum spezifiziert sein. Zum Beispiel, wie in 1 dargestellt, kann das PMA-Ausführungselement 122A mit Speicherregion 132A verknüpft sein und PMA-Ausführungselement 122B kann mit Speicherregion 132B verknüpft sein. Die bezeichnete Speicherregion 132A, 132B kann einen Konfigurationsdatenbereich zum Speichern der Konfigurationsdaten enthalten, die mit dem entsprechenden PMA-Ausführungselement verknüpft sind, und einen Bereich für gesammelte Daten zum Speichern der Leistungsdaten, die durch das PMA-Ausführungselement gesammelt wurden. 2 zeigt Einzelheiten eines bezeichneten Speicherbereichs 200 gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • Wie in 2 dargestellt, kann die Speicherregion 200 einen PMON-Konfigurationsdatenbereich 202 und einen PMON-Bereich für gesammelte Daten 204 enthalten. Der PMON-Konfigurationsdatenbereich 202 kann Aufzeichnungen 206A bis 206B zum Speichern von Konfigurationsparametern enthalten. In einer Ausführungsform können die Konfigurationsparameter eine erste Kennung („PMON ID“), die eine Ereignisart identifiziert, eine zweite Kennung („Einrichtungs-ID“), die eine IC-Funktionseinheit identifiziert, deren Leistung in Bezug auf die Ereignisart überwacht wird, einen Auslösungspunkt, der den Einleitungspunkt beschreibt, an dem eine Leistungsdatensammlung startet, einen Stopppunkt, der den Endpunkt beschreibt, an dem die Leistungsdatensammlung endet, und einen Speicheradressenbereich, in dem die gesammelten Daten gespeichert sind, enthalten. Der Auslösungspunkt (oder der Stopppunkt) kann aus Zeitstempeln bestehen, an welchen die Datensammlung startet (oder stoppt). Der Auslösungspunkt kann auch eine Speicherstelle im Speicheradressenbereich und ein Schwellenwert sein. Der Auslösungspunkt tritt ein, wenn der gesammelte Datenwert an der Speicherstelle den Schwellenwert kreuzt. Der Auslösungspunkt und der Stopppunkt codieren den Plan der Ereignisüberwachung.
  • Der PMON-Bereich für gesammelte Daten 204 kann mit den Speicheradressenbereichen verknüpft sein, die in Aufzeichnungen des PMON-Konfigurationsdatenbereichs 202 definiert sind. Der PMON-Bereich für gesammelte Daten 204 kann gesammelte Leistungsdaten speichern, die mit einer Ereignisart verknüpft sind, die durch die PMON ID identifiziert wird. In einer Ausführungsform, wie in den folgenden Abschnitten beschrieben, kann das PMA-Ausführungselement die Leistungsdaten in einem Zähler (z.B. einem Register, das das Auftreten einer Ereignisart aufzeichnet) sammeln und die Leistungsdaten in einer Aufzeichnung im PMON-Konfigurationsdatenbereich 202 gemäß dem Plan speichern, der vom PMA-Koordinator empfangen wird. Die gespeicherten Daten können die PMON ID enthalten, die die Ereignisart identifiziert, einen Zählerwert, der die Leistungsdaten darstellt, und eine Zeit (z.B. einen Zeitstempel), die den Zeitpunkt angibt, zu dem der Zählerwert erfasst wird. Jede Aufzeichnung im PMON-Bereich für gesammelte Daten 204 kann eine festgesetzte Länge haben und bei einem entsprechenden Adressenversatz von einer Startadresse der Speicherregion 200 starten, die der IC-Funktionseinheit zugewiesen ist, die durch die Einrichtungs-ID identifiziert ist. Daher können Daten, die mit einer Ereignisart für eine IC-Funktionseinheit verknüpft sind, durch eine Software-Anwendung aus diesen Aufzeichnungen 208A, 208B abgerufen werden, die im PMON-Bereich für gesammelte Daten 204 gespeichert sind.
  • Unter Bezugnahme auf 1 kann die PMA-Koordinator-Logikschaltung 122 in Antwort auf einem Empfang einer Anfrage vom Verarbeitungskern 110, die Leistung einer IC-Funktionseinheit 102A, 102B zu überwachen, das entsprechende PMA-Ausführungselement 112A, 112B durch Speichern der Konfigurationsparameter (z.B. PMON ID, Einrichtungs-ID, Auslösungsereignis, Stoppereignis, Speicheradressenbereich) im PMON-Konfigurationsdatenbereich 202 der bezeichneten Speicherregion 132A, 132B einrichten. Die PMA-Koordinator-Logikschaltung 122 kann Zugang zu Systemtakt oder Bus-Snooping haben, die das Auslösungsereignis und Stoppereignis generieren können. Ferner kann die PMA-Koordinator-Logikschaltung 122, auf Basis der Konfigurationsparameter, eine Anweisung (z.B. Starten, Stoppen, Initialisieren oder Neuinitialisieren) senden, um das PMA-Ausführungselement 112A, 112B aufzufordern, entsprechende Maßnahmen zu ergreifen.
  • In einer Ausführungsform kann die Anfrage, die vom Verarbeitungskern 110 empfangen wird, die Einrichtungs-ID enthalten, die die IC-Funktionseinheit identifiziert, deren Leistung zu überwachen ist. Zum Beispiel kann die Anfrage, die vom Verarbeitungskern 110 empfangen wird, eine Überwachung der Ereignisart „L1_misses“ (PMON ID „L1_MISS“) für eine IC-Funktionseinheit spezifizieren, die durch eine Kennung „CORE_1“ identifiziert ist. Der Decodierer 116 des PMA-Koordinators 104 kann das PMA-Ausführungselement bestimmen, das mit der IC-Funktionseinheit verknüpft ist. Die PMA-Koordinator-Logikschaltung 122 kann die Einrichtungs-ID in die Aufzeichnung 206A, 206B schreiben, die im PMON-Konfigurationsdatenbereich 202 gespeichert ist.
  • In einer Ausführungsform kann ein Übersetzungszwischenspeicher (TLB) 120 verwendet werden, um die virtuellen Speicheradressen, die durch Software-Anwendungen benutzt werden, die auf Verarbeitungskern 110 laufen, in physische Speicheradressen zu übersetzen, die in den Aufzeichnungen verwendet werden, die im PMON-Konfigurationsdatenbereich 202 gespeichert sind. TLB 120 kann eine Abbildungstabelle enthalten, die die virtuellen Speicheradressen auf die physischen Speicheradressen abbildet. Daher kann die PMA-Koordinator-Logikschaltung 122 in Antwort auf einen Empfang der Anfrage von einer Software-Anwendung, die auf Verarbeitungskern 110 läuft, enthaltend einen Speicheradressenbereich, der im virtuellen Speicheradressenraum definiert ist, zuerst TLB 120 zum Übersetzen des Speicheradressenbereichs in den physischen Speicheradressenraum verwenden und dann den Speicheradressenbereich in Aufzeichnungen 206A, 206B speichern, die im PMON-Konfigurationsdatenbereich 202 gespeichert sind.
  • Das PMA-Ausführungselement 112A, 112B kann, über Verbindung 108, Anweisungen vom PMA-Koordinator 104 empfangen, um initialisiert zu werden und Leistungsdaten für spezifizierte Ereignisarten zu sammeln. In einer Ausführungsform sind PMA-Ausführungselemente 112A, 112B gleiche oder identische Logikschaltungen, die initialisiert (oder konfiguriert) werden können, Leistungsdaten zu sammeln. Das PMA-Ausführungselement 112A, 112B kann eine Schnittstellenschaltung 130A, 130B zur Kommunikation mit Verbindung 108 unter Verwendung eines Verbindungskommunikationsprotokolls, eine PMA-Ausführungselement-Logikschaltung 128A, 128B zum Initialisieren von Konfigurationsregistern von PMA-Ausführungselement-Logikeinheiten 112A, 112B und Sammeln von Leistungsdaten und einen PMON-Ereignisdetektor 126A, 126B zum Detektieren von Ereignissen auf Basis der Konfigurationsdaten enthalten.
  • In einer Ausführungsform können PMA-Ausführungselemente 112A, 112B eine Anfrage vom PMA-Koordinator 104 empfangen, enthaltend eine Aufgabe, die nicht durchgeführt werden kann oder die das PMA-Ausführungselement 112A, 112B aus bestimmten Gründen nicht durchführt. Zum Beispiel würde die angefragte Aufgabe eine Anzahl von Zählern erfordern, die die Gesamtanzahl von Zählern übersteigt, die dem PMA-Ausführungselement 112A, 112B zur Verfügung stehen. In Antwort auf ein Versagen, die angefragte Aufgabe durchzuführen kann die PMA-Ausführungselement-Logikschaltung 128A,128B eine Unterbrechung beim Verarbeitungskern 110 generieren, um eine Nachricht zu senden, die die Ausnahme und Einzelheiten des Versagens spezifiziert. Die Einzelheiten können die Einrichtungs-ID n, die mit dem PMA-Ausführungselement 112A, 112B verbunden ist, eine PMON-ID für die angefragte Ereignisart und den Grund des Versagens enthalte.
  • In einer Ausführungsform kann die PMA-Ausführungselement-Logikschaltung 128A,128B eine Initialisierungsanweisung gemeinsam mit Konfigurationsdaten enthalten, um das PMA-Ausführungselement 112A, 112B einzurichten, Leistungsdaten in Bezug auf eine Ereignisart zu sammeln. Zum Beispiel kann die angefragte Ereignisart L1 Cache-Fehlschläge in Verbindung mit einer Cache Steuerung sein. Die PMA-Ausführungselement-Logikschaltung 128A,128B kann den PMON-Ereignisdetektor 126A, 126B initialisieren, um Cache-Snoop-Nachrichten zu überwachen, um L1-Fehlschläge zu detektieren. In Antwort auf ein Detektieren eines L1-Fehlschlags, kann der PMON-Ereignisdetektor 126A, 126B die PMA-Ausführungselement-Logikschaltung 128A,128B über das Auftreten des L1-Fehlschlagereignisses informieren.
  • Die PMA-Ausführungselement-Logikschaltung 128A,128B kann programmiert sein, das Auftreten von L1-Fehlschlägen unter Verwendung von Zählern zu sammeln. In einer Ausführungsform kann die PMA-Ausführungselement-Logikschaltung 128A, 128B einen Zähler verwenden, um die Anzahl von L1-Fehlschlägen zu zählen. Die PMA-Ausführungselement-Logikschaltung 128A,128B kann ferner den Inhalt des Zählers in die entsprechende Speicherregion 132A, 132B schreiben. In einer Ausführungsform kann das Zurückschreiben in den Speicher erfolgen, wenn die PMA-Ausführungselement-Logikschaltung 128A,128B vom PMA-Koordinator 104 eine Anweisung empfängt, den Zähler zu deaktivieren. In einer anderen Ausführungsform kann die PMA-Ausführungselement-Logikschaltung 128A,128B gemäß einem Plan, der durch den PMA-Koordinator 104 vorgesehen ist, in den Speicher zurückschreiben.
  • 3 zeigt ein ausführliches PMA-Ausführungselement 300 gemäß einer Ausführungsform der vorliegenden Offenbarung. Wie in 3 dargestellt, kann das PMA-Ausführungselement 300 kommunikativ an einen Speicher 304 gekoppelt sein, der Speicher 200 ähnlich ist, wie in 2 dargestellt, enthaltend einen PMON-Konfigurationsdatenbereich 304 und PMON-Bereich für gesammelte Daten 306. Das PMA-Ausführungselement 300 kann Register 308 zum Speichern von Konfigurationsdaten der PMA-Ausführungselement-Logikschaltung, eine Ausführungselementlogik 310 zum Bewegen von Leistungsdaten von Zählern zum Speicher, einen Ereignisdetektor 312 zum Detektieren einer Art von Ereignissen und Erhöhen von Zählern, und Zähler 314 zum Aufzeichnen des Auftretens gewisser Ereignisarten enthalten.
  • In einer Ausführungsform kann das PMA-Ausführungselement 300 eine Anzahl von Hardware-Zählern 314 enthalten. Jeder der Zähler 314 kann (durch den PMA-Koordinator) einer Aufzeichnung des Auftretens einer besonderen Ereignisart zugewiesen sein, das durch den Ereignisdetektor 312 erfasst wird. Zum Beispiel kann ein erster Zähler der Aufzeichnung von L1-Fehlschlägen zugewiesen sein und ein zweiter Zähler der Aufzeichnung von L2-Fehlschlägen zugewiesen sein. Das Ausführungselement 310 kann eine Schaltung enthalten, die Steuerlogik implementiert, um eine Leistungsdatensammlung gemäß dem Plan durchzuführen, der vom PMA-Koordinator empfangen wird. Daher kann die Ausführungselementlogik 310 vom PMA-Koordinator eine Konfigurationsanweisung empfangen, die einen Plan enthält, um Leistungsdaten von Zählern zum Speicher und den Speicherstellen zum Speichern der Leistungsdaten zu überführen. Die Ausführungselementlogik 310 kann den Plan und die Speicherstellen in Registern 308 speichern. In einer Ausführungsform kann die Konfigurationsanweisung Konfigurationsdaten enthalten, wie zum Beispiel einen Plan, Zählerwerte zu sammeln, ob der Zählerwert aggregiert werden sollte oder nicht, wo im Speicherraum (z.B. einem physischen Speicheradressenbereich) der Zählerwert zu speichern ist und ob Hilfsdaten (z.B. Anweisungspointer) gemeinsam mit den Ereignisarten erfasst werden sollen. Falls die Anweisungspointer gemeinsam mit den Zählerwerten erfasst werden sollen, kann die Ausführungselementlogik 310 die Anweisungspointer erfassen und direkt in den Speicher schreiben.
  • Nachdem das PMA-Ausführungselement 300 auf Basis der Konfigurationsdaten programmiert wurde, die in Registern 308 gespeichert sind, kann die Steuerlogik der Ausführungselementlogik 310 eine Startanweisung vom PMA-Koordinator empfangen, um mit dem Sammeln von Leistungsdaten in Zählern 314 zu beginnen und die gesammelten Zählerwerte von Zählern 314 zum Speicher 302 zu überführen. Die Ausführungselementlogik 310 kann Operationen in Antwort auf einen Empfang einer Stoppanweisung vom PMA-Koordinator stoppen.
  • In einer Ausführungsform kann die Ausführungselementlogik 310 in einem Aggregationsmodus arbeiten, der durch den PMA-Koordinator angewiesen wird. Im Aggregationsmodus kann die Ausführungselementlogik 310 gewisse statistische Werte auf Basis der Zählerwerte berechnen, die im Zähler angesammelt wurden, und die statistischen Werte in den Speicher 302 schreiben. Zum Beispiel kann ein Aggregationsmodus zum Beispiel, „Sammeln von L2-Fehlschlägen pro 1000 Anweisungen“ oder „Schreiben in den Speicher, falls L1-Fehlschläge mehr als fünf pro 1000 Anweisungen sind“, sein. Die Ausführungselementlogik 310 kann programmiert sein Teilzustände zu enthalten, um Zwischensummen zu enthalten (z.B. L2-Fehlschläge pro 1000 Anweisungen) und eine Überführung der in Zählern 314 gespeicherten Zählerwerte zum Speicher 302 zu veranlassen, wenn der Schwellenwert erreicht ist. Der Aggregationsmodus der Ausführungselementlogik 310 sieht einen flexiblen Kompromiss zwischen verwendetem Speicherraum zum Speichern von Leistungsdaten und der Genauigkeit (d.h. Feinheit der Daten Abtastrate) der gesammelten Leistungsdaten vor.
  • In einer Ausführungsform kann die Ausführungselementlogik 310 auch Daten von logischen Zählern sammeln, die durch Software-Anwendungen verwendet werden, die auf einem Verarbeitungskern laufen, und/oder die von diesen logischen Zählern gesammelten Daten aggregieren. Zum Beispiel kann das PMA-Ausführungselement 300 (als Teil eines Prozessor oder über eine Verbindung) die Leistung des Verarbeitungskerns überwachen und Zugang zu den logischen Zählern haben, die durch Software-Anwendungen verwendet werden, die auf dem Verarbeitungskern laufen. Software-Anwendungen können ein Profil eines synthetischen Ereignisses berechnen (eines Ereignisses, das nicht durch Hardware generiert wird, sondern in Software-Programmen definiert ist). Ein synthetisches Ereignis kann durch den Ereignisdetektor 312 nicht detektiert werden. Zum Beispiel kann die synthetische Ereignisart „Last-Level Cache (LLC)-Fehlschläge pro Ringschalter zwischen einem ersten Ring und einem zweiten Ring“ sein. In diesem Fall kann das Auftreten des Ringschalters eine Aktualisierung in einem logischen Zähler auslösen und die Software-Anwendung kann die Ausführungselementlogik 310 anweisen, Zählerwerte des logischen Zählers als ein Hardware-Ereigniszähler (z.B. Zähler 314) zu sammeln.
  • In einer Ausführungsform kann die Ausführungselementlogik 310 auch Ausrichtungsmarker (z.B. Zeitstempeln) einsetzen, wenn sie Zählerwerte in den Speicher schreibt (z.B. wie in 2 dargestellt). Die Ausrichtungsmarker können Software-Anwendungen ermöglichen, die Zählerwerte, die im Speicher 304 gespeichert sind, zu identifizieren, auf diese zuzugreifen und diese zu analysieren. Daher können die Leistungsdaten, die im PMON-Bereich für gesammelte Daten 306 gespeichert sind, sowohl in ereignis- und wie auch zeitausgerichteten Aufzeichnungen gespeichert werden.
  • In einer Ausführungsform kann die Ausführungselementlogik 310 Filterschaltungen enthalten, die selektiv Leistungsdaten (enthaltend Zählerwerte und zugehörige Hilfsdaten) auf der Basis gewisser Parameter aufzeichnen können. Zum Beispiel kann die Ausführungselementlogik 310 Durchführungsdaten für Ereignisarten aufzeichnen, die sich auf einen Sektor physischer Speicheradressen, Anweisungspointer oder virtuelle Maschinen (identifiziert durch virtuelle Maschinenkennungen) usw. beziehen. Daher können Software-Anwendungen, die auf dem Verarbeitungskern laufen, die Hardware- und Software-Komponenten genau bestimmen, deren Leistungsdaten gesammelt werden.
  • In einer Ausführungsform kann die Ausführungselementlogik 310 auch programmiert sein, einen Trap zu ermitteln und einen Rückruf zu den Software-Anwendungen zu generieren, die auf dem Verarbeitungskern laufen. Der Trap kann die Form eines Unterbrechungssignals vom PMA-Ausführungselement zum Verarbeitungskern aufweisen, der die Software-Anwendung ausführt. Der ermittelte Trap kann die Software-Anwendung veranlassen, Kontext zu wechseln (z.B. das PMA-Ausführungselement erneut zu initiieren). Zum Beispiel kann das Ausführungselement 310 in Antwort auf ein Erfassen, dass der Trap ausgelöst ist, eine Unterbrechung auf Benutzerebene als Rückruf zu Software-Anwendungen senden, um die Auslösung einer erneuten Initiierung bekanntzugeben. In einer alternativen Ausführungsform kann der Rückruf ein virtueller sein. Zum Beispiel kann das Ausführungselement 310 in eine Speicherstelle oder ein Vektorregister schreiben, um die Auslösung anzugeben. Software-Anwendungen können die Speicherstelle oder das Vektorregister abfragen, um die Auslösung eines Rückrufs zu erfassen.
  • Da die Leistungsdaten in Speicherregionen geschrieben werden, die jedem PMA-Ausführungselement in Segmenten (mit Versätzen) zugewiesen sind, die unterschiedlichen Ereignissen mit Zeitstempeln zugewiesen sind, werden die im Speicher 304 gespeicherten Leistungsdaten mit den Ereignissen ausgerichtet, die bei PMA-Ausführungselementen aufgetreten sind. Software-Anwendungen können die ausgerichteten Leistungsdaten, die im Speicher gespeichert sind, direkt auf ihren Benutzerraum abbilden, ohne dass die Software-Anwendung die Leistungsdaten unter Verwendung der Zähler und des Unterbrechungsmechanismus erfassen muss.
  • In einer Ausführungsform ist der PMA-Koordinator 104 Teil von Prozessor 102A. In einer anderen Ausführungsform ist der PMA-Koordinator 104 eine unabhängige Hardware-Einrichtung, die mit Verbindung 108 verbunden ist und mit Prozessor 102A über ein Verbindungskommunikationsprotokoll kommuniziert.
  • 4 ist ein Ablaufdiagramm eines Verfahrens zum Betreiben eines Verarbeitungssystems gemäß einer Ausführungsform der Offenbarung. Das Verfahren 400 kann durch eine Verarbeitungslogik durchgeführt werden, die Hardware (z.B. Schaltkreis, dedizierte Logik, programmierbare Logik, Mikrocode, usw.), Software (wie Anweisungen, die auf einem Verarbeitungssystem, einem Allzweck-Computersystem, oder einer dedizierten Maschine laufen), Firmware oder eine Kombination davon enthalten kann. In einer Ausführungsform kann das Verfahren 400 teilweise durch Verarbeitungslogiken einer der IC-Funktionseinheiten 102A, 102B und des PMA-Koordinators 104, wie in Bezug auf 1 beschrieben, durchgeführt werden.
  • Der einfachen Erklärung wegen ist das Verfahren 400 als eine Reihe von Vorgängen beschrieben. Vorgänge gemäß dieser Offenbarung können jedoch in unterschiedlichen Reihenfolgen und/oder gleichzeitig und mit anderen hier nicht präsentierten und beschriebenen Vorgängen stattfinden. Überdies können nicht alle dargestellten Vorgänge zum Implementieren des Verfahrens 400 gemäß dem offenbarten Gegenstand durchgeführt werden. Zusätzlich werden Fachleute verstehen und erkennen, dass das Verfahren 400 alternativ als eine Reihe von miteinander in Zusammenhang stehenden Zuständen durch ein Zustandsdiagramm oder Ereignisse präsentiert werden könnte.
  • Unter Bezugnahme auf 4 kann bei 402 ein PMA-Koordinator, der kommunikativ an einen Verarbeitungskern gekoppelt ist, vom Verarbeitungskern eine Anfrage empfangen, ein Ereignis zu überwachen, das mit einer Einrichtung des Verarbeitungssystems verknüpft ist, wobei die Anfrage eine erste Kennung zum Identifizieren des Ereignisses und eine zweite Kennung zum Identifizieren der Einrichtung umfasst.
  • Bei 404 kann der PMA-Koordinator eine Speicheradresse eines Speichers auf Basis der ersten Kennung und der zweiten Kennung bestimmen.
  • Bei 406 kann der PMA-Koordinator eine Anweisung zu einem PMA-Ausführungselement senden, das mit der Einrichtung verknüpft ist, um das PMA-Ausführungselement zu veranlassen, Informationen bezüglich der Ereignisart zu sammeln und die Informationen in einer Aufzeichnung zu speichern, die bei der Speicheradresse des Speichers beginnt.
  • 5A ist ein Blockdiagramm, das eine Mikroarchitektur für einen Prozessor 500 zeigt, der die Verarbeitungseinrichtung, die heterogene Kerne enthält, gemäß einer Ausführungsform der Offenbarung implementiert. Im Speziellen zeigt Prozessor 500 einen Architekturkern nach Programmreihenfolge und eine Registerumbenennungslogik, nicht nach Programmreihenfolge Ausgabe/Ausführungs-Logik, die in einem Prozessor gemäß zumindest einer Ausführungsform der Offenbarung enthalten sein sollen.
  • Der Prozessor 500 enthält eine Frontend-Einheit 530, die an eine Ausführungs-Engine-Einheit 550 gekoppelt ist, und beide sind an eine Speichereinheit 570 gekoppelt. Der Prozessor 500 kann einen Reduced Instruction Set Computing (RISC) Kern, einen Complex Instruction Set Computing (CISC) Kern, einen Very Long Instruction Word (VLIW) Kern oder eine Art von hybridem oder alternativem Kern enthalten. Als weitere Option kann der Prozessor 500 einen Spezialzweck-Kern, wie zum Beispiel einen Netzwerk- oder Kommunikationskern, eine Kompressions-Engine, eine Grafikkern oder dergleichen enthalten. In einer Ausführungsform kann der Prozessor 500 ein Mehrfachkernprozessor oder kann Teil eines Mehrfachprozessorsystems sein.
  • Die Frontend-Einheit 530 enthält eine Abzweigungsvorhersageeinheit 532, die an eine Anweisungs-Cache-Einheit 534 gekoppelt ist, die an einen Anweisungsübersetzungszwischenspeicher (TLB) 536 gekoppelt ist, der an eine Anweisungsabrufeinheit 538 gekoppelt ist, die an eine Decodiereinheit 540 gekoppelt ist. Die Decodiereinheit 540 (auch als Decodierer bekannt) kann Anweisungen decodieren und als Ausgang eine oder mehr Mikrooperationen, Mikrocodeeingangspunkte, Mikroanweisungen, andere Anweisungen oder andere Steuersignale generieren, die aus den ursprünglichen Anweisungen decodiert werden, diese auf andere Weise widerspiegeln oder von diesen abgeleitet sind. Der Decodierer 540 kann unter Verwendung verschiedener unterschiedlicher Mechanismen implementiert werden. Beispiele für geeignete Mechanismen enthalten, ohne aber darauf beschränkt zu sein, Verweistabellen, Hardware-Implementierungen, programmierbare Logik-Arrays (PLAs), Mikrocode-Nur-Lese-Speicher (ROMs), usw. Die Anweisungs-Cache-Einheit 534 ist ferner an die Speichereinheit 570 gekoppelt. Die Decodiereinheit 540 ist an eine Umbenennungs-/Zuordnungseinheit 552 in der Ausführungs-Engine-Einheit 550 gekoppelt.
  • Die Ausführungs-Engine-Einheit 550 enthält die Umbenennungs-/Zuordnungseinheit 552, die an eine Stilllegungseinheit 554 gekoppelt ist und einen Satz von einer oder mehreren Planereinheit(en) 556. Die Planereinheit(en) 556 stellen eine beliebige Anzahl unterschiedlicher Planer dar, enthaltend Reservierungsstationen (RS), zentrales Anweisungsfenster, usw. Die Planereinheit(en) 556 sind an die physischen Registerdatei(en)einheit(en) 558 gekoppelt. Jede der physischen Registerdatei(en)einheit(en) 558 stellt eine oder mehrere physische Registerdateien dar, von welchen unterschiedliche eine oder mehrere unterschiedliche Datentypen speichern, wie skalare ganze Zahlen, skalares Gleitkomma, gepackte ganze Zahl, gepacktes Gleitkomma, ganze Vektorzahl, Vektorgleitkomma, usw., Status (z.B. ein Anweisungspointer, der die Adresse der nächsten auszuführenden Anweisung ist), usw. Die physischen Registerdatei(en)einheit(en) 558 sind durch die Stilllegungseinheit 554 überlappt, um verschiedene Möglichkeiten zu zeigen, in welchen Registerumbenennung und eine Ausführung nicht nach Programmreihenfolge implementiert werden können (z.B. unter Verwendung eines oder mehrerer Neuordnungszwischenspeicher(s) und einer oder mehrerer Stilllegungsregisterdatei(en), unter Verwendung einer oder mehrerer Zukunftsdatei(en), eines oder mehrerer Verlaufszwischenspeicher(s) und einer oder mehrerer Stilllegungsregisterdatei(en); unter Verwendung von Registerkarten und eines Pools von Registern; usw.).
  • Im Allgemeinen, sind die architektonischen Register von außerhalb des Prozessors oder aus einer Perspektive eines Programmierers sichtbar. Die Register sind nicht auf eine bekannte besondere Art von Schaltung beschränkt. Es sind verschiedene unterschiedliche Arten von Registern geeignet, solange sie imstande sind, Daten wie hier beschrieben zu speichern und vorzusehen. Beispiele für geeignete Register enthalten, ohne aber darauf beschränkt zu sein, dedizierte physische Register, dynamisch zugeordnete physische Register unter Verwendung einer Registerumbenennung, Kombinationen von dedizierten und dynamisch zugeordneten physischen Registern, usw. Die Stilllegungseinheit 554 und die physischen Registerdatei(en)einheit(en) 558 sind an den (die) Ausführungscluster 560 gekoppelt. Der (die) Ausführungscluster 560 enthält (enthalten) einen Satz aus einer oder mehreren Ausführungseinheiten 562 und einen Satz aus einer oder mehreren Speicherzugangseinheiten 564. Die Ausführungseinheiten 562 können verschiedene Operationen durchführen (z.B. Verschiebungen, Addition, Subtraktion, Multiplikation) und verschiedene Arten von Daten (z.B. skalares Gleitkomma, gepackte ganze Zahl, gepacktes Gleitkomma, ganze Vektorzahl, Vektorgleitkomma) bearbeiten.
  • Während einige Ausführungsformen eine Anzahl von Ausführungseinheiten enthalten können, die spezifischen Funktionen oder Sätzen von Funktionen zugeordnet sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten enthalten, die jeweils alle Funktionen durchführen. Die Planereinheit(en) 556, physischen Registerdatei(en)einheit(en) 558 und Ausführungscluster 560 sind als möglicherweise in der Mehrzahl dargestellt, da gewisse Ausführungsformen separate Pipelines für gewisse Arten von Daten/Operationen schaffen (z.B. eine skalare ganze Zahl-Pipeline, eine skalares Gleitkomma/gepackte ganze Zahl/gepacktes Gleitkomma/ganze Vektorzahl/Vektorgleitkomma-Pipeline und/oder eine Speicherzugangs-Pipeline, die jeweils ihre eigene Planereinheit, physische Registerdatei(en)einheit und/oder eigenen Ausführungscluster haben - und im Fall einer separaten Speicherzugangs-Pipeline sind gewisse Ausführungsformen implementiert, in welchen nur der Ausführungscluster dieser Pipeline die Speicherzugangseinheit(en) 564 hat). Es sollte klar sein, dass, wenn separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines eine Ausgabe/Ausführung nicht nach Programmreihenfolge haben können und der Rest nach Programmreihenfolge.
  • Der Satz von Speicherzugangseinheiten 564 ist an die Speichereinheit 570 gekoppelt, die einen Daten-Prefetcher 580, eine Daten-TLB-Einheit 572, eine Daten-Cache-Einheit (DCU) 574, und eine Level 2 (L2) Cache-Einheit 576 aufweisen kann, um nur einige Beispiele zu nennen. In einigen Ausführungsformen ist die DCU 574 auch als ein Daten-Cache erster Ebene (L1 Cache) bekannt. Die DCU 574 kann mehrerer herausragende Cache-Fehlschläge bearbeiten und mit der Bedienung eingehender Speicherungen und Ladungen fortfahren. Sie unterstützt auch die Aufrechterhaltung einer Cache-Kohärenz. Die Daten-TLB-Einheit 572 ist ein Cache, der zur Verbesserung einer Übersetzungsgeschwindigkeit virtueller Adressen durch Abbilden virtueller und physischer Adressenräume verwendet wird. In einer beispielhaften Ausführungsform können die Speicherzugangseinheiten 564 eine Ladeeinheit, eine Speicheradresseneinheit und eine Speicherdateneinheit enthalten, von welchen jede an die Daten-TLB-Einheit 572 in der Speichereinheit 570 gekoppelt ist. Die L2 Cache-Einheit 576 kann an eine oder mehrere andere Cache-Ebenen und schließlich an einen Hauptspeicher gekoppelt sein.
  • In einer Ausführungsform lädt der Daten-Prefetcher 580 durch automatisches Vorhersagen, welche Daten ein Programm im Begriff ist zu verbrauchen, spekulativ Daten in die DCU 574 bzw. ruft diese vorab ab. Prefeteching kann sich auf ein Überführen von Daten, die in einer Speicherstelle einer Speicherhierarchie gespeichert sind (z.B. Caches niedrigerer Ebene oder Speicher), auf eine Speicherstelle höherer Ebene, die näher beim Prozessor liegt (z.B. geringere Zugangslatenz bedingt), beziehen, bevor die Daten tatsächlich vom Prozessor verlangt werden. Im Speziellen kann sich Prefetching auf das frühe Abrufe von Daten aus einem der Caches/Speicher niedrigerer Ebene zu einem Daten-Cache und/oder Prefetch-Zwischenspeicher beziehen, bevor der Prozessor einen Befehl ausgibt, dass die spezifischen Daten zurückgesendet werden.
  • Der Prozessor 500 kann einen oder mehrere Anweisungssätze (z.B. den x86 Anweisungssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden) unterstützen; den MIPS-Anweisungssatz von MIPS Technologies, Sunnyvale, CA; den ARM-Anweisungssatz (mit optionalen zusätzlichen Erweiterungen wie NEON) von ARM Holdings, Sunnyvale, CA).
  • Es sollte klar sein, dass der Kern Multithreading (das zwei oder mehr parallele Sätze von Operationen oder Threads ausführt) unterstützen kann und dies auf zahlreiche Weisen machen kann, enthaltend eine Multithreading in Zeitintervallen, ein gleichzeitiges Multithreading (wo ein einzelner physischer Kern einen logischen Kern für jeden der Threads vorsieht, für die der physische Kern gleichzeitig Multithreading betreibt) oder eine Kombination davon (z.B. Fetching in Zeitintervallen und Decodieren und gleichzeitiges Multithreading danach, wie in der Intel® Hyperthreading Technologie).
  • Während eine Registerumbenennung im Zusammenhang mit einer Ausführung nicht nach Programmreihenfolge beschrieben ist, sollte klar sein, dass eine Registerumbenennung in einer Architektur nach Programmreihenfolge verwendet werden kann. Während die dargestellte Ausführungsform des Prozessors auch separate Anweisungs- und Daten-Cache-Einheiten und eine gemeinsame L2 Cache-Einheit enthält, können alternative Ausführungsformen einen einzelnen internen Cache sowohl für Anweisungen wie auch Daten haben, wie zum Beispiel einen internen Level 1 (L1) Cache oder mehrere Ebenen von internem Cache. In einigen Ausführungsformen kann das System eine Kombination aus einem internen Cache und einem externen Cache enthalten, die extern zum Kern und/oder zum Prozessor ist. Alternativ kann der gesamte Cache extern zum Kern und/oder zum Prozessor sein.
  • 5B ist ein Blockdiagramm, das eine geordnete Pipeline und eine Registerumbenennungsstufen-, Ausgabe-/Ausführungs-Pipeline nicht nach Programmreihenfolge, die durch Verarbeitungseinrichtung 500 von 5A implementiert ist, gemäß einigen Ausführungsformen der Offenbarung zeigt. Die Kästchen in Volllinie in 5B zeigen eine geordnete Pipeline, während die Kästchen in gestrichelter Linie eine Registerumbenennungs-, Ausgabe-/Ausführungs-Pipeline nicht nach Programmreihenfolge zeigen. In 5B enthält eine Prozessor Pipeline 500 eine Fetch-Stufe 502, eine Längendecodierstufe 504, eine Decodierstufe 506, eine Zuordnungsstufe 508, eine Umbenennungsstufe 510, eine Planungsstufe (auch als Versand- oder Ausgabestufe bekannt) 512, eine Register-Lese/Speicher-Stufe 514, eine Ausführungsstufe 516, eine Rückschreib-/Speicherschreibstufe 518, eine Ausnahmenbearbeitungsstufe 522 und eine Commit-Stufe 524. In einigen Ausführungsformen kann die Reihenfolge von Stufen 502-524 anders als in der Darstellung sein und ist nicht auf die spezielle Reihenfolge beschränkt, die in 5B dargestellt ist.
  • 6 zeigt ein Blockdiagramm der Mikroarchitektur für einen Prozessor 600 gemäß einer Ausführungsform der Offenbarung. In einigen Ausführungsformen kann eine Anweisung gemäß einer Ausführungsform implementiert werden, um Datenelemente mit Byte-, Wort-, Doppelwort, Vierfachwort- usw. Größen wie auch Datentypen, wie Einzel- und Doppelpräzisionsdatentypen einer ganzen Zahl und eines Gleitkommas, zu bearbeiten. In einer Ausführungsform ist das Frontend 601 nach Programmreihenfolge Teil des Prozessors 600, der auszuführende Anweisungen abruft und sie zur späteren Verwendung in der Prozessor-Pipeline aufbereitet.
  • Das Frontend 601 kann mehrere Einheiten enthalten. In einer Ausführungsform ruft der Anweisungs-Prefetcher 626 Anweisungen vom Speicher ab und leitet sie zu einem Anweisungsdecodierer 628, der sie seinerseits decodiert oder interpretiert. Zum Beispiel decodiert der Decodierer in einer Ausführungsform eine empfangene Anweisung in eine oder mehrere Operationen, die als „Mikroanweisungen“ oder „Mikrooperationen“ bezeichnet werden (auch Mikro-op oder Uops genannt), die die Maschine ausführen kann. In anderen Ausführungsformen zerlegt der Decodierer die Anweisung in einen Opcode und entsprechende Daten und Steuerfelder, die von der Mikroarchitektur zur Durchführung von Operationen gemäß einer Ausführungsform verwendet werden. In einer Ausführungsform nimmt der Trace-Cache 630 decodierte Uops und fügt sie in programmgereihte Sequenzen oder Traces in der Uop-Warteschlange 634 zur Ausführung ein. Wenn der Trace-Cache 630 auf eine komplexe Anweisung trifft, sieht der Mikrocode-ROM 632 die Uops vor, die zur Vollendung der Operation erforderlich sind.
  • Einige Anweisungen werden in eine einzelne Mikroop konvertiert, wohingegen andere mehrere Mikroops benötigen, um die vollständige Operation zu vollenden. In einer Ausführungsform, falls mehr als vier Mikroops notwendig sind, um eine Anweisung zu beenden, greift der Decodierer 628 auf den Mikrocode-ROM 632 zur Ausführung der Anweisung zu. Für eine Ausführungsform kann eine Anweisung in eine kleine Anzahl von Mikro-ops zur Verarbeitung beim Anweisungsdecodierer 628 decodiert werden. In einer anderen Ausführungsform kann eine Anweisung im Mikrocode-ROM 632 gespeichert werden, sollte eine Anzahl von Mikroops zur Ausführung der Operation erforderlich sein. Der Trace-Cache 630 bezieht sich auf ein programmierbares Eintragungspunkt-Logik Array (PLA) zum Bestimmen eines korrekten Mikroanweisungspointers zum Lesen der Mikrocodesequenzen, um eine oder mehrere Anweisungen gemäß einer Ausführungsform aus dem Mikrocode-ROM 632 zu lesen. Sobald der Mikrocode-ROM 632 eine Sequenzierung von Mikroops für eine Anweisung beendet hat. nimmt das Frontend 601 der Maschine wieder ein Abrufen von Mikroops aus dem Trace-Cache 630 auf.
  • Die nicht nach Programmreihenfolge laufende Ausführungs-Engine 603 ist, wo die die Anweisungen zur Ausführung vorbereitet werden. Die nicht nach Programmreihenfolge laufende Ausführungslogik hat eine Anzahl von Zwischenspeichern, um den Fluss von Anweisungen zu glätten und neu zu ordnen, um Leistung zu optimieren, während sie die Pipeline hinunterlaufen und zur Ausführung geplant werden. Die Zuordnerlogik ordnet die Maschinenzwischenspeicher und Ressourcen zu, die jede Uop zur Ausführung benötigt. Die Registerumbenennungslogik benennt Logikregister auf Einträgen in einer Registerdatei um. Das Zuordnungselement ordnet auch einen Eintrag für jede Uop in einer der zwei Uop-Warteschlangen, eine für Speicheroperationen und eine für Nicht-Speicher Operationen, vor dem Anweisungsplaner zu: Speicherplaner, schneller Planer 602, langsamer/allgemeiner Gleitkommaplaner 604 und einfacher Gleitkommaplaner 606. Die Uop-Planer 602, 604, 606 bestimmen auf Basis der Bereitschaft ihrer abhängigen Eingangsregister-Operandenquellen und der Verfügbarkeit der Ausführungsressourcen, die Uops zur Beendigung ihrer Operation benötigen, wann eine Uop zur Ausführung bereit ist. Der schnelle Planer 602 einer Ausführungsform kann jeden halben Haupttaktzyklus planen, während die anderen Planer nur einmal pro Hauptprozessortaktzyklus planen können. Die Planer vermitteln für die Versandports, Uops zur Ausführung zu planen.
  • Registerdateien 608, 610, sitzen zwischen den Planern 602, 604, 606 und den Ausführungseinheiten 612, 614, 616, 618, 620, 622, 624 im Ausführungsblock 611. Es gibt eine separate Registerdatei 608, 610 für Ganzzahl- bzw. Gleitkommaoperationen. Jede Registerdatei 608, 610 einer Ausführungsform enthält auch ein Umgehungsnetzwerk, das soeben fertiggestellte Ergebnisse, die noch nicht in die Registerdatei geschrieben wurden, umgehen oder zu neuen abhängigen Uops weiterleiten kann. Die Ganzzahlregisterdatei 608 und die Gleitkommaregisterdatei 610 sind auch imstande, Daten mit der andere zu kommunizieren. Für eine Ausführungsform ist die Ganzzahlregisterdatei 608 in zwei separate Registerdateien geteilt, eine Registerdatei für die niederwertigen 32 Bits von Daten und eine zweite Registerdatei für die hochwertigen 32 Bits von Daten. Die Gleitkommaregisterdatei 610 einer Ausführungsform hat 128 Bit breite Einträge, da Gleitkommaanweisungen typischerweise Operanden haben, die 64 bis 128 Bits breit sind.
  • Der Ausführungsblock 611 beinhaltet die Ausführungseinheiten 612, 614, 616, 618, 620, 622, 624, wo die Anweisungen tatsächlich ausgeführt werden. Dieser Sektor enthält die Registerdateien 608, 610, die die Ganzzahl- und Gleitkommadaten-Operandenwerte speichern, die die Mikroanweisungen zur Ausführung benötigen. Der Prozessor 600 einer Ausführungsform besteht aus einer Anzahl von Ausführungseinheiten: Adressengenerationseinheit (AGU) 612, AGU 614, schnelle ALU 616, schnelle ALU 618, langsame ALU 620, Gleitkomma ALU 622, Gleitkommabewegungseinheit 624. Für eine Ausführungsform führen die Gleitkomma-Ausführungsblöcke 622, 624 Gleitkomma-, MMX, SIMD- und SSE- oder andere Operationen durch. Die Gleitkomma-ALU 622 einer Ausführungsform enthält einen 64 Bit mal 64 Bit Gleitkommateiler zur Ausführung von Divisions-, Quadratwurzel- und Rest-Mikroops. Für Ausführungsformen der vorliegenden Offenbarung können Anweisungen, die einen Gleitkommawert beinhalten, mit der Gleitkomma-Hardware gehandhabt werden.
  • In einer Ausführungsform gehen die ALU Operationen zu den Hochgeschwindigkeits-ALU-Ausführungseinheiten 616, 618. Die schnellen ALUs 616, 618 einer Ausführungsform können schnelle Operationen mit einer effektiven Latenz eines halben Taktzyklus ausführen. Für eine Ausführungsform gehen die komplexesten Ganzzahloperationen zur langsamen ALU 620, da die langsame ALU 620 Ganzzahlausführungs-Hardware für einen langen Latenztyp von Operationen, wie eine Multiplikations-, Verschiebungs-, Flag-Logik- und Abzweigungsverarbeitung, enthält. Speicherlade-/Speicheroperationen werden durch die AGUs 612, 614 ausgeführt. Für eine Ausführungsform sind die Ganzzahl-ALUs 616, 618, 620 im Zusammenhang mit einer Durchführung von Ganzzahloperationen an 64 Bit Datenoperanden beschrieben. In alternativen Ausführungsformen können die ALUs 616, 618, 620 implementiert werden, um eine Reihe von Datenbits zu unterstützen, enthaltend 16, 32, 128, 256, usw. Ebenso können die Gleitkommaeinheiten 622, 624 implementiert sein, um einen Bereich von Operanden mit Bits unterschiedlicher Breiten zu unterstützen. Für eine Ausführungsform können die Gleitkommaeinheiten 622, 624 128 Bits breite gepackte Datenoperanden in Verbindung mit SIMD und Multimedia-Anweisungen bearbeiten.
  • In einer Ausführungsform versenden die Uops-Planer 602, 604, 606 abhängige Operationen, bevor die Stammlast mit der Ausführung fertig ist. Da Uops im Prozessor 600 spekulativ geplant und ausgeführt werden, enthält der Prozessor 600 auch Logik zur Bearbeitung von Speicherfehlschlägen. Falls eine Datenladung im Daten-Cache fehlschlägt, können abhängige Operationen in der Pipeline laufen, die den Planer mit temporär falschen Daten zurücklassen. Ein Wiederholungsmechanismus verfolgt Anweisungen und führt diese erneut aus, die falsche Daten verwenden. Nur die abhängigen Operationen müssen wiederholt werden und die unabhängigen können fertiggestellt werden. Der Planer und Wiederholungsmechanismus einer Ausführungsform eines Prozessor sind auch bestimmt, Anweisungssequenzen für Textstring-Vergleichsoperationen zwischenzuspeichern.
  • Der Prozessor 600 enthält auch Logik zum Implementieren einer Speicheradressenvorhersage für eine Speicher-Disambiguation gemäß Ausführungsformen der Offenbarung. In einer Ausführungsform kann der Ausführungsblock 611 von Prozessor 600 ein Speicheradressenvorhersageelement (nicht dargestellt) zur Implementierung einer Speicheradressenvorhersage zur Speicher-Disambiguation enthalten.
  • Der Begriff „Register“ kann sich auf die bordeigenen Prozessorspeicherstellen beziehen, die als Teil von Anweisungen zur Identifizierung von Operanden verwendet werden. Mit anderen Worten, Register können jene sein, die von außerhalb des Prozessors (aus Perspektive eines Programmierers) benutzbar sind. Die Register einer Ausführungsform sollten jedoch nicht in der Bedeutung auf eine bestimmte Art von Schaltung beschränkt sein. Vielmehr ist ein Register einer Ausführungsform imstande, Daten zu speichern und bereitzustellen und die hier beschriebenen Funktionen durchzuführen. Die hier beschriebenen Register können durch einen Schaltkreis innerhalb eines Prozessors unter Verwendung einer Anzahl unterschiedlicher Techniken implementiert werden, wie dedizierte physische Register, dynamisch zugeordnete physische Register unter Verwendung einer Registerumbenennung, Kombinationen aus dedizierten und dynamisch zugeordneten physischen Registern, usw. In einer Ausführungsform speichern Ganzzahlregister zweiunddreißig Bit Ganzzahldaten. Eine Registerdatei einer Ausführungsform beinhaltet auch acht Multimedia-SIMD-Register für gepackte Daten.
  • Für die folgenden Diskussionen sind die Register als Datenregister zu verstehen, die zum Halten gepackter Daten gestaltet sind, wie 64 Bits breite MMXTM-Register (in einigen Fällen auch als ‚mm‘-Register bezeichnet) in Mikroprozessoren, die mit MMX-Technologie von Intel Corporation, Santa Clara, Kalifornien, aktiviert sein. Diese MMX-Register, die sowohl in Ganzzahl- wie auch Gleitkommaform erhältlich sind, können mit gepackten Datenelementen arbeiten, die SIMD- und SSE-Anweisungen enthalten. Ebenso können 128 Bits breite XMM-Register, die sich auf SSE2, SSE3, SSE4 oder eine darüber hinaus gehende (allgemein als „SSEx“ bezeichnet) Technologie beziehen, auch zum Halten solcher gepackter Datenoperanden verwendet werden. In einer Ausführungsform müssen die Register beim Speichern gepackter Daten und Ganzzahldaten nicht zwischen den zwei Datenarten unterscheiden. In einer Ausführungsform sind Ganzzahl und Gleitkomma entweder in derselben Registerdatei oder in unterschiedlichen Registerdateien enthalten. Ferner können in einer Ausführungsform Gleitkomma- und Ganzzahldaten in unterschiedlichen Registern oder in denselben Registern gespeichert werden.
  • Unter Bezugnahme nun auf 7 ist ein Blockdiagramm dargestellt, das ein System 700 zeigt, in dem eine Ausführungsform der Offenbarung verwendet werden kann. Wie in 7 dargestellt, ist ein Multiprozessorsystem 700 ein Punkt-zu-Punkt-Verbindungssystem und enthält einen ersten Prozessor 770 und einen zweiten Prozessor 780, die über eine Punkt-zu-Punkt-Verbindung 750 gekoppelt sind. Während nur zwei Prozessoren 770, 780 dargestellt sind, ist klar, dass Ausführungsformen der Offenbarung nicht darauf beschränkt sind. In anderen Ausführungsformen können ein oder mehr zusätzliche Prozessoren in einem bestimmten Prozessor vorhanden sein.
  • Die Prozessoren 770 und 780 sind mit integrierten Speichersteuerungseinheiten 772 bzw. 782 dargestellt. Der Prozessor 770 enthält auch als Teil seiner Bussteuerungseinheiten Punkt-zu-Punkt-(P-P) Schnittstellen 776 und 778; ebenso enthält der zweite Prozessor 780 enthält P-P-Schnittstellen 786 und 788. Die Prozessoren 770, 780 können Informationen über eine Punkt-zu-Punkt- (P-P) Schnittstelle 750 unter Verwendung von P-P-Schnittstellenschaltungen 778, 788 austauschen. Wie in 7 dargestellt, koppeln IMCs 772 und 782 die Prozessoren an entsprechende Speicher, nämlich einen Speicher 732 und einen Speicher 734, die Abschnitte eines Hauptspeichers sein können, der lokal an die jeweiligen Prozessoren angehängt ist.
  • Die Prozessoren 770, 780 können jeweils Informationen mit einem Chipset 790 über einzelne P-P-Schnittstellen 752, 754 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 776, 794, 786, 798 austauschen. Der Chipset 790 kann auch Informationen mit einer Hochleistungsgrafikschaltung 738 über eine Hochleistungsgrafikschnittstelle 739 austauschen.
  • Ein gemeinsamer Cache (nicht dargestellt) kann entweder in einem Prozessor oder außerhalb beider Prozessoren, aber dennoch mit den Prozessoren über eine P-P-Verbindung verbunden, enthalten sein, sodass lokale Cache-Informationen des einen oder beider Prozessoren im gemeinsamen Cache gespeichert werden, falls ein Prozessor in einen Niederenergiemodus gestellt wird.
  • Der Chipset 790 kann über eine Schnittstelle 796 an einen ersten Bus 716 gekoppelt sein. In einer Ausführungsform kann der erste Bus 716 ein Peripheral Component Interconnect (PCI) Bus oder ein Bus wie ein PCI Express Bus oder ein anderer I/O-Verbindungsbus der dritten Generation sein, obwohl der Umfang der vorliegenden Offenbarung dahingehend nicht eingeschränkt ist.
  • Wie in 7 dargestellt, können verschiedene I/O-Einrichtungen 714 an den ersten Bus 716, gemeinsam mit einer Busbrücke 718 gekoppelt sein, die den ersten Bus 716 an einen zweitem Bus 720 koppelt. In einer Ausführungsform kann der zweite Bus 720 ein Bus mit niedriger Pinzahl (LPC) sein. Verschiedene Einrichtungen können in einer Ausführungsform an einen zweiten Bus 720 gekoppelt sein, enthaltend zum Beispiel eine Tastatur und/oder Maus 722, Kommunikationseinrichtungen 727 und eine Datenspeichereinheit 728 wie eine Festplattenlaufwerk oder eine andere Massenspeichereinrichtung, die Anweisungen/Code und Daten 730 enthalten kann. Ferner kann ein Audio-I/O 724 an einen zweiten Bus 720 gekoppelt sein. Es ist zu beachten, dass andere Architekturen möglich sind. Zum Beispiel kann anstelle der Punkt-zu-Punkt-Architektur von 7 ein System einen Multi-Drop-Bus oder eine andere derartige Architektur implementieren.
  • Unter Bezugnahme nun auf 8 ist ein Blockdiagramm eines Systems 800 dargestellt, in dem eine Ausführungsform der Offenbarung arbeiten kann. Das System 800 kann einen oder mehrere Prozessoren 810, 815 enthalten, die an einen Grafikspeichersteuerungs-Hub (GMCH) 820 gekoppelt sind. Die Option zusätzlicher Prozessoren 815 ist in 8 durch gebrochene Linien angegeben.
  • Jeder Prozessor 810, 815 kann eine Version der Schaltung, integrierten Schaltung, des Prozessors und/oder eine integrierten Siliziumschaltung, wie oben beschrieben, sein. Es sollte jedoch festgehalten werden, dass es unwahrscheinlich ist, dass integrierte Grafiklogik und integrierte Speichersteuerungseinheiten in den Prozessoren 810, 815 vorhanden wären. 8 zeigt, dass der GMCH 820 an einen Speicher 840 gekoppelt sein kann, der zum Beispiel ein dynamischer Direktzugriffsspeicher (DRAM) sein kann. Der DRAM kann, für zumindest eine Ausführungsform, mit einem nicht flüchtigen Cache verknüpft sein.
  • Der GMCH 820 kann ein Chipset oder ein Abschnitt eines Chipsets sein. Der GMCH 820 mit dem (den) Prozessor(en) 810, 815 kommunizieren und eine Interaktion zwischen dem (den) Prozessor(en) 810, 815 und Speicher 840 steuern. Der GMCH 820 kann auch als eine beschleunigte Busschnittstelle zwischen dem (den) Prozessor(en) 810, 815 und anderen Elementen des Systems 800 dienen. Für zumindest eine Ausführungsform kommuniziert der GMCH 820 mit dem (den) Prozessor(en) 810, 815 über einen Multi-Drop-Bus, wie einen Frontside-Bus (FSB) 895.
  • Ferner ist der GMCH 820 an eine Anzeige 845 (wie eine Flach- oder Berührungsbildschirmanzeige) gekoppelt. Der GMCH 820 kann einen integrierten Grafikbeschleuniger enthalten. Der GMCH 820 ist ferner an einen Eingangs-/Ausgangs- (I/O) Steuerungs-Hub (ICH) 850 gekoppelt, der verwendet werden kann, um verschiedene periphere Einrichtungen an das System 800 zu koppeln. In der Ausführungsform von 8 ist zum Beispiel eine externe Grafikeinrichtung 860, die eine eigenständige Grafikeinrichtung sein kann, die an den ICH 850 Konfigurationsinformationen, gemeinsam mit einer anderen peripheren Einrichtung 870 dargestellt.
  • Alternativ können auch zusätzliche oder unterschiedliche Prozessoren im System 800 vorhanden sein. Zum Beispiel können, zusätzliche Prozessor(en) 815 zusätzliche Prozessor(en), die derselbe wie Prozessor 810 sind, zusätzliche Prozessor(en), die heterogen oder asymmetrisch zu Prozessor 810 sind, Beschleuniger (wie z.B. Grafikbeschleuniger oder Digitalsignalverarbeitungs- (DSP) Einheiten), feldprogrammierbare Gate-Arrays oder jeden anderen Prozessor enthalten. Es kann zahlreiche Unterschiede zwischen dem (den) Prozessor(en) 810, 815 im Sinne eines Spektrums von Gütezahlen geben, enthaltend architektonische, mikroarchitektonische, thermische, Leistungsverbrauchsmerkmale und dergleichen. Diese Unterschiede können sich effektiv als Asymmetrie und Heterogenität unter den Prozessoren 810, 815 manifestieren. Für zumindest eine Ausführungsform können die verschiedenen Prozessoren 810, 815 in demselben Die-Package gelegen sein.
  • Unter Bezugnahme nun auf 9 ist ein Blockdiagramm eines Systems 900 dargestellt, in dem eine Ausführungsform der Offenbarung arbeiten kann. 9 zeigt Prozessoren 970, 980. Die Prozessoren 970, 980 können einen integrierten Speicher und I/O-Steuerlogik („CL“) 972 bzw. 982 enthalten und miteinander über eine Punkt-zu-Punkt-Verbindung 950 zwischen Punkt-zu-Punkt-(P-P) Schnittstellen 978 bzw. 988 kommunizieren. Die Prozessoren 970, 980 kommunizieren jeweils mit dem Chipset 990 über Punkt-zu-Punkt-Verbindungen 952 und 954 durch die entsprechenden P-P-Schnittstellen 976 zu 994 und 986 zu 998, wie dargestellt. Für zumindest eine Ausführungsform kann die CL 972, 982 integrierte Speichersteuerungseinheiten enthalten. CLs 972, 982 können I/O-Steuerlogik enthalten. Wie dargestellt, sind Speicher 932, 934, die an CLs 972, 982 und I/O-Einrichtungen 914 gekoppelt sind, auch an die Steuerlogik 972, 982 gekoppelt. Legacy I/O-Einrichtungen 915 sind an den Chipset 990 über Schnittstelle 996 gekoppelt.
  • Ausführungsformen können in vielen unterschiedlichen Systemarten implementiert sein. 10 ist ein Blockdiagramm eines SoC 1000 gemäß einer Ausführungsform der vorliegenden Offenbarung. Kästchen in gestrichelten Linien sind optionale Merkmale auf fortschrittlicheren SoCs. In 10 ist eine (sind) Verbindungseinheit(en) 1012 gekoppelt an: einen Anwendungsprozessor 1020, der einen Satz von einem oder mehreren Kernen 1002A-N und (eine) gemeinsame Cache-Einheit(en) 1006 enthält; eine Systemagenteinheit 1010; (eine) Bus Steuerungseinheit(en) 1016; (eine) integrierte Speichersteuerungseinheit(en) 1014; einen Satz aus einem oder mehreren Medienprozessoren 1018, die integrierte Grafiklogik 1008 enthalten könne, einen Bildprozessor 1024 zum Vorsehen einer Standbild- und/oder Videokamerafunktionalität, einen Audio-Prozessor 1026 zum Vorsehen einer Hardware-Audiobeschleunigung und einen Video-Prozessor 1028 zum Vorsehen einer Video-Codier/Decodierbeschleunigung; eine statische Direktzugriffsspeicher- (SRAM) Einheit 1030; eine Direktspeicherzugriffs- (DMA) Einheit 1032; und eine Anzeigeeinheit 1040 zur Kopplung an eine oder mehrere externe Anzeigen. In einer Ausführungsform kann ein Speichermodul in der (den) integrierten Speichersteuerungseinheit(en) 1014 enthalten sein. In einer anderen Ausführungsform kann das Speichermodul in einer oder mehreren anderen Komponenten des SoC 1000 enthalten sein, der für einen Zugriff auf einen Speicher und/oder eine Steuerung eines Speichers verwendet werden kann.
  • Die Speicherhierarchie enthält eine oder mehrere Ebenen eines Cache innerhalb der Kerne, einen Satz aus einer oder mehreren gemeinsamen Cache-Einheiten 1006 und externe Speicher (nicht dargestellt), die an den Satz aus integrierten Speichersteuerungseinheiten 1014 gekoppelt sind. Der Satz gemeinsamer Cache-Einheiten 1006 kann einen oder mehrere Caches mittlerer Ebene enthalten, wie Ebene 2 (L2), Ebene 3 (L3), Ebene 4 (L4) oder andere Ebenen eines Cache, einen Cache letzter Ebene (LLC) und/oder Kombinationen davon.
  • In einigen Ausführungsformen sind ein oder mehr der Kerne 1002A-N zu einem Multi-Threading imstande. Der Systemagent 1010 enthält jene Komponenten, die Kerne 1002A-N koordinieren und betreiben. Die Systemagenteinheit 1010 kann zum Beispiel eine Leistungssteuerungseinheit (PCU) und eine Anzeigeeinheit enthalten. Die PCU kann Logik und Komponenten sein, oder diese enthalten, die zum Regulieren des Leistungszustands der Kerne 1002A-N und der integrierten Grafiklogik 1008 erforderlich sind. Die Anzeigeeinheit dient zum Ansteuern einer oder mehrerer extern verbundener Anzeigen.
  • Die Kerne 1002A-N können im Sinne von Architektur und/oder Anweisungssatz homogen oder heterogen sein. Zum Beispiel können einige der Kerne 1002A-N in Programmreihenfolge sein, während andere nicht nach Programmreihenfolge sind. Als ein anderes Beispiel können zwei oder mehr der Kerne 1002A-N imstande sein, denselben Anweisungssatz auszuführen, während andere imstande sein können, nur einen Teilsatz dieses Anweisungssatzes oder eines anderen Anweisungssatzes auszuführen.
  • Der Anwendungsprozessor 1020 kann ein Allzweck-Prozessor, wie ein Core™ i3, i5, i7, 2 Duo und Quad, Xeon™, Itanium™, Atom™ oder Quark™ Prozessor sein, die von Intel™ Corporation, Santa Clara, Kalifornien, erhältlich sind. Alternativ kann der Anwendungsprozessor 1020 von einer anderen Firma sein, wie ARM Holdings™, Ltd, MIPS™, usw. Der Anwendungsprozessor 1020 kann ein Spezialzweck-Prozessor sein, wie zum Beispiel ein Netzwerk- oder Kommunikationsprozessor, eine Kompressions-Engine, ein Grafikprozessor, ein Co-Prozessor, ein eingebetteter Prozessor oder dergleichen. Der Anwendungsprozessor 1020 kann auf einem oder mehreren Chips implementiert sein. Der Anwendungsprozessor 1020 kann ein Teil eines oder mehrere Substrate sein und/oder kann auf diesen unter Verwendung eines von einer Reihe von Verfahrenstechnologien implementiert sein, wie zum Beispiel BiCMOS, CMOS oder NMOS.
  • 11 ist ein Blockdiagramm einer Ausführungsform eines System-on-Chip- (SoC) Designs gemäß der vorliegenden Offenbarung. Als ein spezifisches Beispiel ist das SoC 1100 in einem Benutzergerät (UE) enthalten. In einer Ausführungsform bezieht sich UE auf jede Einrichtung, die von einem Endverbraucher zur Kommunikation verwendet wird, wie ein in der Hand gehaltenes Telefon, ein Smartphone, ein Tablet, ein ultradünnes Notebook, ein Notebook mit Breitbandadapter oder jedes andere ähnliche Kommunikationseinrichtung. Häufig ist ein UE mit einer Basisstation oder einem Knoten verbunden, die bzw. der möglicherweise in ihrer bzw. seiner Art einer Mobilstation (MS) in einem GSM Netzwerk entspricht.
  • Hier enthält SOC 1100 2 Kerne - 1106 und 1107. Die Kerne 1106 und 1107 können einer Anweisungssatzarchitektur, wie einem auf Intel® Architecture Core™ basierenden Prozessor, einem Advanced Micro Devices, Inc. (AMD) Prozessor, einem auf MIPS basierenden Prozessor, einem auf ARM basierenden Prozessordesign oder einem Kunden davon, wie auch ihren Lizenznehmern oder Anwendern entsprechen. Die Kerne 1106 und 1107 sind an Cache-Steuerung 1108 gekoppelt, die mit Busschnittstelleneinheit 1109 und L2 Cache 1110 gekoppelt ist, um mit anderen Teilen von System 1100 z kommunizieren. Verbindung 1110 enthält eine On-Chip-Verbindung, wie eine IOSF-, AMBA- oder andere oben besprochene Verbindung, die möglicherweise einen oder mehrere Aspekte der beschriebenen Offenbarung implementiert.
  • Die Verbindung 1110 sieht Kommunikationskanäle zu den anderen Komponenten vor, wie ein Teilnehmeridentitätsmodul (SIM) 1130 als Schnittstelle mit einer SIM-Karte, einen Boot-ROM 1135 zum Halten eines Boot-Codes zur Ausführung durch Kerne 1106 und 1107 zum Initialisieren und Booten des SoC 1100, eine SDRAM Steuerung 1140 als Schnittstelle mit einem externen Speicher (z.B. DRAM 1160), eine Flash-Steuerung 1145 als Schnittstelle mit einem nicht flüchtigen Speicher (z.B. Flash 1165), eine periphere Steuerung 1150 (z.B. serielle periphere Schnittstelle) als Schnittstelle mit peripheren Geräten, Video-Codecs 1120 und Videoschnittstelle 1125 zum Anzeigen und empfangen einer Eingabe (z.B. durch Berührung mögliche Eingabe), eine GPU 1115 zur Durchführung grafikbezogener Berechnungen, usw. Jede dieser Schnittstellen kann Aspekte der hier beschriebenen Offenbarung beinhalten. Zusätzlich zeigt das System 1100 periphere Geräte zur Kommunikation, wie ein Bluetooth-Modul 1170, 3G-Modem 1175, GPS 1180 und Wi-Fi 1185.
  • 12 zeigt eine schematische Darstellung einer Maschine in der beispielhaften Form eines Computersystems 1200, in dem ein Satz von Anweisungen ausgeführt werden kann, der die Maschine veranlasst, eine oder mehrere der hier besprochenen Methodologien durchzuführen. In alternativen Ausführungsformen kann die Maschine mit anderen Maschinen in einem LAN, einem Intranet, einem Extranet oder dem Internet verbunden (z.B. vernetzt) sein. Die Maschine kann mit der Kapazität eines Servers oder einer Client-Einrichtung in einer Client-Server-Netzwerkumgebung arbeiten oder als eine Peer-Maschine in einer Peer-zu-Peer (oder verteilten) Netzwerkumgebung. Die Maschine kann ein Personal Computer (PC), ein Tablet PC, eine Set-Top Box (STB), ein Personal Digital Assistant (PDA), ein zelluläres Telefon, eine Web-Appliance, ein Server, ein Netzwerkrouter, ein Schalter oder eine Brücke oder jede Maschine sein, die imstande ist, einen Satz von Anweisungen (sequentiell oder auf andere Weise) auszuführen, der Maßnahmen spezifiziert, die durch diese Maschine ergriffen werden sollen. Während ferner nur eine einzige Maschine dargestellt ist, soll der Begriff „Maschine“ auch so verstanden werden, dass er eine Sammlung von Maschinen enthält, die einzeln oder gemeinsam einen Satz (oder mehrere Sätze) von Anweisungen ausführen, um einen oder mehrere der hier besprochenen Methodologien durchzuführen.
  • Das Computersystem 1200 enthält eine Verarbeitungseinrichtung 1202, einen Hauptspeicher 1204 (z.B. Nur-Lese-Speicher (ROM), Flash-Speicher, einen dynamischen Direktzugriffsspeicher (DRAM) (wie synchronen DRAM (SDRAM) oder DRAM (RDRAM), usw.), einen statischen Speicher 1206 (z.B. Flash-Speicher, statischen Direktzugriffsspeicher (SRAM), usw.), und eine Datenspeichereinrichtung 1218, die über einen Bus 1230 miteinander kommunizieren.
  • Die Verarbeitungseinrichtung 1202 stellt eine oder mehrere Allzweck-Verarbeitungseinrichtungen dar, wie einen Mikroprozessor, eine zentrale Verarbeitungseinheit oder dergleichen. Insbesondere kann die Verarbeitungseinrichtung ein Complex Instruction Set Computing (CISC) Mikroprozessor, ein Reduced Instruction Set Computer (RISC) Mikroprozessor, Very Long Instruction Word (VLIW) Mikroprozessor oder ein Prozessor sein, der andere Anweisungssätze implementiert, oder Prozessoren, die eine Kombination aus Anweisungssätzen implementieren. Die Verarbeitungseinrichtung 1202 kann auch eine oder mehrere Spezialzweck-Verarbeitungseinrichtungen wie eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), ein Digitalsignalprozessor (DSP), Netzwerkprozessor oder dergleichen sein. In einer Ausführungsform kann die Verarbeitungseinrichtung 1202 einen oder mehrere Verarbeitungskerne enthalten. Die Verarbeitungseinrichtung 1202 ist konfiguriert, die Verarbeitungslogik 1226 zur Durchführung der hier besprochenen Operationen und Schritte auszuführen.
  • Das Computersystem 1200 kann ferner eine Netzwerkschnittstelleneinrichtung 1208 enthalten, die kommunikationsfähig an ein Netzwerk 1220 gekoppelt ist. Das Computersystem 1200 kann auch eine Video Anzeigeeinheit 1210 (z.B. eine Flüssigkristallanzeige (LCD) oder eine Kathodenstrahlröhre (CRT)), eine alphanumerische Eingabeeinrichtung 1212 (z.B. eine Tastatur), eine Cursor-Steuereinrichtung 1214 (z.B. eine Maus) und eine Signalerzeugungseinrichtung 1216 (z.B. einen Lautsprecher) enthalten. Ferner kann das Computersystem 1200 eine Grafikverarbeitungseinheit 1222, eine Videoverarbeitungseinheit 1228 und eine Audioverarbeitungseinheit 1232 enthalten.
  • Die Datenspeichereinrichtung 1218 kann ein maschinenzugängliches Datenspeichermedium 1224 enthalten, auf dem Software 1226 gespeichert ist, die eine oder mehrere der Methodologien von hier beschriebenen Funktionen implementiert, wie eine Speicheradressenvorhersage zur Speicher-Disambiguation wie oben beschrieben implementiert. Die Software 1226 kann auch oder zumindest teilweise im Hauptspeicher 1204 als Anweisungen 1226 und/oder in der Verarbeitungseinrichtung 1202 als Verarbeitungslogik 1226 während ihrer Ausführung durch das Computersystem 1200 liegen; der Hauptspeicher 1204 und die Verarbeitungseinrichtung 1202 bilden auch maschinenzugängliche Datenspeichermedien.
  • Das maschinenlesbare Datenspeichermedium 1224 kann auch zum Speichern von Anweisungen 1226 verwendet werden, die eine Speicheradressenvorhersage implementieren und/oder eine Software-Bibliothek, die Verfahren enthält, die die obenstehenden Anwendungen aufrufen. Während das maschinenzugängliche Datenspeichermedium 1128 in einer beispielhaften Ausführungsform als ein einzelnes Medium dargestellt ist, sollte der Begriff „maschinenzugängliches Datenspeichermedium“ so verstanden werden, dass er ein einziges Medium oder mehrere Medien (z.B. eine zentralisierte oder verteilte Datenbank und/oder zugehörige Caches und Server) enthält, die den einen Satz oder die mehreren Sätze von Anweisungen speichern. Der Begriff „maschinenzugängliches Datenspeichermedium“ soll auch so verstanden werden, dass er ein Medium enthält, das imstande ist einen Satz von Anweisung zur Ausführung durch die Maschine zu speichern, zu codieren oder zu tragen und die Maschine zu veranlassen, eine oder mehrere Methodologien der vorliegenden Offenbarung durchzuführen. Der Begriff „maschinenzugängliches Datenspeichermedium“ soll daher so verstanden werden, dass er Festkörperspeicher und optische und magnetische Medien enthält, ohne aber darauf beschränkt zu sein.
  • Die folgenden Beispiele betreffen weitere Ausführungsformen. Beispiel 1 ist eine Verarbeitungseinrichtung, die einen Verarbeitungskern und einen Leistungsüberwachungsagent- (PMA) Koordinator enthalten kann, der kommunikativ an den Verarbeitungskern gekoppelt ist, zum Empfangen, vom Verarbeitungskern, einer Anfrage zum Überwachen einer Ereignisart, die mit einer Einrichtung des Verarbeitungssystems verknüpft ist, wobei die Anfrage eine erste Kennung zum Identifizieren der Ereignisart und eine zweite Kennung zum Identifizieren der Einrichtung umfasst, Bestimmen einer Speicheradresse eines Speichers auf Basis der ersten Kennung und der zweiten Kennung und Senden einer Anweisung zu einem PMA-Ausführungselement, das mit der Einrichtung verknüpft ist, um das PMA-Ausführungselement zu veranlassen, Informationen bezüglich der Ereignisart in einer Aufzeichnung, beginnend bei der Speicheradresse des Speichers, zu speichern.
  • In Beispiel 2 kann der Gegenstand von Beispiel 1 ferner eine Verbindung zum Verbinden des Verarbeitungskerns, des PMA-Koordinators und der Einrichtung unter Verwendung eines Verbindungskommunikationsprotokolls enthalten, wobei die Verbindung einen Leistungsüberwachungsring umfasst, der den Verarbeitungskern, den PMA-Koordinator und das PMA-Ausführungselement kommunikativ verbindet, um die Anfrage und die Anweisung zu senden.
  • In Beispiel 3 kann der Gegenstand von Beispiel 1 ferner vorsehen, dass der PMA-Koordinator ferner eine Koordinator-Logikschaltung zum Bestimmen der Speicheradresse, und mehrere Register zum Speichern der ersten Kennung, der zweiten Kennung und der Speicheradresse umfasst.
  • In Beispiel 4 kann der Gegenstand eines der Beispiele 1 und 3 ferner vorsehen, dass die Speicheradresse eine physische Speicheradresse ist, die mit dem Speicher verknüpft ist, und wobei die Koordinator-Logikschaltung einen Übersetzungszwischenspeicher des PMA-Koordinators zum Bestimmen der Speicheradresse verwendet.
  • In Beispiel 5 kann der Gegenstand von Beispiel 1 ferner vorsehen, dass die Anweisung an das PMA-Ausführungselement die Ereignisartkennung und einen Plan umfasst, demgemäß die Informationen, die sich auf die Ereignisart beziehen, zu sammeln sind.
  • In Beispiel 6 kann der Gegenstand eines der Beispiele 1 und 5 vorsehen, dass das PMA-Ausführungselement ferner eine Ausführungselement-Logikschaltung zum Empfangen der Anweisung vom PMA-Koordinator, einen Ereignisdetektor, der kommunikativ an die Ausführungselement-Logikschaltung gekoppelt ist, um ein Auftreten von Ereignissen der Ereignisart zu detektieren, ein Register zum Speichern der Speicheradresse und einen Zähler zum Speichern der Häufigkeit eines Auftretens der Ereignisse umfasst.
  • In Beispiel 7 kann der Gegenstand von Beispiel 6 ferner vorsehen, dass die Ausführungselement-Logikschaltung einen Wert des Zählers gemäß dem Plan erfassen soll und, in Antwort auf ein Erfassen des Werts, den Wert und einen Zeitstempel in der Aufzeichnung im Speicher speichern soll.
  • In Beispiel 8 kann der Gegenstand von Beispiel 7 ferner vorsehen, dass die Anfrage zumindest eine von einer Initialisierungsanweisung, die den PMA-Koordinator veranlasst, das Register des PMA-Ausführungselements einzurichten, einer Startanweisung, die den PMA-Koordinator veranlasst, mit dem Sammeln der Informationen durch das PMA-Ausführungselement zu beginnen, oder einer Stoppanweisung, die den PMA-Koordinator veranlasst, das Sammeln der Informationen durch das PMA-Ausführungselement zu beenden, umfasst.
  • In Beispiel 9 kann der Gegenstand von Beispiel 8 ferner vorsehen, dass der Speicher einen ersten Bereich zum Speichern mehrerer Konfigurationsdatenaufzeichnungen und mehrerer gesammelter Datenaufzeichnungen umfasst, wobei jede der mehreren Konfigurationsdatenaufzeichnungen die erste Kennung, die zweite Kennung, einen Auslösungspunkt zum Starten der Sammlung der Informationen, einen Stopppunkt zum Beenden der Sammlung der Informationen und die Speicheradresse umfasst und wobei jeder der mehreren gesammelten Datenaufzeichnungen die erste Kennung, den Erfassungswert und den Zeitstempel umfasst.
  • In Beispiel 10 kann der Gegenstand von Beispiel 9 ferner vorsehen, dass die Software-Anwendung die mehreren gesammelten Datenaufzeichnungen auf Basis der ersten Kennung abruft.
  • Beispiel 11 ist einen System-on-Chip, enthaltend einen Verarbeitungskern, einen Speicher, der kommunikativ an den Verarbeitungskern gekoppelt ist, und einen Leistungsüberwachungsagent- (PMA) Koordinator, der kommunikativ an den Verarbeitungskern gekoppelt ist, und den Speicher, zum Empfangen, vom Verarbeitungskern, einer Anfrage zum Überwachen einer Ereignisart, die mit einer Einrichtung des Verarbeitungssystems verknüpft ist, wobei die Anfrage eine erste Kennung zum Identifizieren der Ereignisart und eine zweite Kennung zum Identifizieren der Einrichtung umfasst, Bestimmen einer Speicheradresse des Speichers auf Basis der ersten Kennung und der zweiten Kennung, und Senden einer Anweisung zur Einrichtung, um ein PMA-Ausführungselement, das mit der Einrichtung verknüpft ist, zu veranlassen, Informationen bezüglich der Ereignisart in einer Aufzeichnung, beginnend bei der Speicheradresse des Speichers, zu speichern.
  • In Beispiel 12 kann der Gegenstand von Beispiel 11 ferner eine Verbindung zum Verbinden des Verarbeitungskerns, des PMA-Koordinators und der Einrichtung unter Verwendung eines Verbindungskommunikationsprotokolls enthalten, wobei die Verbindung einen Leistungsüberwachungsring umfasst, der den Verarbeitungskern, den PMA-Koordinator und das PMA-Ausführungselement kommunikativ verbindet, um die Anfrage und die Anweisung zu senden.
  • In Beispiel 13 kann der Gegenstand von Beispiel 11 ferner vorsehen, dass der PMA-Koordinator ferner eine Koordinator-Logikschaltung zum Bestimmen der Speicheradresse, und mehrere Register zum Speichern der ersten Kennung, der zweiten Kennung und der Speicheradresse umfasst.
  • In Beispiel 14 kann der Gegenstand eines der Beispiele 11 und 13 ferner vorsehen, dass die Speicheradresse eine physische Speicheradresse ist, die mit dem Speicher verknüpft ist, und wobei die Koordinator-Logikschaltung einen Übersetzungszwischenspeicher des PMA-Koordinators zum Bestimmen der Speicheradresse verwendet.
  • In Beispiel 15 kann der Gegenstand von Beispiel 11 ferner vorsehen, dass die Anweisung an das PMA-Ausführungselement die Ereignisartkennung und einen Plan umfasst, demgemäß die Informationen, die sich auf die Ereignisart beziehen, zu sammeln sind.
  • In Beispiel 16 kann der Gegenstand eines der Beispiele 11 und 15 ferner vorsehen, dass das PMA-Ausführungselement ferner eine Ausführungselement-Logikschaltung zum Empfangen der Anweisung vom PMA-Koordinator, einen Ereignisdetektor, der kommunikativ an die Ausführungselement-Logikschaltung gekoppelt ist, um ein Auftreten von Ereignissen der Ereignisart zu detektieren, ein Register zum Speichern der Speicheradresse und einen Zähler zum Speichern der Häufigkeit eines Auftretens der Ereignisse umfasst.
  • In Beispiel 17 kann der Gegenstand von Beispiel 16 ferner vorsehen, dass die Ausführungselement-Logikschaltung einen Wert des Zählers gemäß dem Plan erfassen soll und, in Antwort auf ein Erfassen des Werts, den Wert und einen Zeitstempel in der Aufzeichnung im Speicher speichern soll.
  • In Beispiel 18 kann der Gegenstand von Beispiel 17 ferner vorsehen, dass die Anfrage zumindest eine von einer Initialisierungsanweisung, die den PMA-Koordinator veranlasst, das Register des PMA-Ausführungselements einzurichten, einer Startanweisung, die den PMA-Koordinator veranlasst, mit dem Sammeln der Informationen durch das PMA-Ausführungselement zu beginnen, oder einer Stoppanweisung, die den PMA-Koordinator veranlasst, das Sammeln der Informationen durch das PMA-Ausführungselement zu beenden, umfasst.
  • In Beispiel 19 kann der Gegenstand von Beispiel 18 ferner vorsehen, dass der Speicher einen ersten Bereich zum Speichern mehrerer Konfigurationsdatenaufzeichnungen und mehrerer gesammelter Datenaufzeichnungen umfasst, wobei jede der mehreren Konfigurationsdatenaufzeichnungen die erste Kennung, die zweite Kennung, einen Auslösungspunkt zum Starten der Sammlung der Informationen, einen Stopppunkt zum Beenden der Sammlung der Informationen und die Speicheradresse umfasst und wobei jeder der mehreren gesammelten Datenaufzeichnungen die erste Kennung, den Erfassungswert und den Zeitstempel umfasst.
  • Beispiel 20 ist ein Verfahren, enthaltend ein Empfangen, durch einen Leistungsüberwachungsagent- (PMA) Koordinator von einem Verarbeitungskern, einer Anfrage zum Überwachen einer Ereignisart, die mit einer Einrichtung des Verarbeitungssystems verknüpft ist, wobei die Anfrage eine erste Kennung zum Identifizieren der Ereignisart und eine zweite Kennung zum Identifizieren der Einrichtung umfasst, Bestimmen einer Speicheradresse eines Speichers auf Basis der ersten Kennung und der zweiten Kennung und Senden einer Anweisung zu einem PMA-Ausführungselement, das mit der Einrichtung verknüpft ist, um das PMA-Ausführungselement zu veranlassen, Informationen bezüglich der Ereignisart in einer Aufzeichnung, beginnend bei der Speicheradresse des Speichers, zu speichern.
  • In Beispiel 21 kann der Gegenstand von Beispiel 20 ferner ein Übersetzen der Speicheradresse von einem virtuellen Speicheradressenraum zu einem physischen Speicheradressenraum unter Verwendung eines Übersetzungszwischenspeichers umfassen.
  • Beispiel 22 ist an Vorrichtung umfassend: Mittel zum Durchführen eines Gegenstands aus Beispiel 20 und 21.
  • Beispiel 23 ist einen maschinenlesbares, nicht transitorisches Medium, auf dem ein Programmcode gespeichert ist, der, wenn er ausgeführt wird, Operationen durchführt, enthaltend ein Empfangen, durch einen Leistungsüberwachungsagent- (PMA) Koordinator von einem Verarbeitungskern, einer Anfrage zum Überwachen einer Ereignisart, die mit einer Einrichtung des Verarbeitungssystems verknüpft ist, wobei die Anfrage eine erste Kennung zum Identifizieren der Ereignisart und eine zweite Kennung zum Identifizieren der Einrichtung umfasst, Bestimmen einer Speicheradresse eines Speichers auf Basis der ersten Kennung und der zweiten Kennung und Senden einer Anweisung zu einem PMA-Ausführungselement, das mit der Einrichtung verknüpft ist, um das PMA-Ausführungselement zu veranlassen, Informationen bezüglich der Ereignisart in einer Aufzeichnung, beginnend bei der Speicheradresse des Speichers, zu speichern.
  • In Beispiel 24 kann der Gegenstand von Beispiel 23 ferner vorsehen, dass die Operationen ferner ein Übersetzen der Speicheradresse von einem virtuellen Speicheradressenraum zu einem physischen Speicheradressenraum unter Verwendung eines Übersetzungszwischenspeichers enthalten.
  • Während die Offenbarung in Bezug auf eine begrenze Anzahl von Ausführungsformen beschrieben wurden, sind für Fachleute auf dem Gebiet zahlreiche Modifizierungen und Variationen offensichtlich. Die beiliegenden Ansprüche sollen alle solche Modifizierungen und Variationen als in das wahre Wesen und den Umfang dieser Offenbarung fallend abdecken.
  • Ein Design kann durch verschiedene Stufen, von der Erstellung bis zur Simulierung und Herstellung, gehen. Daten, die ein Design darstellen, können das Design auf zahlreiche Weisen darstellen. Erstens, wie es in Simulierungen nützlich ist, kann die Hardware unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen funktionellen Beschreibungssprache dargestellt werden. Zusätzlich kann ein Schaltungsebenenmodell mit Logik und/oder Transistor-Gates kann in einigen Stufen des Designprozesses erzeugt werden. Ferner erreichen die meisten Designs an einer gewissen Stufe eine Ebene von Daten, die die physische Platzierung verschiedener Einrichtungen im Hardware-Modell darstellen. Für den Fall, dass herkömmliche Halbleiterfertigungstechniken verwendet werden, können die Daten, die das Hardware-Modell darstellen, die Daten sein, die das Vorhandensein oder Fehlen verschiedener Merkmale auf verschiedenen Maskenschichten für Masken spezifizieren, die zum Produzieren der integrierten Schaltung verwendet werden. In jeder Darstellung des Designs können die Daten in einer Form eines maschinenlesbaren Mediums gespeichert sein. Ein Speicher oder ein magnetischer oder optischer Datenspeicher wie eine Platte, kann das maschinenlesbare Medium zum Speichern von Informationen sein, die über eine optische oder elektrische Welle übertragen werden, die moduliert oder auf andere Weise generiert wird, um solche Informationen zu übertragen. Wenn eine elektrische Trägerwelle, die den Code oder das Design anzeigt oder trägt, übertragen wird, wird in dem Ausmaß, dass ein Kopieren, Puffern oder Neuübertragen des elektrischen Signals durchgeführt wird, eine neue Kopie erstellt. Daher kann ein Kommunikationsanbieter oder ein Netzwerkanbieter einen Artikel, wie Informationen, die in eine Trägerwelle codiert sind, auf einem handfesten, maschinenlesbaren Medium, zumindest vorübergehend, speichern, das Techniken von Ausführungsformen der vorliegenden Offenbarung verkörpert.
  • Ein Modul, wie hier verwendet, bezieht sich auf jede Kombination aus Hardware, Software und/oder Firmware. Beispielsweise enthält ein Modul Hardware, wie eine Mikrosteuerung, verknüpft mit einem nicht transitorischen Medium, um einen Code zu speichern, der ausgebildet ist, durch die Mikrosteuerung ausgeführt zu werden. Daher bezieht sich ein Verweis auf ein Modul in einer einzigen Ausführungsform auf die Hardware, die im Speziellen konfiguriert ist, den Code zu erkennen und/oder auszuführen, der auf einem nicht transitorischen Medium gehalten werden soll. Überdies bezieht sich in einer anderen Ausführungsform eine Verwendung eines Moduls auf das nicht transitorische Medium, das den Code enthält, der im Speziellen ausgebildet ist, durch die Mikrosteuerung ausgeführt zu werden, um vorbestimmte Operationen auszuführen. Und wie abgeleitet werden kann, in einer weiteren Ausführungsform kann sich der Begriff Modul (in diesem Beispiel) auf die Kombination aus der Mikrosteuerung und dem nicht transitorischen Medium beziehen. Häufig variieren Modulgrenzen, die als separat dargestellt sind, allgemein und überlappen möglicherweise. Zum Beispiel können sich ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon teilen, während möglicherweise eine gewisse unabhängige Hardware, Software oder Firmware beibehalten wird. In einer Ausführungsform enthält die Verwendung des Begriffs Logik Hardware, wie Transistoren, Register oder andere Hardware, wie programmierbare Logikeinrichtungen.
  • Die Verwendung der Phrase ‚konfiguriert zum‘ in einer Ausführungsform bezieht sich auf die Anordnung, Zusammenstellung, Herstellung, das Anbieten zum Verkauf, Importieren und/oder Designen einer Vorrichtung, Hardware, Logik, oder eines Elements zum Durchführen einer angegebenen oder bestimmten Aufgabe. In diesem Beispiel ist eine Vorrichtung oder ein Element davon, die bzw. das nicht arbeitet, noch immer ‚konfiguriert‘, eine angegebene Aufgabe auszuführen, wenn sie bzw. es gestaltet, gekoppelt und/oder verbunden ist, die angegebene Aufgabe auszuführen. Als rein veranschaulichendes Beispiel kann ein Logik-Gate eine 0 oder eine 1 während des Betriebs vorsehen. Aber ein Logik-Gate, das ‚konfiguriert‘ ist, ein Freigabesignal an eine Uhr vorzusehen, enthält nicht jedes mögliche Logik-Gate, das eine 1 oder 0 bereitstellen kann. Stattdessen ist das Logik-Gate eines, das in einer gewissen Weise gekoppelt ist, dass während des Betriebs die ausgegebene 1 oder 0 dazu dient, die Uhr freizugeben. Es wird einmal mehr festgehalten, dass die Verwendung des Begriffs ‚konfiguriert‘ keinen Betrieb erfordert, sondern stattdessen der Fokus auf dem latenten Zustand einer Vorrichtung, Hardware und/oder eines Elements liegt, wo im latenten Zustand die Vorrichtung, Hardware und/oder das Element gestaltet ist, eine bestimmte Aufgabe durchzuführen, wenn die Vorrichtung, Hardware und/oder das Element in Betrieb ist.
  • Überdies bezieht sich die Verwendung der Phrasen ‚zum‘, ‚imstande zum‘, und oder ‚betriebsbereit zum‘ in einer Ausführungsform auf eine gewisse Vorrichtung, Logik, Hardware und/oder ein Element, die bzw. das derart gestaltet ist, dass eine Verwendung der Vorrichtung, Logik, Hardware und/oder des Elements in einer spezifizierten Weise möglich ist. Wie oben wird festgehalten, dass die Verwendung von zum, imstande zum oder betriebsbereit zum sich in einer einzigen Ausführungsform auf den latenten Zustand einer Vorrichtung, Logik, Hardware, und/oder eines Elements bezieht, wo die Vorrichtung, Logik, Hardware und/oder das Element nicht arbeitet, aber derart gestaltet ist, dass eine Verwendung einer Vorrichtung in einer spezifizierten Weise möglich ist.
  • Ein Wert, wie hier verwendet, enthält jede bekannte Darstellung einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands. Häufig wird die Verwendung von Logikpegeln, Logikwerten oder logischen Werten auch als 1 und 0 bezeichnet, die einfach binäre Logikzustände darstellen. Zum Beispiel bezieht sich eine 1 auf einen hohen Logikpegel und 0 bezieht sich auf einen niederen Logikpegel. In einer Ausführungsform kann eine Datenspeicherzelle, wie eine Transistor- oder Flash-Zelle, imstande sein, einen einzelnen logischen Wert oder mehrere logische Werte zu halten. Andere Darstellungen von Werten in Computersystemen wurden jedoch verwendet. Zum Beispiel kann die Dezimalzahl Zehn auch als binärer Wert 910 und ein hexadezimaler Buchstabe A dargestellt werden. Daher enthält ein Wert jede Darstellung von Informationen, die imstande sind, in einem Computersystem gehalten zu werden.
  • Weiters können Zustände durch Werte oder Abschnitte von Werten dargestellt werden. Als ein Beispiel kann ein erster Wert, wie eine logische Eins, einen Vorgabe- oder anfänglichen Zustand darstellen, während ein zweiter Wert, wie eine logische Null, einen Nicht-Vorgabezustand darstellen kann. Zusätzlich beziehen sich die Begriffe Rücksetzen und setzen in einer Ausführungsform auf einen Vorgabe- bzw. einen aktualisierten Wert oder Zustand. Zum Beispiel enthält ein Vorgabewert möglicherweise einen hohen logischen Wert, d.h. Rücksetzen, während ein aktualisierter Wert möglicherweise einen niederen logischen Wert enthält, d.h. Setzen. Es ist zu beachten, dass jede Kombination von Werten zur Darstellung einer beliebigen Zahl von Zuständen benutzt werden kann.
  • Die oben angeführten Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code können über Anweisungen oder Code implementiert werden, die auf einem maschinenzugänglichen, maschinenlesbaren, computerzugänglichen oder computerlesbaren Medium gespeichert sind, die durch ein Verarbeitungselement ausführbar sind. Ein nicht transitorisches maschinenzugängliches/-lesbares Medium enthält jeden Mechanismus, der Informationen in einer Form vorsieht (d.h. speichert und/oder überträgt), die durch eine Maschine, wie einen Computer oder ein elektronisches System, lesbar ist. Zum Beispiel enthält ein nicht transitorisches maschinenzugängliches Medium einen Direktzugriffsspeicher (RAM), wie statischen RAM (SRAM) oder dynamischen RAM (DRAM); ROM; ein magnetisches oder optisches Datenspeichermedium; Flash-Speichervorrichtungen; elektrische Datenspeichereinrichtungen; optische Datenspeichereinrichtungen; akustische Datenspeichereinrichtungen; eine andere Form von Datenspeichereinrichtungen zum Halten von Informationen, die von transitorischen (ausgebreiteten) Signalen (z.B. Trägerwellen, Infrarotsignalen, digitalen Signalen) empfangen werden; usw., die von den nicht transitorischen Medien zu unterscheiden sind, die Informationen von diesen empfangen können.
  • Anweisungen, die zum Programmieren von Logik verwendet werden, um Ausführungsformen der Offenbarung durchzuführen, können in einem Speicher im System gespeichert werden, wie einem DRAM, Cache, Flash-Speicher oder einem anderen Datenspeicher. Überdies können die Anweisungen über ein Netzwerk oder durch andere computerlesbare Medien verteilt werden. Daher kann ein maschinenlesbares Medium jeden Mechanismus zum Speichern oder Übertragen von Informationen in einer Form, die durch eine Maschine (z.B. einen Computer) lesbar ist, enthalten, ist aber nicht beschränkt auf Disketten, optische Speicherplatten, Compact Disc Nur-Lese-Speicher (CD-ROMs), und magneto-optische Speicherplatten, Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAM), löschbaren programmierbaren Nur-Lese-Speicher (EPROM), elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), magnetische oder optische Karten, Flash-Speicher oder einen handfesten, maschinenlesbaren Datenspeicher, die in der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen ausgebreiteter Signale (z.B. Trägerwellen, Infrarotsignale, digitale Signale usw.) verwendet werden. Daher enthält das computerlesbare Medium jede Art von handfestem maschinenlesbaren Medium, das zum Speichern oder Übertragen elektronischer Anweisungen oder Informationen in einer Form, die durch eine Maschine (z.B. einen Computer) lesbar ist, geeignet ist.
  • Ein Verweis in dieser Beschreibung auf „eine einzige Ausführungsform“ oder „eine Ausführungsform“ bedeutet, dass ein bestimmtes Merkmal, eine Struktur oder eine Eigenschaft, das bzw. die in Verbindung mit der Ausführungsform beschrieben ist, in zumindest einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Daher beziehen sich die Stellen der Phrasen „in einer einzigen Ausführungsform“ oder „in einer Ausführungsform“ an verschiedenen Stellen in dieser Beschreibung nicht unbedingt alle auf dieselbe Ausführungsform. Überdies können die bestimmten Merkmale, Strukturen oder Eigenschaften in jeder geeigneten Weise in einer oder mehreren Ausführungsformen kombiniert sein.
  • In der vorangehenden Beschreibung wurde eine ausführliche Beschreibung unter Bezugnahme auf spezielle beispielhafte Ausführungsformen gegeben. Es ist jedoch offensichtlich, dass verschiedene Modifizierungen und Änderungen daran vorgenommen werden können, ohne vom weiteren Wesen und Umfang der Offenbarung abzuweichen, die in den beiliegenden Ansprüchen dargelegt ist. Die Beschreibung und Zeichnungen sind daher in einem veranschaulichenden Sinn und nicht einschränkendem Sinn zu betrachten. Überdies bezieht sich die vorangehende Verwendung von Ausführungsform und anderer beispielhafter Ausdrucksweise nicht unbedingt auf dieselbe Ausführungsform oder dasselbe Beispiel, sondern kann sich auf andere und unterschiedliche Ausführungsformen wie auch möglicherweise dieselbe Ausführungsform beziehen.

Claims (24)

  1. Verarbeitungssystem, umfassend: einen Verarbeitungskern; und einen Leistungsüberwachungsagent- (PMA) Koordinator, der kommunikativ an den Verarbeitungskern gekoppelt ist, zum: Empfangen, vom Verarbeitungskern, einer Anfrage zum Überwachen einer Ereignisart, die mit einer Einrichtung des Verarbeitungssystems verknüpft ist, wobei die Anfrage eine erste Kennung zum Identifizieren der Ereignisart und eine zweite Kennung zum Identifizieren der Einrichtung umfasst; Bestimmen einer Speicheradresse eines Speichers auf Basis der ersten Kennung und der zweiten Kennung; und Senden einer Anweisung zu einem PMA-Ausführungselement, das mit der Einrichtung verknüpft ist, um das PMA-Ausführungselement zu veranlassen, Informationen bezüglich der Ereignisart in einer Aufzeichnung, beginnend bei der Speicheradresse des Speichers, zu speichern.
  2. Verarbeitungssystem nach Anspruch 1, ferner umfassend: eine Verbindung zum Verbinden des Verarbeitungskerns, des PMA-Koordinators und der Einrichtung unter Verwendung eines Verbindungskommunikationsprotokolls, wobei die Verbindung einen Leistungsüberwachungsring umfasst, der den Verarbeitungskern, den PMA-Koordinator und das PMA-Ausführungselement kommunikativ verbindet, um die Anfrage und die Anweisung zu senden.
  3. Verarbeitungssystem nach Anspruch 1, wobei der PMA-Koordinator ferner umfasst: eine Koordinator-Logikschaltung zum Bestimmen der Speicheradresse; und mehrere Register zum Speichern der ersten Kennung, der zweiten Kennung und der Speicheradresse.
  4. Verarbeitungssystem nach einem der Ansprüche 1 und 3, wobei die Speicheradresse eine physische Speicheradresse ist, die mit dem Speicher verknüpft ist, und wobei die Koordinator-Logikschaltung einen Übersetzungszwischenspeicher des PMA-Koordinators zum Bestimmen der Speicheradresse verwendet.
  5. Verarbeitungssystem nach Anspruch 1, wobei die Anweisung an das PMA-Ausführungselement die Ereignisartkennung und einen Plan umfasst, demgemäß die Informationen, die sich auf die Ereignisart beziehen, zu sammeln sind.
  6. Verarbeitungssystem nach einem der Ansprüche 1 und 5, wobei das PMA-Ausführungselement ferner umfasst: eine Ausführungselement-Logikschaltung zum Empfangen der Anweisung vom PMA-Koordinator; einen Ereignisdetektor, der kommunikativ an die Ausführungselement-Logikschaltung gekoppelt ist, um ein Auftreten von Ereignissen der Ereignisart zu detektieren; ein Register zum Speichern der Speicheradresse; und einen Zähler zum Speichern der Häufigkeit eines Auftretens der Ereignisse.
  7. Verarbeitungssystem nach Anspruch 6, wobei die Ausführungselement-Logikschaltung einen Wert des Zählers gemäß dem Plan erfassen soll und, in Antwort auf ein Erfassen des Werts, den Wert und einen Zeitstempel in der Aufzeichnung im Speicher speichern soll.
  8. Verarbeitungssystem nach Anspruch 7, wobei die Anfrage zumindest eine von einer Initialisierungsanweisung, die den PMA-Koordinator veranlasst, das Register des PMA-Ausführungselements einzurichten, eine Startanweisung, die den PMA-Koordinator veranlasst, mit dem Sammeln der Informationen durch das PMA-Ausführungselement zu beginnen, oder eine Stoppanweisung, die den PMA-Koordinator veranlasst, das Sammeln der Informationen durch das PMA-Ausführungselement zu beenden, umfasst.
  9. Verarbeitungssystem nach Anspruch 8, wobei der Speicher einen ersten Bereich zum Speichern mehrerer Konfigurationsdatenaufzeichnungen und mehrerer gesammelter Datenaufzeichnungen umfasst, wobei jede der mehreren Konfigurationsdatenaufzeichnungen die erste Kennung, die zweite Kennung, einen Auslösungspunkt zum Starten der Sammlung der Informationen, einen Stopppunkt zum Beenden der Sammlung der Informationen und die Speicheradresse umfasst und wobei jede der mehreren gesammelten Datenaufzeichnungen die erste Kennung, den Erfassungswert und den Zeitstempel umfasst.
  10. Verarbeitungssystem nach Anspruch 9, wobei die Software-Anwendung die mehreren gesammelten Datenaufzeichnungen auf Basis der ersten Kennung abrufen soll.
  11. System-on-Chip umfassend: einen Verarbeitungskern; einen Speicher, der kommunikativ an den Verarbeitungskern gekoppelt ist; und einen Leistungsüberwachungsagent- (PMA) Koordinator, der kommunikativ an den Verarbeitungskern und den Speicher gekoppelt ist, zum: Empfangen, vom Verarbeitungskern, einer Anfrage zum Überwachen einer Ereignisart, die mit einer Einrichtung des Verarbeitungssystems verknüpft ist, wobei die Anfrage eine erste Kennung zum Identifizieren der Ereignisart und eine zweite Kennung zum Identifizieren der Einrichtung umfasst; Bestimmen einer Speicheradresse des Speichers auf Basis der ersten Kennung und der zweiten Kennung; und Senden einer Anweisung zur Einrichtung, um ein PMA-Ausführungselement, das mit der Einrichtung verknüpft ist, zu veranlassen, Informationen bezüglich der Ereignisart in einer Aufzeichnung, beginnend bei der Speicheradresse des Speichers, zu speichern.
  12. SoC nach Anspruch 11, ferner umfassend: eine Verbindung zum Verbinden des Verarbeitungskerns, des PMA-Koordinators und der Einrichtung unter Verwendung eines Verbindungskommunikationsprotokolls, wobei die Verbindung einen Leistungsüberwachungsring umfasst, der den Verarbeitungskern, den PMA-Koordinator und das PMA-Ausführungselement kommunikativ verbindet, um die Anfrage und die Anweisung zu senden.
  13. SoC nach Anspruch 11, wobei der PMA-Koordinator ferner umfasst: eine Koordinator-Logikschaltung zum Bestimmen der Speicheradresse; und mehrere Register zum Speichern der ersten Kennung, der zweiten Kennung und der Speicheradresse.
  14. SoC nach einem der Ansprüche 11 und 13, wobei die Speicheradresse eine physische Speicheradresse ist, die mit dem Speicher verknüpft ist, und wobei die Koordinator-Logikschaltung einen Übersetzungszwischenspeicher des PMA-Koordinators zum Bestimmen der Speicheradresse verwendet.
  15. SoC nach Anspruch 11, wobei die Anweisung an das PMA-Ausführungselement die Ereignisartkennung und einen Plan umfasst, demgemäß die Informationen, die sich auf die Ereignisart beziehen, zu sammeln sind.
  16. SoC nach einem der Ansprüche 11 und 15, wobei das PMA-Ausführungselement ferner umfasst: eine Ausführungselement-Logikschaltung zum Empfangen der Anweisung vom PMA-Koordinator; einen Ereignisdetektor, der kommunikativ an die Ausführungselement-Logikschaltung gekoppelt ist, um ein Auftreten von Ereignissen der Ereignisart zu detektieren; ein Register zum Speichern der Speicheradresse; und einen Zähler zum Speichern der Häufigkeit eines Auftretens der Ereignisse.
  17. SoC nach Anspruch 16, wobei die Ausführungselement-Logikschaltung einen Wert des Zählers gemäß dem Plan erfassen soll und, in Antwort auf ein Erfassen des Werts, den Wert und einen Zeitstempel in der Aufzeichnung im Speicher speichern soll.
  18. SoC nach Anspruch 17, wobei die Anfrage zumindest eine von einer Initialisierungsanweisung, die den PMA-Koordinator veranlasst, das Register des PMA-Ausführungselements einzurichten, eine Startanweisung, die den PMA-Koordinator veranlasst, mit dem Sammeln der Informationen durch das PMA-Ausführungselement zu beginnen, oder eine Stoppanweisung, die den PMA-Koordinator veranlasst, das Sammeln der Informationen durch das PMA-Ausführungselement zu beenden, umfasst.
  19. SoC nach Anspruch 18, wobei der Speicher einen ersten Bereich zum Speichern mehrerer Konfigurationsdatenaufzeichnungen und mehrerer gesammelter Datenaufzeichnungen umfasst, wobei jede der mehreren Konfigurationsdatenaufzeichnungen die erste Kennung, die zweite Kennung, einen Auslösungspunkt zum Starten der Sammlung der Informationen, einen Stopppunkt zum Beenden der Sammlung der Informationen und die Speicheradresse umfasst und wobei jede der mehreren gesammelten Datenaufzeichnungen die erste Kennung, den Erfassungswert und den Zeitstempel umfasst.
  20. Verfahren, umfassend: Empfangen, durch einen Leistungsüberwachungsagent- (PMA) Koordinator, von einem Verarbeitungskern, einer Anfrage zum Überwachen einer Ereignisart, die mit einer Einrichtung des Verarbeitungssystems verknüpft ist, wobei die Anfrage eine erste Kennung zum Identifizieren der Ereignisart und eine zweite Kennung zum Identifizieren der Einrichtung umfasst; Bestimmen einer Speicheradresse eines Speichers auf Basis der ersten Kennung und der zweiten Kennung; und Senden einer Anweisung zu einem PMA-Ausführungselement, das mit der Einrichtung verknüpft ist, um das PMA-Ausführungselement zu veranlassen, Informationen bezüglich der Ereignisart in einer Aufzeichnung, beginnend bei der Speicheradresse des Speichers, zu speichern.
  21. Verfahren nach Anspruch 20, ferner umfassend: Übersetzen der Speicheradresse von einem virtuellen Speicheradressenraum zu einem physischen Speicheradressenraum unter Verwendung eines Übersetzungszwischenspeichers.
  22. Vorrichtung, umfassend: Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 20 und 21.
  23. Maschinenlesbares, nicht transitorisches Medium, auf dem ein Programmcode gespeichert ist, der, wenn er ausgeführt wird, Operationen durchführt, umfassend: Empfangen, durch einen Leistungsüberwachungsagent- (PMA) Koordinator, von einem Verarbeitungskern, einer Anfrage zum Überwachen einer Ereignisart, die mit einer Einrichtung des Verarbeitungssystems verknüpft ist, wobei die Anfrage eine erste Kennung zum Identifizieren der Ereignisart und eine zweite Kennung zum Identifizieren der Einrichtung umfasst; Bestimmen einer Speicheradresse eines Speichers auf Basis der ersten Kennung und der zweiten Kennung; und Senden einer Anweisung zu einem PMA-Ausführungselement, das mit der Einrichtung verknüpft ist, um das PMA-Ausführungselement zu veranlassen, Informationen bezüglich der Ereignisart in einer Aufzeichnung, beginnend bei der Speicheradresse des Speichers, zu speichern.
  24. Maschinenlesbares, nicht transitorisches Medium nach Anspruch 23, wobei die Operationen ferner umfassen: Übersetzen der Speicheradresse von einem virtuellen Speicheradressenraum zu einem physischen Speicheradressenraum unter Verwendung eines Übersetzungszwischenspeichers.
DE112016006686.4T 2016-04-01 2016-04-01 Verfahren und vorrichtung zur zeit- und ereignisausgerichteten mehrschicht-, mehrfachagent-leistungsüberwachung Pending DE112016006686T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2016/057258 WO2017167398A1 (en) 2016-04-01 2016-04-01 Method and apparatus for time and event aligned multilayer multiagent performance monitoring

Publications (1)

Publication Number Publication Date
DE112016006686T5 true DE112016006686T5 (de) 2018-12-20

Family

ID=55646607

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016006686.4T Pending DE112016006686T5 (de) 2016-04-01 2016-04-01 Verfahren und vorrichtung zur zeit- und ereignisausgerichteten mehrschicht-, mehrfachagent-leistungsüberwachung

Country Status (2)

Country Link
DE (1) DE112016006686T5 (de)
WO (1) WO2017167398A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110851316A (zh) * 2018-08-20 2020-02-28 北京京东尚科信息技术有限公司 异常预警方法及装置、系统、电子设备、存储介质
CN114546495B (zh) * 2021-09-03 2022-12-20 北京睿芯众核科技有限公司 适用于risc-v架构处理器的地址属性检查的方法及系统
CN113778652A (zh) * 2021-09-22 2021-12-10 武汉悦学帮网络技术有限公司 一种任务调度方法、装置、电子设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5696701A (en) * 1996-07-12 1997-12-09 Electronic Data Systems Corporation Method and system for monitoring the performance of computers in computer networks using modular extensions
US8176475B2 (en) * 2006-10-31 2012-05-08 Oracle America, Inc. Method and apparatus for identifying instructions associated with execution events in a data space profiler
US20140229715A1 (en) * 2011-12-29 2014-08-14 Laura A. Knauth Apparatus and method for providing eventing ip and source data address in a statistical sampling infrastructure

Also Published As

Publication number Publication date
WO2017167398A1 (en) 2017-10-05

Similar Documents

Publication Publication Date Title
US10346280B2 (en) Monitoring performance of a processor using reloadable performance counters
DE102018000886A1 (de) Virtuelle Maschinenkommunikation auf Hardware-Basis
DE112017006568T5 (de) Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern
DE102012215216B4 (de) Verbesserte Erfassung von Speicherauszugsdaten von Hardwareausfallmodi
DE112017000677T5 (de) Prozessorerweiterungen zum Schutz von Stapeln während Ringübergängen
DE102018003221A1 (de) Unterstützung gelernter Sprungprädiktoren
US9430396B2 (en) Updating persistent data in persistent memory-based storage
US9690716B2 (en) High performance persistent memory for region-centric consistent and atomic updates
DE102018001229A1 (de) Beschleunigerschaltung mit variabler Wortlänge für ein neuronales Netzwerk
DE102018125257A1 (de) Defragmentierter und effizienter mikrooperationscache
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE102014003689A1 (de) Verfolgung des kontrollflusses von befehlen
DE112013007701T5 (de) Ein-Chip-System (SOC), das Hybridprozessorkerne enthält
DE112017004911T5 (de) Anweisung und Logik für die Erkennung eines numerischen Ansammlungsfehlers
KR102132805B1 (ko) 커널 모듈을 위한 멀티코어 메모리 데이터 레코더
DE112016004192T5 (de) Fehlerprüfung komprimierter Ströme in heterogenen Kompressionsbeschleunigern
DE112019006898T5 (de) Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation
DE112016005863T5 (de) Minimierung von Snoop-Verkehr lokal und über Kerne auf einem Chip-Mehrkern-Fabric
DE102018002525A1 (de) Hybridatomaritätsunterstützung für einen binärübersetzungsbasierten mikroprozessor
DE202017007430U1 (de) Erkennen von Bussperrbedingungen und Vermeiden von Bussperren
US10365988B2 (en) Monitoring performance of a processing device to manage non-precise events
DE112013007702T5 (de) Befehl und Logik für den Speicherzugriff in einer geclusterten Maschine mit breiter Ausführung
DE102018005039A1 (de) System und verfahren für pro-agent-steuerung und - dienstqualität gemeinsam genutzter ressourcen in chip-mehrprozessor-plattformen
DE112017003323T5 (de) Prozessoren, Verfahren und Systeme zum Identifizieren von Speichern, die externe transaktionale Ausführungsabbrüche verursachen
DE112017004837T5 (de) Systeme und Verfahren zum Differenzieren von Funktionsleistung nach Eingabeparametern

Legal Events

Date Code Title Description
R012 Request for examination validly filed