DE69814997T2 - Durch programmierbare Logik gesteuerte Leistungszähler - Google Patents

Durch programmierbare Logik gesteuerte Leistungszähler Download PDF

Info

Publication number
DE69814997T2
DE69814997T2 DE69814997T DE69814997T DE69814997T2 DE 69814997 T2 DE69814997 T2 DE 69814997T2 DE 69814997 T DE69814997 T DE 69814997T DE 69814997 T DE69814997 T DE 69814997T DE 69814997 T2 DE69814997 T2 DE 69814997T2
Authority
DE
Germany
Prior art keywords
event
signal
event signal
signals
generated
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69814997T
Other languages
English (en)
Other versions
DE69814997D1 (de
Inventor
Norman P. Palo Alto Jouppi
Joel J. Boulder McCormack
Larry D. Boylston Seiler
Mark O. West Groton Yeager
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Compaq Computer Corp
Original Assignee
Compaq Computer Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Compaq Computer Corp filed Critical Compaq Computer Corp
Publication of DE69814997D1 publication Critical patent/DE69814997D1/de
Application granted granted Critical
Publication of DE69814997T2 publication Critical patent/DE69814997T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)
  • Microcomputers (AREA)

Description

  • BEREICH DER ERFINGUNG
  • Die vorliegende Erfindung betrifft im allgemeinen Computersysteme und spezieller die Überwachung der Leistung von Computersystemen.
  • HINTERGRUND DER ERFINGUNG
  • Computersysteme werden zunehmend komplexer. Diese zunehmende Komplexität macht es immer schwieriger, das dynamische Verhalten der Systeme zu analysieren und zu verstehen. Solange Computersysteme aus Komponenten mit niedrigem Integrationsgrad zusammengebaut sind, so ist es mit Hilfe von Hardware-Überwachungstechniken möglich, auf Signale zuzugreifen, die für das Verständnis des Betriebs und der Leistung der Systeme von Bedeutung sind, und diese Signale zu analysieren. In dem Mass jedoch, in dem Computersysteme zunehmend komplexer und hochintegriert werden, entziehen sich diese relevanten Signale dem direkten Zugriff, da sie vielfach innerhalb von Komponenten-Packungen verborgen sind.
  • Überdies sind auch Simulationen des Verhaltens von Computersystemen nicht in der Lage, eine vollständige Einsicht in die Leistung des Systems zu bieten. Zum einen laufen diese Simulationen mit im Vergleich zum tatsächlichen Betrieb des Computersystems beträchtlich niedrigeren Geschwindigkeiten ab. Folglich sind diese Simulationen nicht in der Lage, grosse reale Anwendungen innerhalb einer brauchbaren Zeitspanne laufen zu lassen. Des weiteren können die Simulationen nicht zu einem Verständnis von Fehlern beitragen, die während der Ausführung des Entwurfs oder während der Fertigung des Computersystems auftreten.
  • Um einen Einblick in das Verhalten von Computersystemen zu gewähren, ist man dazu übergegangen, Mikroprozessoren mit chipintegrierten Leistungszählern zum Zählen des Auftretens von wichtigen Ereignissen während des Betriebs des Systems auszustatten. Wichtige Ereignisse sind zum Beispiel unter anderem Cachefehlgriffe, ausgeführte Befehle, sowie E/A-Datentransferanforderungen. Diese Zähler können entsprechend eingestellt werden, sodass sie den Mikroprozessor bei einer Zählkapazitätsüberschreitung unterbrechen. Charakteristischerweise können die Mikroprozessoren auch in periodischen Abständen die Leistungszähler prüfen und damit die Leistung des Systems bewerten.
  • Bei chipintegrierten Leistungszählern neuerer Bauart wird jedem Leistungszähler eine eigene Menge von Ereignissen zugeordnet, von denen nur ein einziges Ereignis zur Zählung ausgewählt wird. Solche Ausführungen sind insofern beschränkt, als jedes spezielle Ereignis nur von jeweils einem Leistungszähler ausgewählt werden kann. Auch muss charakteristischerweise die Auswahl der zu zählenden Ereignisse zum Zeitpunkt des Entwurfs des Computersystems festgelegt werden. Leider können nicht alle Leistungsprobleme von Computersystemen bereits zum Zeitpunkt ihres Entwurfs vorausgesehen werden, insbesondere jene Probleme, die dadurch entstehen, weil etwas übersehen wurde. Daher kann es passieren, dass durch die Auswahl von Ereignissen zum Zeitpunkt des Entwurfs die Leistungsüberwachung auf jene Ereignisse beschränkt wird, die im Lichte des tatsächlichen Verhaltens des Computersystems für den Systemdesigner in keiner Weise von Interesse sind.
  • Somit ist es wünschenswert, über ein Verfahren und eine Vorrichtung zum Zählen von Ereignissignalen zu verfügen, die es dem Systembenutzer ermöglichen, bei laufendem Betrieb eines Anwendungsprogramms zu spezifizieren, welche Ereignissignale gezählt werden sollen.
  • In dem Fachartikel "Logik fordert heraus. Anforderungsprofil für moderne Logik-Analysatoren", Elektronik, Bd. 43, Nr. 18, S. 116–120, wird ein Logikanalysator zum Abtasten von Signalen an externen Bus-, Signal-, und Steuerleitungen eines Mikroprozessor-Chips beschrieben.
  • Im technischen Veröffentlichungsbericht von IBM (IBM Technical Disclosure Bulletin), Bd. 34, Nr. 4A, September 1991, "Internal performance measurement counters" (Interne Zähler zur Leistungsmessung) wird ein Hardware/Mikrocode-Hybridzählersystem zum Sammeln von Ereigniszählungen in internen Hardwarezählern und zum anschliessenden Einsatz von Mikrocode, um diese Zählungen in den Hauptspeicher zu akkumulieren, beschrieben.
  • ZUSAMMENFASSUNG DER ERFINGUNG
  • Die vorliegende Erfindung besteht grob gesprochen in einer Vorrichtung und einem entsprechenden Verfahren zum Zählen von Ereignissignalen, welche von einem Computersystem generiert werden, wie in Anspruch 1 bzw. 14 dargestellt. Wie beschrieben, erhöht die erfindungsgemässe Vorrichtung die Funktionalität von Leistungszählern durch die Verwendung von programmierbarer Logik. Mittels der programmierbaren Logik ist es dem Systembenutzer möglich, bei laufendem Betrieb eines Anwendungsprogramms zu spezifizieren, welche Ereignissignale gezählt werden sollen.
  • Eine Ausführungsform der Erfindung schafft Flexibilität bezüglich der Arten von Ereignissen, die gezählt werden können; sie ist imstande, aus Kombinationen von Ereignissignalen, welche vom Computersystem generiert werden, neue Ereignissignale zu generieren. Diese Kombinationen lassen sich während des Betriebs des Computersystems dynamisch bestimmen.
  • Ein weiterer Zweck hierbei ist die Fähigkeit, das mehrfache, zeitgleiche Auftreten eines Ereignistyps in einem einzigen Zähler zu zählen.
  • Eine bevorzugte Ausführungsform der offenbarten Vorrichtung beinhaltet eine Einrichtung zum Auswählen einer Teilmenge von Ereignissignalen aus einer von einem Computersystem generierten Menge von Ereignissignalen, und eine Einrichtung zum Kombinieren der ausgewählten Teilmenge von Ereignissignalen, um daraus ein neues Ereignissignal zu generieren, welches gezählt werden kann.
  • Wie weiter unten beschrieben, ist die Auswahleinrichtung dynamisch konfigurierbar. Eine neue Teilmenge von Ereignissignalen kann während des Betriebs des Computersystems aus der von dem Computersystem generierten Menge von Ereignissignalen ausgewählt werden.
  • Vorzugsweise beinhaltet die ausgewählte Teilmenge an Ereignissignalen ein erstes Ereignissignal und ein zweites Ereignissignal. Die Kombiniereinrichtung generiert das neue Ereignissignal, wenn das Computersystem das erste Ereignissignal und das zweite Ereignissignal während eines einzelnen Taktzyklus generiert.
  • Vorteilhafterweise treten das erste Ereignissignal und das zweite Ereignissignal zeitgleich miteinander auf, wobei jedes das Eintreten eines bestimmten Ereignisses anzeigt. Die Kombiniereinrichtung kombiniert das erste Ereignissignal und das zweite Ereignissignal, so dass jedes zeitgleiche Eintreten des bestimmten Ereignisses während eines einzelnen Taktzyklus in einem Zähler gezählt werden kann.
  • In einer modifizierten Ausführungsform treten das erste Ereignissignal und das zweite Ereignissignal in unterschiedlichen Taktzyklen auf, und die Kombiniereinrichtung generiert das neue Ereignissignal wenn das Computersystem das zweite Ereignissignal nach dem Generieren des ersten Ereignissignals generiert.
  • Gemäss einem bevorzugten, offenbarten Verfahren, wird durch die Erfindung eine Teilmenge von Ereignissignalen aus einer von einem Computersystem generierten Menge von Ereignissignalen ausgewählt, und wird die ausgewählte Teilmenge von Ereignissignalen kombiniert, um daraus ein neues Ereignissignal zu generieren, welches gezählt werden kann.
  • Vorzugsweise wird durch das Verfahren bei laufendem Betrieb des Computersystems dynamisch eine neue Teilmenge von Ereignissignalen aus der von dem Computersystem generierten Menge von Ereignissignalen ausgewählt.
  • Vorteilhafterweise wird durch das Verfahren aus der ausgewählten Teilmenge von Ereignissignalen eine Mehrzahl neuer Ereignissignale generiert und eines der neuen Ereignissignale zur Zählung ausgewählt.
  • In einer modifizierten Ausführungsform wird durch das Verfahren bei laufendem Betrieb des Computersystems dynamisch aus den neuen Ereignissignalen ein anderes Ereignissignal zur Zählung ausgewählt.
  • KURZBESCHREIBUNG DER ZEICHUNGEN
  • Ein genaueres Verständnis der Erfindung kann aus der nachfolgenden Beschreibung einer bevorzugten Ausführungsform gewonnen werden, welche beispielhaften Charakter hat und unter Bezugnahme auf die beigefügten Zeichnungen zu verstehen ist, in denen:
  • 1 ein Blockdiagramm eines Computersystems mit Leistungszählereinheiten darstellt, welche unter Anwendung der erfindungsgemässen Prinzipien Ereignissignale zählen;
  • 2 ein Blockdiagramm eines der Leistungszählereinheiten aus 1 mit programmierbarem logischem Schaltungsaufbau darstellt;
  • 3 ein Blockdiagramm des beispielhaften, programmierbaren logischen Schaltungsaufbaus aus 2 mit einem Generator für kombinierte Ereignisse, einem Generator für Speichersteuerungsereignisse, einem Generator für Mehrfachereignisse, und einem Generator für Folgeereignisse darstellt;
  • 4 ein Blockdiagramm eines beispielhaften Generators für kombinierte Ereignisse aus 3 darstellt;
  • 5 ein Blockdiagramm eines beispielhaften Gruppenereignisgenerators des Generators für Speichersteuerungsereignisse aus 3 darstellt;
  • 6 ein Blockdiagramm des beispielhaften Generators für Mehrfachereignisse aus 3 darstellt; und
  • 7 ein Blockdiagramm eines beispielhaften Generators für Folgeereignisse aus 3 darstellt.
  • DETAILLIERTE BESCHREIBUNG EINER BEVORZUGTEN AUSFÜHRUNGSFORM
  • 1 zeigt ein Computersystem 100, welches über Signalleitungen 112 mit Leistungszählereinheiten 110, 111 verbunden ist. Über die Signalleitungen 112 werden Ereignissignale übertragen, die während des Betriebs des Computersystems 100 generiert werden. Solche Ereignissignale 112 werden zur Leistungsüberwachung des Systems 100 unter Verwendung der erfindungsgemässen Prinzipien herangezogen.
  • Das Computersystem 100 beinhaltet einen Prozessor 102, Speichersteuerungen 104 und ein Speicher-Subsystem 106. Der Prozessor 102 ist durch die Speichersteuerungen 104 über einen Speicherbus 114 mit dem Speicher-Subsystem 106 verbunden. Bei dem Computersystem 100 kann es sich um verschiedene Computersystemtypen, wie zum Beispiel eingebettete Systeme, einen Personalcomputer, eine Workstation, oder einen Grossrechner handeln.
  • In einer bevorzugten Ausführungsform handelt es sich bei dem Prozessor 112 um ein Gerät mit Grafik-Wiedergabemöglichkeit, aber die erfindungsgemässen Prinzipien können auch mit modernen Mikroprozessoreinrichtungen mit integrierter Schaltungstechnik, die entweder über eine CISC- oder eine RISC-Architektur verfügen, realisiert werden. Der Prozessor 102, die Speichersteuerungen 104 und die Lei stungszählereinheiten 110, 111 werden auf einem einzelnen Bauelement mit integriertem Schaltkreis (IC) implementiert.
  • Die Speichersteuerungen 104 steuern den Zugriff zu den in dem Speicher-Subsystem 106 abgespeicherten Daten. Der Prozessor 102 kann bis zu acht Speichersteuerungen 104 aufweisen, welche zum Beispiel in einer von zwei Gruppen organisiert sein können. Für die Zwecke der nachfolgenden Beschreibung werden die acht Speichersteuerungen von 0 bis 7 durchnumeriert. Wie weiter unten in Verbindung mit 2 beschrieben, kann eine solche Gruppierung von dem Benutzer des Systems 100 während der Ausführung eines Anwendungsprogramms dynamisch konfiguriert werden. Als dynamisch wird diese Konfigurierung deswegen bezeichnet, weil sie bei laufendem Betrieb des Computersystems 100 erfolgt.
  • Andere Ausführungsformen können mit weniger oder mehr als zwei Ereigniszählereinheiten 110, 111 und acht Speichersteuerungen 104 arbeiten. Es können auch weniger oder mehr als die zwei Gruppen von Speichersteuerungen 104 vorhanden sein.
  • Das Speicher-Subsystem 106 beinhaltet Speicher 108, welche über verschiedene Attribute verfügen, wie zum Beispiel statische, dynamische, Direktzugriff-, flüchtige und dauerhafte Speicherelemente. Bei den Speicherelementen kann es sich zum Beispiel um Register oder um Speicherzellen handeln. Die Speicher können verschiedenartig, zum Beispiel in einer Cache-Hierarchie oder in einer Speichermatrix, organisiert sein. Die Busse 114 können als eine Vielzahl von Signalleitungen zur Übertragung von Adress-, Daten- und Steuersignalen implementiert sein.
  • Die Leistungszählereinheit 110 ist ein repräsentatives Beispiel für jede in dem Computersystem 100 vorhandene Einheit 110, 111. Die Leistungszählereinheit 110 empfängt dieselbe Menge an Ereignissignalen 112 wie die Leistungszählereinheit 111. Die Leistungszählereinheit 110 beinhaltet einen Ereignissignalselektor 120, einen Ereignissignal-Kombinator 130 und -Zähler 140. Der Ereignissignalselektor 120 empfängt Ereignissignale 112 von dem Computersystem 100 und gibt Signale 122 an den Ereignissignal-Kombinator 130 aus. Der Ereignissignal-Kombinator 130 ist über die Signale 132 mit dem Zähler 140 verkoppelt. Der Zähler 140 ist über Lese-Schreib-Datenleitungen (R/W) 142 und Interrupt-Leitungen 144 mit dem Computersystem 100 verbunden.
  • Während des Betriebs des Computersystems 100 führt der Prozessor 102 Befehle eines Anwendungsprogramms aus. Eine während der Befehlsausführung durch den Prozessor 102 erfolgende Analyse des Verhaltens des Computersystems 100 kann nützliche Einsichten hinsichtlich der Auslegungsgrenzen, Schwachstellen und Eigenschaften des Computersystems 100 und des Prozessors 102 selbst liefern. Systemdesigner bestimmen vorab, welche Arten von Systembedingungen überwachenswert sein könnten und entwerfen das Computersystem 100 entsprechend, so dass dieses dann Ereignissignale 112 auslöst, wenn die betreffenden Bedingungen eintreten. Beispiele für Betriebsbedingungen, die ein Ereignissignal 122 auslösen können, werden weiter unten in Verbindung mit 2 und den TABELLEN A, B, C und D beschrieben.
  • Verschiedene Komponenten in dem Computersystem 100, darunter zum Beispiel die Speichersteuerungen 104, sind in der Lage, Ereignissignale 112 zu erzeugen. Die Ereignistypen, die signalisiert werden können, sind von der signalgebenden Komponente abhängig.
  • Wenn eine bestimmte Bedingung ein Ereignissignal 112 auslöst, generiert das Computersystem 100 ein H-Signal ("1") an der entsprechenden Ereignissignalleitung 112. Wenn diese bestimmte Bedingung während eines System-Taktzyklus nicht eintritt, so gibt das System 100 ein L-Signal ("0") aus.
  • Die Leistungszählereinheit 110 empfängt eine gewisse Menge von Ereignissignalen 112, die von dem Computersystem 100 während eines jeden System-Taktzyklus generiert werden. Jede andere Leistungszählereinheit 111 empfängt dieselbe Menge von Ereignissignalen 112 wie die Leistungszählereinheit 110. Der Ereignissignalselektor 120 wählt eine Teilmenge von Ereignissignalen 122 aus der von dem Computersystem 100 generierten Menge von Ereignissignalen 112 aus. Ein Benutzer des Systems 100 kann den Ereignissignalselektor 120 bei laufendem Betrieb des Systems 100 dynamisch konfigurieren, so dass dieser eine Teilmenge von null, einem oder mehreren Ereignissignalen 122 aus der von dem Computersystem 100 generierten Menge 112 auswählt.
  • Der Ereignissignal-Kombinator 130 empfängt die Ereignissignale 122 der durch den Ereignissignalselektor 120 ausgewählten Teilmenge und kombiniert diese Signale 122 entsprechend, um daraus neue Ereignissignale 132 zu erzeugen, die dem Zähler 140 hinzugefügt werden können. Ein mit den neuen Ereignissignalen 132 vereinigtes, akkumuliertes Zählergebnis wird im Zähler 140 gehalten. Der Zähler 140 gibt auf der Interrupt-Leitung 144 ein Unterbrechungssignal aus, wenn die akkumulierte Zählung die Kapazität des Zählers 140 überschreitet. Der Prozessor 102 kann den Zähler 140 in periodischen Abständen über R/W-Datenleitungen 142 abfragen, um eine fortlaufende Analyse der Leistung des Computersystems 100 in Bezug auf das neue Ereignissignal 132 zu erhalten. Der Prozessor 102 kann den Zähler 140 auch beschreiben, um zum Beispiel den Zähler 140 auf einen Vorgabewert voreinzustellen.
  • 2 zeigt die Leistungszählereinheit 200 als repräsentatives Beispiel für jede in dem Computersystem 100 vorhandene Einheit 110, 111. Ereignissignale 112 werden einer jeden Leistungszählereinheit 110, 111 zugeführt.
  • Das Senden derselben Menge von Ereignissen an jede Leistungszählereinheit 110, 111 stellt eine Abweichung gegenüber Leistungszählereinrichtungen nach dem Stand der Technik dar. Bei Einrichtungen nach dem Stand der Technik werden üblicherweise alle zusammengehörigen Ereignisse an einen Zähler gesendet, d. h. alle speicherbezogenen Ereignisse gingen an einen Zähler, alle befehlsbezogenen Ereignisse an einen anderen Zähler, usw. Dann wurde eines der verwandten Ereignisse zur Zählung ausgewählt. Das Problem dabei lag darin, dass es bei solchen Einrichtungen nicht möglich war, innerhalb einer einzigen Ausführung eines Anwendungsprogramms Vergleiche zwischen verwandten Ereignissen anzustellen.
  • Es besteht jedoch Bedarf an Ereigniszählermechanismen, welche Vergleiche zwischen verwandten Ereignissen erlauben. Ein Beispiel: es könnte nützlich sein, nicht nur Cachefehlgriffe zu zählen, sondern auch zu bestimmen, welcher Prozentanteil dieser Cachefehlgriffe durch Ladebefehle verursacht wurde. Wenn Ereignissignale sowohl für Cachefehlgriffe als auch für Ladefehlgriffe an denselben Zähler ge sendet werden, so kann während einer gegebenen Ausführung einer Anwendung jeweils immer nur eines von beiden, Cachefehlgriffe oder Ladefehlgriffe, gezählt werden. Wenn jedoch die Ereignissignale für Cachefehlgriffe und für Ladefehlgriffe beide an jede Leistungszählereinheit 110, 111 gesendet werden, wie dies bei der bevorzugten Ausführungsform möglich ist, dann können Cachefehlgriffe von einer Einheit 110 und Ladefehlgriffe von der anderen Einheit 111 gezählt werden. Der Prozessor ist dann in der Lage, nach einer einzelnen Ausführung der Programmanwendung den Anteil der durch Ladebefehle bedingten Cachefehlgriffe zu bestimmen. Dies ist mit den Einrichtungen nach dem Stand der Technik schwierig zu bewerkstelligen.
  • Wie hier beschrieben, beinhaltet die Leistungszählereinheit 200 einen Leistungszähler 202, ein Zählereignisregister 240, ein Zählsteuerungsregister 250 und einen programmierbaren logischen Schaltungsaufbau 300. Der Leistungszähler 202 beinhaltet ein Zählergebnisregister 210, das mit einem Addierer 220 verbunden ist, mit welchem ein akkumulierter Zählstand in dem Zählergebnisregister 210 inkrementiert werden kann. Dieser Zählstand wird mit neuen Ereignissignalen 132 vereint, die nach den erfindungsgemässen Prinzipien generiert werden. Der Prozessor 102 kann über R/W-Datenleitungen 142 das Zählergebnisregister 210 auslesen bzw. dieses auch beschreiben. Das Zählergebnisregister 210 ist über die Überlaufleitung 214 mit dem programmierbaren logischen Schaltungsaufbau 300 verbunden. Der programmierbare logische Schaltungsaufbau 300 kann bei Eintreten gewisser Zählstände oder Bedingungen, wie etwa bei Überlaufen des Zählergebnisregisters 210, den Prozessor 102 über die Interrupt-Leitung 144 unterbrechen.
  • Die bevorzugte Ausführungsform verwendet ein Zählergebnisregister 210 mit vierundsechzig Bit. Die Grösse von vierundsechzig Bit des Zählergebnisregisters 210 ermöglicht umfangreiche Zählvorgänge (2^64) ohne überzulaufen, wodurch die Häufigkeit, mit welcher der Prozessor 102 das Zählergebnisregister 210 auslesen muss, im Vergleich zu einem kleineren Zähler herabgesetzt werden kann.
  • Der Addierer 220 beinhaltet zwei Eingänge und einen Ausgang: ein Eingang ist zum Empfangen des aktuellen Zählstands des Zählergebnisregisters 210 bestimmt, und der andere Eingang ist zum Empfangen eines über Signalleitungen 222 von dem programmierbaren logischen Schaltungsaufbau 300 kommenden Inkrementierungswerts (INKR-WERT) bestimmt. Der Ausgangswert des Addierers 220, welcher die Summe der Werte der Signalleitungen 222 und 224 darstellt, wird an das Zählergebnisregister 210 rückgeführt. Der Inkrementierungswert (INKR-WERT) 222 bestimmt den Betrag, um welchen der in dem Zählergebnisregister 210 abgespeicherte, aktuelle Zählstand erhöht wird. Dieser Betrag kann grösser als eins sein.
  • In einer bevorzugten Ausführungsform wird durch das Zusammenwirken der Einstellungen des Zählereegnisregisters 240 und des Zählsteuerungsregisters 250 bestimmt, ob und um welchen Betrag der Leistungszähler 202 inkrementiert wird. Derlei Einstellungen können während der Ausführungszeit eines Anwendungsprogramms geregelt werden. Durch das Schreiben einer '1' an bestimmte Bitstellen in dem Zählereignisregister 240 und dem Zählsteuerungsregister 250 werden Ereignisse und Funktionen, welche diesen Bits entsprechen, ausgewählt, wie weiter unten in den TABELLEN A, B, C und D gezeigt.
  • Das Zählereignisregister 240 ist über Signalleitungen 242 mit dem programmierbaren logischen Schaltungsaufbau 300 verbunden und spezifiziert im allgemeinen die auszuwählende Teilmenge an Ereignissignalen 122. Es besteht die Möglichkeit, null, ein, oder mehrere Ereignisse gleichzeitig auszuwählen. Ein Benutzer des Systems 100 kann während der Ausführung eines Anwendungsprogramms das Zählereignisregister 240 dynamisch konfigurieren. Der Prozessor 102 hat über die Signalleitungen 244 Lese- und Schreibzugriff auf das Zählereignisregister 240.
  • Wie beschrieben, verfügt das Zählereignisregister 240 über 64 Bit. Die Bits entsprechen bestimmten, von dem Computersystem 100 generierten Ereignissignalen 112. Für jedes Ereignissignal 112 existiert in dem Zählereignisregister 240 mindestens ein Bit, welches mit diesem Ereignissignal verknüpft ist. Wird ein Bit auf den Wert "1" eingestellt, so ist das entsprechende Ereignissignal ausgewählt. Wie weiter unten gezeigt, können mehrere Bits verwendet werden, um ein bestimmtes Ereignissignal auszuwählen. Die TABELLE A zeigt die Entsprechungen zwischen den Bits des Zählereignisregisters 240 und Ereignissignalen 112, welche von dem Computersystem 100 generiert werden.
  • Wie in TABELLE A gezeigt, werden die ersten acht Bits 7:0 dazu verwendet, um eine jede von acht Speichersteuerungen in eine von zwei Gruppen einzuordnen. So entspricht etwa Bit 7 der Speichersteuerung #7, Bit 6 der Speichersteuerung #6 und so weiter. Wenn also die Bits 7:0 zum Beispiel als [0000 00102] geschrieben werden, so befinden sich alle Speichersteuerungen mit Ausnahme der Speichersteuerung #1 in Gruppe 0 (Siehe TABELLE A). Die Fähigkeit der Gruppierung von Speichersteuerungen ermöglicht es dem Benutzer des Systems 100, das Verhalten einer bestimmten Speichersteuerung zu isolieren oder das kollektive Verhalten mehrerer Steuerungen gleichzeitig zu überwachen. Da sich das Zählereignisregister 240 dynamisch programmieren lässt, kann eine beliebige Gruppierung der Speichersteuerungen auch jederzeit nach dem Beginn der Ausführung eines Anwendungsprogramms erfolgen.
  • Die Bits 23:8 werden verwendet, um Speichersteuerungsereignisse auszuwählen. Die Bits 15:8 bestimmen, welche der von den Speichersteuerungen der Gruppe 0 ausgelösten Ereignissignale ausgewählt werden. Die Bits 23:16 sind in ähnlicher Weise für die Speichersteuerungen der Gruppe 1 zuständig. In einer bevorzugten Ausführungsform sind vier Ereignistypen definiert: Speicherwarteschlange, Speicherzustand, Lesewarteschlange und Speicherfunktion. Zwei Bits werden verwendet, um ein Ereignis innerhalb eines Ereignistyps zur Leistungsüberwachung auszuwählen. Wenn zum Beispiel die Bits 15:8 des Zählereignisregisters 240 auf [0000 01002] gestellt sind, so ist das Ereignis 'SPEICHERZUSTAND INAKTIV' für die Speichersteuerungen der Gruppe 0 ausgewählt (Siehe die TABELLEN A und B). TABELLE B zeigt die Entsprechungen zwischen den Werten der Bits 23:8 und den ausgewählten Speichersteuerungsereignissen.
  • Mit den Bits 63:24 können andere Ereignistypen des Computersystems 100 ausgewählt werden. Als Beispiele für solche Ereignisse, deren Zählung von Nutzen ist, sind unter anderem Ereignisse zu nennen, welche auf den Zuständen verschiedener Warteschlangen in dem Computersystem 100 basieren. Andere Ereignisse können unter anderem auch den Zustand bestimmter Komponenten des Computersystems 100, wie zum Beispiel einer Busschnittstellenlogik oder eines Befehls-Parsers oder einer DMA(Direkt-Speicher)-Zugriffssteuerung betreffen und anzeigen, ob die betreffenden Komponenten aktiv oder ruhend sind.
  • TABELLE A
    Figure 00160001
  • TABELLE B
    Figure 00160002
  • Figure 00170001
  • Das Zählsteuerungsregister 250 ist über die Signalleitungen 252 mit dem programmierbaren logischen Schaltungsaufbau 300 verbunden. In der bevorzugten Ausführungsform verfügt das Zählsteuerungsregister 250 über acht Bit. Die Inhalte des Zählsteuerungsregisters 250 bestimmen, ob der Leistungszähler 202 für den Zählvorgang aktiviert ist. Wenn der Lei stungszähler 202 aktiviert ist, bestimmt das Zählsteuerungsregister 250, welche Bedingungen den Leistungszähler 202 inkrementieren und welche Operationen gegebenenfalls bei einem Überlauf des Zählers 202 ausgeführt werden.
  • Ein Benutzer des Computersystems 100 kann das Zählsteuerungsregister 250 während des Betriebs des Systems 100 dynamisch konfigurieren. Der Prozessor 102 hat über die Signalleitungen 254 Lese- und Schreibzugriff auf das Zählsteuerungsregister 250. Der Zustand der acht Bits bestimmt, welche Funktion von ausgewählten Ereignissignalen dazu verwendet wird, den Leistungszähler 202 zu inkrementieren. Wenn zum Beispiel die Bits 3:2 des Zählsteuerungsregisters 250 auf 012 gestellt sind, ist der Zählvorgang aktiviert und das Zählergebnisregister 210 inkrementiert um den durch die Bits 7:4 festgelegten Betrag, sofern die durch die Bits 1:0 festgelegten Bedingungen erfüllt sind. TABELLE C zeigt beispielhaft Entsprechungen zwischen den acht Bits und ausgewählten Funktionen. TABELLE D zeigt eine beispielhafte Entsprechung zwischen den Bits 7:4 und dem Betrag, welcher zu dem Zählergebnisregister 210 hinzugefügt werden kann.
  • TABELLE C
    Figure 00180001
  • Figure 00190001
  • TABELLE D
    Figure 00190002
  • Figure 00200001
  • Die Ereignissignale 112 werden dem programmierbaren logischen Schaltungsaufbau 300 bereitgestellt. Der programmierbare logische Schaltungsaufbau 300 empfängt über Signalleitungen 242 auch die Bitwerte des Zählereignisregisters 240. Die Signale 242 entsprechen den Bits 63:0 des Zählereignisregisters 240. Die Signalleitungen 252 übermitteln die Bitwerte des Zählsteuerungsregisters 250 an den programmierbaren logischen Schaltungsaufbau 300. Das Konfigurieren des programmierbaren logischen Schaltungsaufbaus 300 umfasst die Programmierung des Zählereignisregisters 240 und des Zählsteuerungsregisters 250.
  • Der programmierbare logische Schaltungsaufbau 300 ist über die Signalleitung 222 mit dem Rddierer 220 verbunden. Wie weiter unten in 6 beschrieben, ist der programmierbare logische Schaltungsaufbau 300 der bevorzugten Ausführungsform in der Lage, innerhalb eines einzigen Taktzyklus des Systems 100 einen in einem Bereich von 0 bis 8 gelegenen, Inkrementierungswert (INKR-WERT) 222 zu erzeugen. Leistungszählereinrichtungen nach dem Stand der Technik können innerhalb eines Taktzyklus jeweils immer nur um eins inkrementieren. Die erfindungsgemässen Prinzipien können sich auf grössere oder geringre Wertebereiche für den INKR-WERT 222 erstrecken.
  • 3 zeigt den beispielhaften, programmierbaren logischen Schaltungsaufbau aus 2 mit einem Interrupt-Schaltungsaufbau 302, einem Generator für kombinierte Ereignisse 400, einem Generator für Speichersteuerungsereignisse 500, einem Generator für Mehrfachereignisse 600, und einem Generator für Folgeereignisse 700. Die Ereignissignale 112 werden zu jedem der Ereignisgeneratoren 400, 500, 600 und 700 übertragen. Die Ereignisgeneratoren 400 und 600 sind jeweils durch Signalleitungen 252 mit dem Zählsteuerungsregister 250 verbunden, und die Ereignisgeneratoren 400, 500 und 700 sind jeweils durch Signalleitungen 242 mit den Zählereignisregister 240 verbunden.
  • Der Interrupt-Schaltungsaufbau 302 empfängt das Überlaufsignal 214 von dem Zählergebnisregister 210. Der Interrupt-Schaltungsaufbau 302 empfängt des weiteren die Bits 3:2 von dem Zählsteuerungsregister 250. Gemäss TABELLE C gibt der Interrupt-Schaltungsaufbau 302 beim Überlaufen des Zählergebnisregisters 210 ein Interrupt 144 aus, wenn die Bits 3:2 entweder 102 oder 112 betragen.
  • Der Generator für Speichersteuerungsereignisse 500 beinhaltet zum Beispiel zwei Gruppenereignisgeneratoren 501, 502. Der Gruppenereignisgenerator 501 entspricht jenen Speichersteuerungen 104, welche als der Gruppe 0 zugehörig konfiguriert sind, und der Gruppenereignisgenerator 502 entspricht den anderen Speichersteuerungen 104, welche als der Gruppe 1 zugehörig konfiguriert sind. Jeder Gruppenereignisgenerator 501, 502 ist mit dem Generator für kombinierte Ereignisse 400 verbunden: der Gruppenereignisgenerator 501 über die Signalleitung 310; und der Gruppenereignisgenerator 502 über die Signalleitung 311.
  • Der Generator für Folgeereignisse 700 ist über die Signalleitung 330 mit dem Generator für kombinierte Ereignisse 400 verbunden. Der Generator für kombinierte Ereignisse 400 kann dem Generator für Mehrfachereignisse 600 über die Signalleitung 320 ein INKR-Signal bereitstellen. Der Generator für Mehrfachereignisse 600 gibt das INKR-WERT-Signal 222 aus, welches dem in 2 dargestellten Addierer zugeführt wird.
  • Die für jeden Ereignisgenerator 400, 500, 600 und 700 spezifische Operation wird weiter unten im Zusammenhang mit den 47 beschrieben. Generell erhöht jeder Ereignisgenerator 400, 500, 600 und 700 die Funktionalität der Leistungszählereinheit 200. Der Generator für kombinierte Ereignisse 400 ermöglicht die Zählung von programmierbaren Ereigniskombinationen; der Generator für Speichersteuerungsereignisse 500 die Zählung verwandter Ereignisse im Rahmen einer einzelnen Ausführung eines Anwendungsprogramms; der Generator für Mehrfachereignisse 600 die Zählung des mehrfachen Auftretens eines Ereignisses innerhalb eines einzelnen System-Taktzyklus; und der Generator für Folgeereignisse 700 die Zählung des Auftretens von Ereignissen, welche in Folgebeziehung zueinander stehen.
  • 4 zeigt den in 3 beispielhaft dargestellten Generator für kombinierte Ereignisse 400 mit einer Anordnung von Busleitungen 410, einem logischer Schaltungsaufbau 420 und einem Multiplexer 430. Die kollektiv als Ereignissignale 402 bezeichneten Ereignissignale 112, 310, 311 und 330 werden der Anordnung von Busleitungen 410 bereitgestellt.
  • Die Anordnung von Busleitungen 410 enthält Eingangsleitungen 411 und Ausgangsleitungen 412. Jedes eingehende Ereig nissignal 402 wird elektrisch an eine einzige der Eingangsleitungen 411 angelegt. Zu Illustrationszwecken werden drei der Eingangsleitungen 413, 414, 415 als jeweils mit zwei Ausgangsleitungen 412 elektrisch verbunden dargestellt. Die Ereignissignale 310, 330 und 417, welche jeweils den Eingangsleitungen 413, 414, 415 entsprechen, werden dem logischen Schaltungsaufbau 420 zugeführt.
  • Der logische Schaltungsaufbau 420 beinhaltet eine beispielhafte Anordnung von UND-Gliedern 422, 450, ODER-Gliedern 432, 440, und NICHT-Gliedern 442, 452, die entsprechend angeordnet sind, um aus den Ereignissignalen 402, die durch die Anordnung 410 dem logischen Schaltungsaufbau 420 bereitgestellt werden, logische Signale 444, 446, 454, 456 zu erzeugen. Es können auch andere Anordnungen verschiedener logischer Glieder verwendet werden, um diese und andere logische Signale zu erzielen. Die Ereignisauswahlsignale 242 und deren Komplemente, die durch die NICHT-Glieder 418 erzeugt werden, werden dem logischen Schaltungsaufbau 420 zugeführt. Ein jedes der Ereignisauswahlsignale 242 entspricht einem der Ereignisse 402 und zeigt an, ob das betreffende Ereignis ausgewählt ist oder nicht.
  • Die UND-Glieder 422 beinhalten für jedes Ereignis 402 ein UND-Glied 424, 426, 428. Jedes UND-Glied 424, 426, 428 ist mit einem der Ereignisse 402 verknüpft und beinhaltet zwei Eingänge: einen ersten Eingang, der das verknüpfte Ereignissignal 402 über eine Ausgangsleitung 412 empfängt; und einen zweiten Eingang, der das dem verknüpften Ereignissignal 402 entsprechende Ereignisauswahlsignal 424 empfängt.
  • Das Ausgangssignal eines jeden UND-Glieds 424, 426, 428 ist mit einem Eingangssignal des ODER-Glieds 440 verknüpft.
  • Jedes UND-Glied 424, 426, 428 liefert die Auswertung Wahr ("1"), wenn das verknüpfte Ereignis zutrifft (d. h. die verknüpfte Ereignissignalleitung 402 wahr ist) und das diesem Ereignis entsprechende Ereignisauswahlsignal 242 wahr ist (d. h. das Ereignis in dem Zählereignisregister 240 ausgewählt ist). Das von den UND-Gliedern 422 und den ODER-Gliedern 440 erzeugte, logische Signal 444 wird als wahr ausgewertet, wenn irgendeines der ausgewählten Ereignisse eintritt. Das logische Signal 444 entspricht der in TABELLE C aufgelisteten ODER-Funktion.
  • Das NICHT-Glied 442 komplementiert das logische Signal 444, um das logische Signal 446 zu erzeugen, welches als wahr ausgewertet wird, wenn alle der ausgewählten Ereignisse nicht zutreffen. Das logische Signal 446 entspricht der in TABELLE C aufgelisteten NOR-Funktion.
  • Die ODER-Glieder 432 beinhalten für jedes Ereignis 402 ein ODER-Glied 434, 436, 438. Jedes ODER-Glied 434, 436, 438 ist mit einem der Ereignisse 402 verknüpft und beinhaltet zwei Eingänge: einen ersten Eingang, der das verknüpfte Ereignissignal 402 über eine Ausgangsleitung 412 empfängt; und einen zweiten Eingang, der das Komplement des dem verbundenen Ereignissignal 402 entsprechenden Ereignisauswahlsignals 424 empfängt.
  • Das Ausgangssignal eines jeden ODER-Glieds 434, 436, 438 ist mit einem Eingangssignal des UND-Glieds 450 verkoppelt. Jedes ODER-Glied 434, 436, 438 wird als wahr ("1") ausgewertet, wenn entweder das verknüpfte Ereignis zutrifft (d. h. die verbundene Ereignissignalleitung 402 ein H-Signal anliegen hat) oder das diesem Ereignis entsprechende Er eignisauswahlsignal 242 falsch ist (d. h. das Ereignis nicht ausgewählt ist).
  • Das von den ODER-Gliedern 432 und dem UND-Glied 450 erzeugte, logische Signal 454 wird als wahr ausgewertet, wenn alle der ausgewählten Ereignisse eintreten. Das logische Signal 454 entspricht der in TABELLE C aufgelisteten UND-Funktion. Das NICHT-Glied 452 komplementiert das logische Signal 454, um das logische Signal 456 zu erzeugen, welches als wahr ausgewertet wird, wenn irgendwelche der ausgewählten Ereignisse nicht zutreffen. Das logische Signal 456 entspricht der in TABELLE C aufgelisteten NAND-Funktion.
  • Der Multiplexer 430 ist entsprechend verkoppelt, um die logischen Signale 444, 446, 454, 456 von dem logischen Schaltungsaufbau 420 zu empfangen. Der Multiplexer 430 ist weiterhin entsprechend verkoppelt, um ein von dem Zählsteuerungsregister 250 kommendes Eingangssignal 252 zu empfangen, um sodann zu bestimmen, welches der vier logischen Signale 444, 446, 454, 456 auszuwählen ist.
  • Das Zählereignisregister 240 und das Zählsteuerungsregister 250 können beide während der Ausführung eines Anwendungsprogramms zu jedem Zeitpunkt dynamisch programmiert werden. Demgemäss werden durch die dynamische Programmierung des Zählereignisregisters 240 die UND-Glieder 422 und die ODER-Glieder 432 entsprechend konfiguriert, um während des gesamten Betriebs des Programms Ereignissignale 402 auszuwählen bzw. zu inaktivieren. Wenn zum Beispiel im Zählereignisregister 240 nur das entsprechende Bit auf hoch gesetzt wird, das für die Auswahl des Ereignissignals 310 zuständig ist, so nehmen die Ausgänge des UND-Glieds 424 und des ODER-Glieds 434 auf den Zustand des Ereignissignals 310 Bezug; d. h. wenn das Ereignissignal hoch ist, so sind die Ausgangssignale des UND-Glieds 424 und des ODER-Glieds 434 hoch, und wenn das Ereignissignal niedrig ist, so sind die Ausgangssignale des UND-Glieds 424 und des ODER-Glieds 434 niedrig. Ist das entsprechende Bit auf niedrig gesetzt, so dass das Ereignissignal 310 nicht ausgewählt ist, so stellt das Ausgangssignal des UND-Glieds 424 und das Ausgangssignal des ODER-Glieds 434 keine Funktion des Zustands des Ereignissignals 310 dar.
  • Durch eine Programmierung des Zählsteuerungsregisters 250 kann der Multiplexer 430 dynamisch entsprechend konfiguriert und rekonfiguriert werden, um die Auswahl der logischen Signale 444, 446, 454, 456 zu verändern. Diese dynamische Auswahl von Ereignissignalen und logischen Signalen macht es dem Systembenutzer möglich, die Ereigniszählereinheit 200 bedarfsgerecht anzupassen, um jene Leistungsprobleme einer Bewertung zu unterziehen, die erst nach Inbetriebnahme des Systems 100 zutage treten.
  • Es wird nun der Betrieb des Computersystems 100 unter Bezugnahme auf die 24 beschrieben. Nur zu Illustrationszwecken wird während der Ausführungszeit eines Anwendungsprogramms das Zählereignisregister 240 mit entsprechenden Inhalten beschrieben, so dass die Ereignissignale 310, 330 und 417 ausgewählt werden. Es sei darauf hingewiesen, dass wenn von dem Zählereignisregister 240 keine Ereignisse ausgewählt werden, die logischen Signale 446 und 454 während eines jeden Taktzyklus als wahr ausgewertet werden. Somit kann entweder das logische Signal 446 oder das logische Signal 454 als eine 'ALWAYS'-Zählfunktion eingesetzt werden, die in jedem Taktzyklus ein Signal 320 senden, um den Leistungszähler 202 zu inkrementieren.
  • Während eines jeden System-Taktzyklus werden die vier logischen Signale 444, 446, 454, 456 auf Ereignissignale 310, 330 und 417 hin ausgewertet. Das logische Signal 444 wird als wahr ausgewertet, wenn irgendeines der ausgewählten Ereignisse 310, 330, und 417 zutrifft; das logische Signal 446 wird als wahr ausgewertet, wenn alle der ausgewählten Ereignisse 310, 330 und 417 nicht zutreffen; das logische Signal 454 wird als wahr ausgewertet, wenn alle der gewählten Ereignisse 310, 330 und 417 zutreffen; und das logische Signal 456 wird als wahr ausgewertet, wenn irgendeines der ausgewählten Ereignisse 310, 330, 417 nicht zutrifft.
  • Ebenfalls während der Ausführungszeit schreibt der Prozessor 102 in das Zählsteuerungsregister 250, um die Operation des Zählens von Ereignissen zu steuern. Das Schreiben von 012 auf Bits 3:2 des Zählsteuerungsregisters 250 aktiviert den Zählvorgang. Durch den Inhalt der Bits 1:0 des Zählsteuerungsregisters 250 wird bestimmt, welches der logischen Signale 444, 446, 454, 456 für den Zählvorgang ausgewählt wird (siehe TABELLE C weiter oben). Die Bits 1:0 werden zum Treffen der Auswahl über die Signalleitungen 252 an den Multiplexer 430 übertragen.
  • Für jeden Taktzyklus, in welchem das ausgewählte logische Signal als wahr ausgewertet wird, gibt der Multiplexer 430 ein Wahr-Signal ("1") an die Signalleitung 320 aus, wodurch der Leistungszähler zur Inkrementierung angewiesen wird.
  • 5 zeigt den beispielhaften Gruppenereignisgenerator 501 des Generators für Speichersteuerungsereignisse 500 aus 3. Wie weiter oben beschrieben, sind die Speichersteuerungen 104 als beispielsweise entweder der Gruppe 0 oder der Gruppe 1 zugehörig organisiert. Jede Speichers teuerung 104 einer bestimmten Gruppe wird in derselben Art überwacht. Ereignissignale, welche für irgendeine Speichersteuerung 104 in einer bestimmten Gruppe zur Überwachung ausgewählt sind, sind auch für alle anderen dieser bestimmten Gruppe zugehörigen Speichersteuerungen 104 ausgewählt.
  • Der Gruppenereignisgenerator 501 kombiniert die ausgewählten Ereignisse der in Gruppe 0 vertretenen Speichersteuerungen 104, und der Gruppenereignisgenerator 502 kombiniert die ausgewählten Ereignisse der in Gruppe 1 vertretenen Speichersteuerungen 104. Sofern nicht anders angegeben, steht der Gruppenereignisgenerator 501 stellvertretend für jeden Gruppenereignisgenerator 501, 502 des Generators für Speichersteuerungsereignisse 500.
  • Die Bits 7:0 des Zählereignisregisters 240 gehen an jeden Gruppenereignisgenerator 501, 502. Die Speichersteuerungen 104 können durch Programmieren der Bits 7:0 entweder der Gruppe 0 oder der Gruppe 1 zugeordnet werden (siehe TABELLE A). Die Bits 7:0 können zu jedem beliebigen Zeitpunkt während der Ausführung eines Anwendungsprogramms programmiert werden. Somit ist die Gruppenzuordnung der Speichersteuerungen 104 dynamisch konfigurierbar.
  • Der Gruppenereignisgenerator 501 beinhaltet die Ereignisselektoren 503-A, 503-B, 503-C, eine Anordnung von Busleitungen 510, einen logischen Schaltungsaufbau 520 und einen Ausgangsmultiplexer 530. Für jede der Speichersteuerungen 104 ist in dem Computersystem 100 ein Ereignisselektor 503-A, 503-B, 503-C vorhanden. In 5 entspricht zum Beispiel der Ereignisselektor 503-A der Speichersteuerung #0, der Ereignisselektor 503-B der Speichersteuerung #1, und der Ereignisselektor 503-C der Speichersteuerung #7.
  • Jeder Ereignisselektor 503-A, 503-B, 503-C beinhaltet Eingangsmultiplexer 504-A, 504-B, 504-C, ein ODER-Glied 505, ein UND-Glied 506 und ein NICHT-Glied 507. (Für den Gruppenereignisgenerator 502 ist kein NICHT-Glied 507 vorgesehen.) Jede Speichersteuerung 104 liefert Ereignissignale 112 an die Eingangsmultiplexer 504-A, 504-B, 504-C des jeweils entsprechenden Ereignisselektors 503-A, 503-B, 503-C. Die Eingangsmultiplexer 504-A, 504-B, 504-C empfangen jeweils eine Teilmenge 112A, 112B, 112C der Ereignissignale 112. Der Multiplexer 504-A empfängt die Teilmenge 112A, der Multiplexer 504-B empfängt die Teilmenge 112B, der Multiplexer 504-C empfängt die Teilmenge 112C.
  • Jede Teilmenge der Ereignissignale 112A, 112B, 112C entspricht einem Typ der in TABELLE B beschriebenen Speichersteuerungsereignisse: die Teilmenge 112A beinhaltet die SPEICHERWARTESCHLANGEN-Ereignisse 'KEINES', 'LEER', 'TEILWEISE' und 'VOLL'; die Teilmenge 112B die SPEICHERZUSTANDSEreignisse 'KEINES', 'INAKTIV', 'OVERHEAD' und 'AKTIV'; und die Teilmenge 112C die LESEWARTESCHLANGEN-Ereignisse 'KEINES', 'LEER', 'TEILWEISE' und 'VOLL'.
  • Jeder Multiplexer 504-A, 504-B, 504-C empfängt Ereignisauswahlsignale 242 von dem Zählereignisregister 240. Von jeder Teilmenge 112A, 112B, 112C der Ereignissignale 112 wird ein Ereignis ausgewählt. Der Gruppenereignisgenerator 501 empfängt die Bits 15:8 des Zählereignisregisters 240, um die Ereignisauswahl der Speichersteuerungen der Gruppe 0 zu steuern (siehe TABELLE A). Die Bits 23:16 des Zählereignisregisters 240 gehen an den Gruppenereignisgenerator 502, der damit die Ereignisauswahl der Speichersteuerungen der Gruppe 1 steuert.
  • Jeder Multiplexer 504-A, 504-B, 504-C empfängt zwei Ereignisauswahlsignale 242. Der Multiplexer 504-A empfängt die Bits 9:8; der Multiplexer 504-B die Bits 11:10, und der Multiplexer 504-C die Bits 13:12. Die ausgewählten Ereignisse werden gemäss der TABELLE B interpretiert (die Bits 13:8 der TABELLE A werden auf die Bits 5:0 der Tabelle B übertragen). Wenn zum Beispiel die Ereignisauswahlsignale 242, die den Bits 13:8 aus TABELLE A entsprechen, 011011 sind, dann zeigen die Bits 5:0 aus TABELLE B an, dass vom Multiplexer 504-A das SPEICHERWARTESCHLANGEN-Ereignis 'VOLL', vom Multiplexer 504-B das SPEICHERZUSTANDS-Ereignis 'OVERHEAD', und vom Multiplexer 504-C das LESEWARTESCHLANGEN-Ereignis 'LEER' ausgewählt ist. Werden keine Speichersteuerungsereignisse gewünscht, so werden die Bits 13:8 aus TABELLE A auf 000000 gesetzt, um bei jedem Multiplexer 504-A, 504-B, 504-C die Ereignisse 'KEINES' auszuwählen.
  • Der Ereignisselektor 503-A des Gruppenereignisgenerators 501 wählt dieselben Speichersteuerungsereignisse aus wie der Ereignisselektor 503-B und der Ereignisselektor 503-C. Für das obige Beispiel würde das bedeuten, dass wenn der Ereignisselektor 503-A das SPEICHERWARTESCHLANGEN-Ereignis 'VOLL', das SPEICHERZUSTANDS-Ereignis 'OVERHEAD', und das LESEWARTESCHLANGEN-Ereignis 'LEER' auswählt, dann auch jeder andere Ereignisselektor 503-B, 503-C diese Ereignisse auswählt. Genauer gesagt wählt der Multiplexer 504-A eines jeden Ereignisselektors 503-A, 503-B, 503-C jeweils das SPEICHERWARTESCHLANGEN-Ereignis 'VOLL' aus, während jeder Multiplexer 504-B das SPEICHERZUSTANDS-Ereignis 'OVERHEAD' auswählt und jeder Multiplexer 504-C das LESEWARTESCHLANGEN-Ereignis 'LEER' auswählt. Demgemäss werden die als einer bestimmten Gruppe zugehörig konfigurierten Speichersteuerungen 104 gemeinsam auf das Auftreten gewisser Ereignisse hin überwacht.
  • Für den Ereignisselektor 503-A stellen die Ausgangssignale der Multiplexer 504-A, 504-B, 504-C die ausgewählten Ereignisse einer bestimmten Speichersteuerung dar. Diese Ausgangssignale werden an das ODER-Glied 505 angelegt. Das Auftreten irgendeines ausgewählten Ereignisses erzeugt ein H-Signal am Ausgang des ODER-Glieds 505. Das ODER-Glied führt dieses Ausgangssignal einem Eingang des UND-Glieds 506 zu.
  • Das NICHT-Glied 507 liefert ein zweites Eingangssignal für das UND-Glied 506. Eines der Bits 7:0 des Zählereignisregisters 240 wird dem NICHT-Glied 507 eines jeden Ereignisselektors 503-A, 503-B, 503-C zugeführt. So wird zum Beispiel Bit 0 dem Ereignisselektor 503-A zugeführt, Bit 1 dem Ereignisselektor 503-B, und so weiter. Bit 0 zeigt an, ob die Speichersteuerung #0, welche dem Ereignisselektor 503-A entspricht, zur Gruppe 0 oder zur Gruppe 1 gehört (siehe TABELLE A). Befindet sich die Speichersteuerung #0 in Gruppe 0, so wird dem NICHT-Glied 507 eine "0" zugeführt, und das NICHT-Glied 507 gibt eine "1" an das UND-Glied 506 aus. Umgekehrt deaktiviert das NICHT-Glied 507 das UND-Glied 506 durch das Zuführen einer "0", wenn sich die Speichersteuerung #0 in Gruppe 1 befindet (d. h. wenn von dem Zählereignisregister 240 eine "1" an das NICHT-Glied 507 gesendet wird). Das Ausgangssignal 508 des UND-Glieds 506 eines jeden Ereignisselektors 503-A, 503-B, 503-C wird an die Anordnung von Busleitungen 510 geleitet.
  • Im Fall des Gruppenereignisgenerators 502, der über keine NICHT-Glieder 507 verfügt, werden die von dem Zählereignisregister 240 kommenden Bits 7:0 direkt an die UND-Glieder 506 geleitet. Demgemäss wird jedes UND-Glied 506 deaktiviert, wenn das gelieferte Bit anzeigt, dass sich die entsprechende Speichersteuerung in Gruppe 0 befindet, bzw. aktiviert, wenn sich die Speichersteuerung in Gruppe 1 befindet.
  • Die Anordnung von Busleitungen 510 enthält Eingangsleitungen 511 und Ausgangsleitungen 512. Für jeden Ereignisselektor 503-A, 503-B, 503-C ist eine Eingangsleitung 511 vorhanden. Die Ausgänge 508 der Ereignisselektoren 503-A, 503-B, 503-C sind jeweils elektrisch an eine einzelne Leitung der Eingangsleitungen 511 angeschlossen. Jede Eingangsleitung 511 ist mit zwei Ausgangsleitungen 512 verbunden. Die Ausgangsleitungen münden in den logischen Schaltungsaufbau 520. Demgemäss werden die Ausgangssignale 508 der Ereignisselektoren 503-A, 503-B, 503-C zu dem logischen Schaltungsaufbau 520 geleitet.
  • Der logische Schaltungsaufbau 520 beinhaltet eine beispielhafte Anordnung bestehend aus ODER-Gliedern 540, 550, einem UND-Glied 560, und NICHT-Gliedern 522, 564, die entsprechend angeordnet sind, um aus den Ereignissignalen, die dem logischen Schaltungsaufbau 520 durch die Anordnung 510 bereitgestellt werden, logische Signale 522, 524, 532, 534 zu erzeugen. Es können auch andere Anordnungen verschiedener logischer Glieder verwendet werden, um diese Signale 522, 524, 532, 534 sowie verschiedene andere logische Signale zu erzeugen.
  • Das Ausgangssignal eines jeden Ereignisselektors 503-A, 503-B, 503-C wird durch die Anordnung von Busleitungen 510 an einen Eingang des ODER-Glieds 540 angelegt. Das von dem ODER-Glied 540 erzeugte, logische Signal 522 wird als wahr ("1") ausgewertet, wenn irgendeines der Ausgangssignale 508 als wahr ausgewertet wird. Das logische Signal 522 entspricht der ODER-Funktion des in TABELLE B aufgelisteten Ereignistyps 'SPEICHERFUNKTION'.
  • Das NICHT-Glied 562 komplementiert das logische Signal 522, um ein logisches Signal 524 zu erzeugen, welches als wahr ausgewertet wird, wenn keines der Ausgangssignale 508 auftritt. Das logische Signal 524 entspricht der NOR-Funktion des in TABELLE B aufgelisteten Ereignistyps 'SPEICHERFUNKTION'.
  • Die ODER-Glieder 550 beinhalten für jeden Ereignisselektor 503-A, 503-B, 503-C ein ODER-Glied 552, 554, 556. Jedes ODER-Glied 552, 554, 556 ist einem der Ereignisselektoren 503-A, 503-B, 503-C zugeordnet und beinhaltet zwei Eingänge: einen ersten Eingang, der die Ausgangssignale 508 des zugeordneten Ereignisselektors 503-A, 503-B, 503-C empfängt; und einen zweiten Eingang, der eines der Bits 7:0 von dem Zählereignisregister 240 empfängt. Bei dem speziellen Bit, das zu dem zweiten Eingang eines jeden ODER-Glieds 552, 554, 556 gesendet wird, handelt es sich um dasselbe Bit, das zu dem NICHT-Glied 507 des diesem ODER-Glied 552, 554, 556 zugeordneten Ereignisselektors 503-A, 503-B, 503-C gesendet wird.
  • Das Ausgangssignal eines jeden ODER-Glieds 552, 554, 556 ist mit einem Eingangssignal des UND-Glieds 560 verkoppelt. Jedes ODER-Glied 552, 554, 556 wird als wahr ("1") ausge wertet, wenn entweder das zugeordnete Ausgangssignal 508 auftritt, d. h. ein von dem zugeordneten Ereignisselektor 503-A, 503-B, 503-C ausgewähltes Ereignis hoch ist, oder die Speichersteuerung 104, die jenem Bit zugeordnet ist, welches an das betreffende ODER-Glied 552, 554, 556 gesendet wurde, hoch ist, d. h. wenn die Speichersteuerung 104 sich nicht in Gruppe 0 befindet.
  • Das UND-Glied 560 wird als wahr ausgewertet, wenn alle ausgewählten Ausgangssignale 508 wahr sind. Am Ausgang des UND-Glieds 560 wird das logische Signal 532 erzeugt, welches der in TABELLE B aufgelisteten UND-Funktion entspricht.
  • Das NICHT-Glied 564 komplementiert das logische Signal 532, um daraus das logische Signal 534 zu erzeugen. Das logische Signal 534 entspricht der in TABELLE B aufgelisteten NAND-Funktion und wird als wahr ausgewertet, wenn irgendwelche der ausgewählten Ereignisse, die den Ausgangssignalen 508 entsprechen, nicht auftreten.
  • Der Multiplexer 530 ist entsprechend verkoppelt, um die von dem logischen Schaltungsaufbau 520 kommenden, logischen Signale 522, 524, 532 534 und die von dem Zählereignisregister 240 kommenden Ereignisauswahlsignale 242 zu empfangen, um basierend darauf zu bestimmen, welche der vier logischen Signale 522, 524, 532, 534 auszuwählen sind. Die beiden Ereignisauswahlsignale 242, die den Bits 15:14 aus TABELLE A entsprechen (Bits 23:22 für den Gruppenereignisgenerator 502) steuern dabei die Auswahl. (Siehe auch Bits 7:6 aus TABELLE B.) Das ausgewählte logische Signal stellt das für den Generator für kombinierte Ereignisse 400 bestimmte Ausgangssignal 310 dar.
  • Bei dem Ausgangssignal 310 des Gruppenereignisgenerators 501 handelt es sich um ein einzelnes Ereignis, das sich ebenso wie jedes andere Ereignissignal 112 zählen lässt. Das gleiche gilt auch für das Ausgangssignal 311 des Gruppenereignisgenerators 502.
  • Das Zählereignisregister 240 kann zu jedem Zeitpunkt während der Ausführung eines Anwendungsprogramms programmiert werden. Demgemäss kann jeder Eingangsmultiplexer 504-A, 504-B, 504-C entsprechend dynamisch konfiguriert werden, um ein Speichersteuerungsereignissignal auszuwählen, oder um überhaupt kein Signal auszuwählen (d. h. 'KEINES' – siehe TABELLE B). Wenn das Zählereignisregister 240 entsprechend konfiguriert ist, um für alle drei Eingangsmultiplexer 504-A, 504-B, 504-C das Ereignissignal 'KEINES' auszuwählen, so sind alle Eingangssignale an das ODER-Glied 505 niedrig, und somit gibt das UND-Glied 506 ein niedriges Signal aus. Demgemäss erzeugt ein jeder Ereignisselektor 503-A, 503-B, 503-C ein niedriges Ausgangssignal 508.
  • Die Fähigkeit, die Bits 15:14 des Zählereignisregisters 240 dynamisch zu programmieren, ermöglicht es einem Benutzer, den Multiplexer 530 entsprechend zu konfigurieren und zu rekonfigurieren, um die Auswahl der logischen Signale 522, 524, 532, 534 zu jedem Zeitpunkt während der Ausführung eines Programms zu verändern.
  • Der Betrieb des Generators für Speichersteuerungsereignisse 500 wird im beispielhaft unter Bezugnahme auf die folgende praktische Situation beschrieben: der Systembenutzer kann daran interessiert sein, zu bestimmen, wie oft die Warteschlangen einer bestimmten Speichersteuerung voll sind, während die Warteschlange einer anderen Speichersteuerung leer ist. Durch das Einstellen der entsprechenden Bits des Zählereignisregisters 240 wird die spezifische Speichersteuerung der Gruppe 0 zugewiesen und es wird (unter SPEICHERWARTESCHLANGE) das Ereignis 'VOLL' als das für die Gruppe 0 zu überwachende Ereignis ausgewählt.
  • Der Multiplexer 530 des Gruppenereignisgenerators 501 kann entsprechend konfiguriert werden, um entweder das logische UND-Signal 532 oder das logische ODER-Signal 522 auszuwählen, da sich nur diese spezifische Speichersteuerung in Gruppe 0 befindet. Das daraus resultierende Ausgangssignal 310 wird an den Generator für kombinierte Ereignisse 400 weitergeleitet. Das Ausgangssignal 310 ist hoch, wenn die spezifische Speichersteuerung ein Ereignissignal 'VOLL' generiert.
  • Die anderen Speichersteuerungen werden der Gruppe 1 zugewiesen. Das dem Ereignis 'LEER' entsprechende Bit wird in dem Zählereignisregister 240 gesetzt. Der Multiplexer 530 des Gruppenereignisgenerators 502 wird entsprechend konfiguriert, um das logische ODER-Signal 522 auszuwählen. Das Ausgangssignal 311 des Gruppenereignisgenerators 502 wird ebenfalls an den Generator für kombinierte Ereignisse 400 weitergeleitet. Das Ausgangssignal 311 ist hoch, wenn irgendeine der sieben Speichersteuerungen in Gruppe 1 ein Ereignissignal 'LEER' generiert.
  • Der Multiplexer 430 des Generators für kombinierte Ereignisse 400 wird entsprechend konfiguriert, um die UND-Funktion 454 auszuwählen. Der Generator für kombinierte Ereignisse 400 erzeugt dann ein hohes Ausgangssignal 320, wenn sowohl das von dem Gruppenereignisgenerator 501 kommende Ausgangssignal 310 als auch das von dem Gruppenereignisge nerator 502 kommende Ausgangssignal gleichzeitig wahr sind. Jedes Vorkommen eines hohen Ausgangssignals 320 kann dem Zähler 202 hinzugefügt werden. Demgemäss stellt der in dem Zählergebnisregister 210 vorhandene Zählstand dar, wie oft die Warteschlangen einer spezifischen Speichersteuerung voll sind, während eine Warteschlange einer anderen Speichersteuerung leer ist.
  • 6 zeigt den beispielhaften Generator für Mehrfachereignisse 600 aus 3 mit N Multiplexern 610614, einem Addierer 620 mit N Eingängen, und einer AND-Logik 630. Die Multiplexer 610614 entsprechen je einer Komponente in dem Computersystem 100, die in der Lage ist, dieselben Ereignissignale während eines einzelnen Taktzyklus zu erzeugen. In 6 sind M Typen von Ereignissignalen vorhanden, die von einer jeden der in dem System 100 verfügbaren N Komponenten erzeugt werden können. Die acht Speichersteuerungen 104 der bevorzugten Ausführungsform sind Beispiele für solche Komponenten.
  • Jeder Multiplexer 610614 verfügt über einen Eingang für jedes Ereignis, das von der entsprechenden Komponente erzeugt werden kann, und über einen zusätzlichen Eingang zur Zuführung eines Vorgabewerts. Der Vorgabewert für den zusätzlichen Eingang des Multiplexers 610 ist eins. Die zusätzlichen Eingänge für die anderen Multiplexer 612, 614 haben als Vorgabewert null. Der Vorgabewert wird dann ausgewählt, wenn das Zählen mehrfacher Vorkommen eines Ereignisses deaktiviert ist. Das Zählsteuerungsregister 250 liefert ein Signal 252 an jeden Multiplexer 610614, welches die Zählung von Mehrfachvorkommen ermöglicht, wobei jeweils der zu zählende Ereignistyp auszuwählen ist.
  • In der bevorzugten Ausführungsform bestimmen die Bits 7:4 des Zählsteuerungsregisters 250, die in TABELLE C als INC-VALUE bezeichnet werden, welcher Ereignistyp innerhalb eines einzelnen Zyklus auf sein Mehrfachvorkommen hin überwacht wird. Demgemäss kann jeder beliebige der 15 unterschiedlichen Typen (d. h. M = 15) zur Überwachung ausgewählt werden. Ist der INKR-WERT gleich 00002, so ist kein Typ ausgewählt und es wird jeweils der Vorgabewert für das Eingangssignal an jedem Multiplexer 610614 verwendet. Ist der INKR-WERT gleich 00012, so ist der EREIGNIS-Typ #1 für die Zählüberwachung der Mehrfachvorkommen ausgewählt. Die TABELLE D gibt für jeden INKR-WERT eine Beschreibung des Ereignistyps, der im Hinblick auf die Zählung seines Mehrfachvorkommens hin überwacht wird.
  • Jeder Multiplexer 610614 erzeugt ein Ein-Bit-Ausgangssignal. Diese Ausgangssignale werden an den mit N Eingängen versehenen Addierer 620 weitergeleitet. Der mit N Eingängen versehene Addierer 620 erzeugt ein Höchstgrenzen(log2N + 1)-Bit-Ausgangssignal 625, welches an die UND-Logik 630 weitergeleitet wird. Das Ausgangssignal 625 stellt die Anzahl der Multiplexer 610 bis 614 dar, die das ausgewählte Ereignis angegeben haben.
  • Die UND-Logik 630 beinhaltet Höchstgrenzen(log2N + 1)-UND-Glieder 632. Jedes UND-Glied 632 empfängt eines der Bits des Addierer-Ausgangssignals 625, sowie das INKR-Signal 320, welches von dem Generator für kombinierte Ereignisse 400 aus 4 erzeugt wird. Basierend auf dem INKR-Signal 320 und dem Addierer-Ausgangssignal 625 erzeugt die UND-Logik 630 das INKR-WERT-Signal 222, welches zu dem Leistungszähler 202 aus 2 weitergeleitet wird. Das INKR-WERT-Signal 222 gibt die Anzahl der Multiplexer 610614 an, die das ausgewählte Ereignis während eines einzelnen Taktzyklus angezeigt haben.
  • Ein beispielhafter Betrieb des Generators für Mehrfachereignisse 600 wird im Zusammenhang mit der nachfolgenden, beispielhaften Situation gezeigt, bei welcher ein Mikroprozessor 21164 der Digital Equipment Corporation zum Einsatz kommt. Diese Situation zeigt, wie der Generator für Mehrfachereignisse 600 Mehrfachvorkommen eines bestimmten Ereignisses innerhalb eines einzelnen Taktzyklus zu zählen in der Lage ist. In dem vorliegenden Beispiel handelt es sich bei dem bestimmten Ereignis um die Ausgabe eines Befehls. Der Mikroprozessor 21164 von Digital Equipment Corporation arbeitet nach dem Prinzip der Parallelverarbeitung und ist in der Lage, während eines Taktzyklus zwischen 0 und 4 Befehle auszugeben.
  • Um die von einem Mikroprozessor wie dem 21164 während der Ausführung einer Anwendung ausgegebenen Befehle zu zählen, müssten Leistungszählereinrichtungen nach dem Stand der Technik mit fünf Typen von Ereignissignalen arbeiten, einem für jede Anzahl von Befehlen, die während eines Taktzyklus ausgegeben werden können. Dieser Ansatz ist mühsam und erfordert mehrere Ausführungen eines Anwendungsprogramms, wobei in jeder Ausführung ein anderer Ereignissignaltyp überwacht wird. Daraufhin wird aus den Ergebnissen der einzelnen Ausführungen ein Zählergebnis für die insgesamt ausgegebenen Befehle errechnet. Dieses Gesamtzählergebnis kann Ungenauigkeiten aufweisen, da einige Anwendungsprogramme in Echtzeit laufen und zwei aufeinanderfolgende Abläufe solcher Programme unter Umständen nicht immer wiederholbare Ergebnisse liefern. D. h. ein erster Programmablauf kann mehr Ereignisse mit vier in einem Taktzyklus ausgegebenen Befehlen erzeugen als ein zweiter Ablauf, und wenn nun aber das Ereignis mit vier ausgegebenen Befehlen erst anlässlich des zweiten Ablaufs gezählt wird, so kann dies unter Umständen zu einer ungenauen Gesamtzählung führen.
  • Mit dem Generator für Mehrfachereignisse 600 kann mit nur einem Zähler während einer einzigen Ausführung des Anwendungsprogramms das Gesamtzählergebnis der ausgegebenen Befehle ermittelt werden. Jede Komponente, die innerhalb eines Taktzyklus Befehle ausgeben kann, sendet ein Ereignissignal, das zum Beispiel AUSGEGEBENER_BEFEHL genannt wird, an einen der Multiplexer 610614. Sind zum Beispiel vier solcher Komponenten vorhanden, so gibt es vier entsprechende Multiplexer. Jeder Multiplexer empfängt das Ereignissignal 'AUSGEGEBENER_BEFEHL' an demselben Eingang wie jeder andere Multiplexer. Während jedes Taktzyklus sendet jede Komponente, die das Ereignissignal 'AUSGEGEBENER_BEFEHL' aufdrückt, eine "1" an ebendiesen Eingang des entsprechenden Multiplexers.
  • Ferner programmiert der Benutzer des Systems 100 die Bits 7:4, INKR_WERT, des Zählsteuerungsregisters 250 entsprechend, um diesen Eingang zum Empfangen des Signals 'AUSGEGEBENER BEFEHL' auszuwählen. Diese Auswahl bewirkt, dass das Ereignissignal 'AUSGEGEBENER_BEFEHL' an jedem Multiplexer 610614 zu dem Addierer 620 weitergeleitet wird.
  • Der Addierer 620 addiert die Anzahl der aufgedrückten Ereignissignale 'AUSGEGEBENER_BEFEHL' (d. h. der "1"-Werte) und erzeugt ein binäres Ausgangssignal 625, welches die Gesamtzahl darstellt. Diese Gesamtzahl entspricht der Anzahl von Komponenten, die während des aktuellen Taktzyklus einen Befehl ausgegeben haben. Das binäre Ausgangssignal 625 wird über ein UND-Glied mit dem von dem Generator für kombinierte Ereignisse 400 kommenden INKR-Signal 320 zusammengeführt, um den INKR-WERT 222 zu erzeugen. Der Generator für kombinierte Ereignisse 400 kann bei jedem Taktzyklus ein hohes INKR-Signal 320 erzeugen, sofern er gemäss der weiter oben in 4 beschriebenen ALWAYS-Zählfunktion konfiguriert worden ist. Dadurch ist gewährleistet, dass die UND-Logik 630 das binäre Ausgangssignal 625 des Addierers 620 bei jedem Taktzyklus als INKR-WERT 222 an den Leistungszähler 202 weiterleitet. Der INKR-WERT 222 wird daraufhin dem Zählergebnisregister 210 des Leistungszählers 202 hinzugefügt.
  • 7 zeigt den beispielhaften Generator für Folgeereignisse 700 aus 3 mit einer Folgeschaltung 710 und einem Folgeereignis-Steuerspeicher 740. Die Folgeschaltung 740 empfängt jedes Ereignissignal 112. In einer alternativen Ausführungsform kann die Folgeschaltung 710 auch die Ereignissignale 310, 311 empfangen, die von den Gruppenereignisgeneratoren 501, 502 des Generators für Speichersteuerungsereignisse 500 erzeugt werden. Mit dem Generator für Folgeereignisse 700 kann ein Benutzer Folgeereignisse erzeugen; d. h. der Benutzer ist in der Lage, das Auftreten von spezifizierten Ereignisfolgen zu zählen, die beispielsweise darin bestehen können, dass ein Ereignistyp vor einem anderen Ereignistyp ohne dazwischenliegendem Auftreten eines dritten Ereignistyps auftritt.
  • Die Folgeschaltung 710 beinhaltet eine kombinatorische Logik 720 und taktgesteuerte Setz-Rücksetz-Flipflops 730. Nach einschlägig bekannter Technik können mit der Anordnung der Ereignissignale 112, der kombinatorischen Logik 720 und der Flipflops 730 verschiedene Zustände erzeugt werden, in denen sich die Folgeschaltung 710 betreiben lässt. Die Ausgangssignale 722 der kombinatorischen Logik 720 werden den Eingängen der Flipflops 730 zugeführt und der aktuelle Status 732 der Flipflops 730 wird an die Eingänge der kombinatorischen Logik 720 zurückgeführt. Der Folgeereignis-Steuerspeicher 740 legt das Rechenverhalten der Folgeschaltung 710 fest. Das Zustandsdiagramm 750 gibt ein Beispiel für das Rechenverhalten, das von dem Folgeereignis-Steuerspeicher 740 spezifiziert werden kann.
  • Das Zählereignisregister 240 stellt Ereignisauswahlsignale 242 für die kombinatorische Logik 720 bereit. Diese Ereignisauswahlsignale 242 bestimmen, welche Ereignissignale 112 bei der Generierung eines Folgeereignisses miteinzubeziehen sind. Der Benutzer hat die Möglichkeit, das Zählereignisregister 240 zu jedem Zeitpunkt während der Ausführung eines Anwendungsprogramms zu programmieren. Somit lässt sich die Auswahl von Ereignissignalen 112 dynamisch festlegen.
  • Der Betrieb des Generators für Folgeereignisse 700 wird nachfolgend in Bezug auf das beispielhafte Zustandsdiagramm 750 und auf folgendes Beispiel beschrieben, in welchem es darum gehen soll, zu zählen wie oft EREIGNIS 1 ohne dazwischenliegendem Auftreten von EREIGNIS 3 vor EREIGNIS M auftritt.
  • Die Logik 720 und die Flipflops 730 sind entsprechend miteinander verbunden, um drei Zustände zu erzeugen: einen ersten Zustand 742, genannt WARTEN AUF EREIGNIS 1; einen zweiten Zustand 744, EREIGNIS 1 WURDE EMPFANGEN/WARTEN AUF EREIGNIS M; und einen dritten Zustand 746, EREIGNIS M WURDE NACH EREIGNIS 1 EMPFANGEN. Die Folgeschaltung 710 geht erst bei Eintreten eines 'EREIGNIS 1'-Signals von dem ersten Zustand 742 in den zweiten Zustand 744 über. Die Schaltung 710 kehrt jedoch zu einem Betrieb in Zustand 742 zurück, wenn während sie sich im Zustand 744 befindet von der kombinatorischen Logik 720 vor dem Empfang eines 'EREIGNIS M'-Signals ein 'EREIGNIS 3'-Signal empfangen wird. Wird jedoch in der Folge ohne zwischenzeitlichem Auftreten eines 'EREIGNIS 3'-Signals ein 'EREIGNIS M'-Signal empfangen, so geht die Schaltung 710 in den Zustand 746 über. Dann drückt die Folgeschaltung 710 ein hohes ("1") Ausgangssignal 330 auf, da die gewünschte Folge von Ereignissen, wie in dem Folgeereignis-Steuerspeicher 740 festgelegt, eingetreten ist. Das Signal 330 wird zu dem Generator für kombinierte Ereignisse 400 aus 3 weitergeleitet, von welchem das Eintreten dieser Folge von Ereignissen, wie in 4 beschrieben, gezählt werden kann.
  • Tritt während des nächsten Taktzyklus ein EREIGNIS 1 auf, so geht die Schaltung 710 in den Zustand 744 über; andernfalls wird sie in den Zustand 742 zurückgesetzt, um dort auf ein weiteres 'EREIGNIS 1'-Signal zu warten.
  • Die vorangegangene Beschreibung zielte auf spezifische Ausführungsformen der vorliegenden Erfindung ab. Es versteht sich jedoch, dass auch Abänderungen und Modifikationen, die an den beschriebenen Ausführungsformen vorgenommen werden können, als im Umfang der Erfindung gelegen zu betrachten sind.

Claims (19)

  1. Integrierte Schaltung, welche einen Prozessor (102), eine Speichersteuerung (104) und einen Leistungssignalzähler (110) zum Zählen von in der integrierten Schaltung generierten Ereignissignalen (112) umfaßt, wobei der Leistungssignalzähler folgendes umfaßt: Mittel (120, 240, 250) zum Auswählen einer Teilmenge von Ereignissignalen (122, 242) aus einer in der integrierten Schaltung generierten Menge von Ereignissignalen (112); Mittel (130, 300) zum Kombinieren der ausgewählten Teilmenge von Ereignissignalen, um daraus ein neues Ereignissignal (132) zu generieren; und einen Zähler (140, 202), der in Reaktion auf dieses neue Ereignissignal inkrementiert wird.
  2. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß das Auswahlmittel (120, 240, 250) während des Betriebs der integrierten Schaltung hinsichtlich der Auswahl einer neuen Teilmenge von Ereignissignalen aus der von der integrierten Schaltung generierten Menge von Ereignissignalen dynamisch konfigurierbar ist.
  3. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die ausgewählte Teilmenge von Ereignissignalen (122, 242) ein erstes Ereignissignal und ein zweites Ereignissignal beinhaltet, und daß das Kombiniermittel (130, 300) das neue Ereignissignal dann generiert, wenn die integrierte Schaltung entweder das erste Ereignissignal oder das zweite Ereignissignal während eines einzelnen Taktzyklus generiert.
  4. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die ausgewählte Teilmenge von Ereignissignalen (122, 242) ein erstes Ereignissignal und ein zweites Ereignissignal beinhaltet, und daß das Kombiniermittel (130, 300) das neue Ereignissignal dann generiert, wenn während eines einzelnen Taktzyklus weder das erste Ereignissignal noch das zweite Ereignissignal durch die integrierte Schaltung generiert wird.
  5. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die ausgewählte Teilmenge von Ereignissignalen (122, 242) ein erstes Ereignissignal und ein zweites Ereignissignal beinhaltet, und daß das Kombiniermittel (130, 300) das neue Ereignissignal dann generiert, wenn die integrierte Schaltung das erste Ereignissignal und das zweite Ereignissignal während eines einzelnen Taktzyklus generiert.
  6. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die ausgewählte Teilmenge von Ereignissignalen (122, 242) ein erstes Ereignissignal und ein zweites Ereignissignal beinhaltet, und daß das Kombiniermittel (130, 300) das neue Ereignissignal dann generiert, wenn während eines einzelnen Taktzyklus entweder das erste Ereignissignal oder das zweite Ereignissignal durch die integrierte Schaltung nicht generiert wird.
  7. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die ausgewählte Teilmenge von Ereignissignalen (122, 242) ein erstes Ereignissignal und ein zweites Ereignissig nal beinhaltet, wobei das erste Ereignissignal und das zweite Ereignissignal in unterschiedlichen Taktzyklen auftreten, und daß das Kombiniermittel (130, 300) das neue Taktsignal dann generiert, wenn die integrierte Schaltung das zweite Ereignissignal nach der Generierung des ersten Ereignissignals generiert, wobei die ausgewählte Teilmenge von Ereignissignalen ein drittes Ereignissignal beinhaltet und das Kombiniermittel das neue Ereignissignal generiert, wenn die integrierte Schaltung das dritte Ereignissignal nicht während eines Taktzyklus nach der Generierung des ersten Ereignissignals und vor der Generierung des zweiten Ereignissignals generiert.
  8. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die ausgewählte Teilmenge von Ereignissignalen (122, 242) ein erstes Ereignissignal und ein zweites Ereignissignal beinhaltet, wobei das erste Ereignissignal und das zweite Ereignissignal gleichzeitig auftreten und ein jedes von diesen das Zutreffen eines bestimmten Ereignisses anzeigt; und dadurch gekennzeichnet, daß durch das Kombiniermittel das erste Ereignissignal und das zweite Ereignissignal dergestalt kombiniert wird, daß jedes gleichzeitige Zutreffen des bestimmten Ereignisses während eines einzelnen Taktzyklus in einem Zählwerk gezählt wird.
  9. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß das Kombiniermittel (130, 300) aus der ausgewählten Teilmenge von Ereignissignalen eine Mehrzahl neuer Ereignissignale (132) generiert; und weiterhin folgendes umfassend: ein mit dem Kombiniermittel (300) verbundenes Register (240) zur Auswahl des zu zählenden Ereignissignals, aus den neuen Ereignissignalen.
  10. Vorrichtung nach Anspruch 9, dadurch gekennzeichnet, daß das Register (240) während des Betriebs der integrierten Schaltung hinsichtlich der Auswahl eines anderen Ereignissignals aus den neuen Ereignissignalen dynamisch konfigurierbar ist.
  11. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß das Kombiniermittel (130, 300) eine Mehrzahl neuer Ereignissignale generiert, unter anderem: ein erstes neues Ereignissignal (132), das dann generiert wird, wenn eines der Ereignissignale aus der ausgewählten Teilmenge zutrifft; ein zweites neues Ereignissignal (132), das dann generiert wird, wenn alle Ereignissignale aus der ausgewählten Teilmenge zutreffen; ein drittes neues Ereignissignal (132), das dann generiert wird, wenn eines der Ereignissignale aus der ausgewählten Teilmenge nicht zutrifft; ein viertes neues Ereignissignal (132), das dann generiert wird, wenn alle Ereignissignale aus der ausgewählten Teilmenge nicht zutreffen.
  12. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß das Kombiniermittel eine Ereignissignal-Kombinierschaltung (400) umfaßt, welche folgendes umfaßt: eine logische Schaltung (420), die innerhalb eines einzelnen Taktzyklus gemäß vorgegebenen logischen Funktionen kombinierte Ereignissignale generiert, welche auf den mindestens zwei Ereignissignalen (402) der Teilmenge basieren, und einen Multiplexer (430), der die von der logischen Schaltung kommenden, kombinierten Ereignissignale empfängt und gemäß einer aus den vorgegebenen logischen Funktionen aus gewählten logischen Funktion eines der kombinierten Ereignissignale als neues Ereignissignal (320) ausgibt.
  13. Vorrichtung nach Anspruch 1, welche weiterhin folgendes umfaßt: eine Mehrzahl von Leistungszählereinheiten (110, 111), wobei eine jede dieselbe Menge an von der integrierten Schaltung generierten Ereignissignalen (112) empfängt wie jede andere Leistungszählereinheit, und wobei jede Leistungszählereinheit folgendes enthält: ein Mittel (120, 240, 250) zum Auswählen einer Teilmenge von Ereignissignalen (122, 242); und ein Mittel (130, 300) zum Kombinieren der jeweils ausgewählten Teilmenge von Ereignissignalen, um daraus ein jeweils entsprechendes, neues Ereignissignal zu generieren; und einen Zähler (140, 202), der in Reaktion auf dieses neue Ereignissignal inkrementiert wird.
  14. Verfahren zur Zählung von Ereignissignalen (112), welche von einem Computersystem in einer integrierten Schaltung generiert werden, das einen Prozessor (102) und eine Speichersteuerung (104) umfaßt, wobei das Verfahren die folgenden Schritte umfaßt: Bereitstellen eines mit dem Prozessor und der Speichersteuerung auf der integrierten Schaltung integrierten Leistungssignalzählers (110); Auswählen einer Teilmenge von Ereignissignalen (122, 242) aus einer von dem Computersystem generierten Menge von Ereignissignalen (112); Kombinieren der ausgewählten Teilmenge von Ereignissignalen, um daraus ein neues Ereignissignal (132) zu generieren; und Zählen der neuen Ereignissignale in dem integrierten Leistungssignalzähler.
  15. Verfahren nach Anspruch 14, welches weiterhin den Schritt des während des Betriebs des Computersystems erfolgenden, dynamischen Auswählens einer neuen Teilmenge von Ereignissignalen aus der von dem Computersystem generierten Menge von Ereignissignalen umfaßt.
  16. Verfahren nach Anspruch 14, dadurch gekennzeichnet, daß durch den Schritt des Auswählens mindestens zwei Ereignissignale (112) aus der von dem Computersystem generierten Menge von Ereignissignalen ausgewählt werden.
  17. Verfahren nach Anspruch 14, dadurch gekennzeichnet, daß durch den Schritt des Kombinierens aus der ausgewählten Teilmenge von neuen Ereignissignalen eine Mehrzahl neuer Ereignissignale (132) generiert wird; und daß das Verfahren weiterhin folgendes umfaßt: das Auswählen eines zu zählenden Ereignissignals aus den neuen Ereignissignalen, und das während des Betriebs des Computersystems erfolgende, dynamische Auswählen eines zu zählenden, anderen Ereignissignals aus den neuen Ereignissignalen.
  18. Verfahren nach Anspruch 14, welches weiterhin den folgenden Schritt umfaßt: das gleichzeitige Generieren eines ersten Ereignissignals und eines zweiten Ereignissignals, wobei das erste Ereignissignal und das zweite Ereignissignal jeweils das Zutreffen eines bestimmten Ereignisses anzeigt; und wobei durch den Schritt des Auswählens einer Teilmenge von Ereignissignalen das erste Ereignissignal und das zweite Ereignis signal ausgewählt wird, und durch den Schritt des Kombinierens das erste Ereignissignal und das zweite Ereignissignal dergestalt miteinander kombiniert wird, daß jedes Zutreffen des bestimmten Ereignisses während eines einzelnen Taktzyklus in einem Zähler gezählt wird.
  19. Verfahren nach Anspruch 14, welches weiterhin den folgenden Schritt umfaßt: das Generieren eines ersten Ereignissignals und eines zweiten Ereignissignals und wobei durch den Schritt des Auswählens das erste Ereignissignal und das zweite Ereignissignal ausgewählt wird, und durch den Schritt des Kombinierens das neue Ereignissignal dann generiert wird, wenn das zweite Ereignissignal nach dem Generieren des ersten Ereignissignals generiert wird; welches weiterhin den Schritt des Generierens eines dritten Ereignissignals umfaßt; und wobei durch den Schritt des Auswählens das dritte Ereignissignal ausgewählt wird und durch den Schritt des Kombinierens das neue Ereignissignal dann generiert wird, wenn das zweite Ereignissignal nach dem ersten Ereignissignal generiert wird und wenn nicht das dritte Ereignissignal nach dem ersten Ereignissignal und vor dem zweiten Ereignissignal generiert wird.
DE69814997T 1997-08-11 1998-08-11 Durch programmierbare Logik gesteuerte Leistungszähler Expired - Fee Related DE69814997T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/909,403 US6112318A (en) 1997-08-11 1997-08-11 Performance counters controlled by programmable logic
US909403 1997-08-11

Publications (2)

Publication Number Publication Date
DE69814997D1 DE69814997D1 (de) 2003-07-03
DE69814997T2 true DE69814997T2 (de) 2004-05-19

Family

ID=25427185

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69814997T Expired - Fee Related DE69814997T2 (de) 1997-08-11 1998-08-11 Durch programmierbare Logik gesteuerte Leistungszähler

Country Status (3)

Country Link
US (1) US6112318A (de)
EP (1) EP0897152B1 (de)
DE (1) DE69814997T2 (de)

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6502151B2 (en) * 1999-05-27 2002-12-31 Koninklijke Philips Electronics N.V. Data-processing arrangement including an interrupt generator
US6629170B1 (en) * 1999-11-08 2003-09-30 International Business Machines Corporation Method and apparatus for a byte lane selectable performance monitor bus
US6792392B1 (en) * 2000-06-30 2004-09-14 Intel Corporation Method and apparatus for configuring and collecting performance counter data
US7448025B2 (en) * 2000-12-29 2008-11-04 Intel Corporation Qualification of event detection by thread ID and thread privilege level
US6931524B2 (en) 2001-08-29 2005-08-16 Koninklijke Philips Electronics N.V. System for bus monitoring using a reconfigurable bus monitor which is adapted to report back to CPU in response to detecting certain selected events
US6937961B2 (en) * 2002-09-26 2005-08-30 Freescale Semiconductor, Inc. Performance monitor and method therefor
US7404112B2 (en) * 2003-05-09 2008-07-22 Hewlett-Packard Development Company, L.P. Data selection circuit for performance counter
US7424397B2 (en) * 2003-05-09 2008-09-09 Hewlett-Packard Development Company, L.P. General purpose performance counter
US7430696B2 (en) * 2003-05-09 2008-09-30 Hewlett-Packard Development Company, L.P. Zeroing circuit for performance counter
US7475301B2 (en) * 2003-05-09 2009-01-06 Hewlett-Packard Development Company, L.P. Increment/decrement circuit for performance counter
US7415643B2 (en) 2003-05-09 2008-08-19 Hewlett-Packard Development Company, L.P. Coverage circuit for performance counter
US7275191B2 (en) * 2003-05-09 2007-09-25 Hewlett-Packard Development Company, L.P. Coverage decoder circuit for performance counter
US7331003B2 (en) * 2003-05-09 2008-02-12 Hewlett-Packard Development Company, L.P. Match circuit for performance counter
US7475302B2 (en) * 2003-08-06 2009-01-06 Hewlett-Packard Development Company, L.P. Decoded match circuit for performance counter
US7281167B2 (en) * 2003-08-26 2007-10-09 Finisar Corporation Multi-purpose network diagnostic modules
US6898261B1 (en) * 2003-12-01 2005-05-24 International Business Machines Corporation Method and apparatus for monitoring event occurrences
CN100359487C (zh) * 2004-01-09 2008-01-02 佛山市顺德区顺达电脑厂有限公司 电脑装置的子系统侦错方法
US7624319B2 (en) * 2004-06-03 2009-11-24 Hewlett-Packard Development Company, L.P. Performance monitoring system
US20050283669A1 (en) * 2004-06-03 2005-12-22 Adkisson Richard W Edge detect circuit for performance counter
US7346824B2 (en) * 2004-06-03 2008-03-18 Hewlett-Packard Development Company, L.P. Match circuit for performing pattern recognition in a performance counter
US7676530B2 (en) * 2004-06-03 2010-03-09 Hewlett-Packard Development Company, L.P. Duration minimum and maximum circuit for performance counter
US20060259774A1 (en) * 2005-05-13 2006-11-16 Texas Instruments Incorporated Watermark counter with reload register
US7886194B2 (en) * 2005-05-16 2011-02-08 Texas Instruments Incorporated Event-generating instructions
US8627049B2 (en) * 2005-05-16 2014-01-07 Texas Instruments Incorporated Real-time prioritization of stall or event information
US7373565B2 (en) * 2005-08-23 2008-05-13 Hewlett-Packard Development Company, L.P. Start/stop circuit for performance counter
US7809928B1 (en) * 2005-11-29 2010-10-05 Nvidia Corporation Generating event signals for performance register control using non-operative instructions
US8253748B1 (en) * 2005-11-29 2012-08-28 Nvidia Corporation Shader performance registers
US7856424B2 (en) 2006-08-04 2010-12-21 Apple Inc. User interface for backup management
US7853567B2 (en) * 2006-08-04 2010-12-14 Apple Inc. Conflict resolution in recovery of electronic data
US20080126442A1 (en) * 2006-08-04 2008-05-29 Pavel Cisler Architecture for back up and/or recovery of electronic data
US8311988B2 (en) * 2006-08-04 2012-11-13 Apple Inc. Consistent back up of electronic information
US8370853B2 (en) 2006-08-04 2013-02-05 Apple Inc. Event notification management
US8166415B2 (en) 2006-08-04 2012-04-24 Apple Inc. User interface for backup management
US7860839B2 (en) * 2006-08-04 2010-12-28 Apple Inc. Application-based backup-restore of electronic information
US20080034019A1 (en) * 2006-08-04 2008-02-07 Pavel Cisler System for multi-device electronic backup
US7853566B2 (en) 2006-08-04 2010-12-14 Apple Inc. Navigation of electronic backups
US9009115B2 (en) * 2006-08-04 2015-04-14 Apple Inc. Restoring electronic information
US7461383B2 (en) * 2006-08-21 2008-12-02 International Business Machines Corporation Method and apparatus for efficient performance monitoring of a large number of simultaneous events
US7340378B1 (en) 2006-11-30 2008-03-04 International Business Machines Corporation Weighted event counting system and method for processor performance measurements
US7702862B2 (en) * 2007-02-08 2010-04-20 Analog Devices, Inc. Metrics modules and methods for monitoring, analyzing and optimizing bus and memory operations in a complex integrated circuit
US7908493B2 (en) * 2007-06-06 2011-03-15 International Business Machines Corporation Unified management of power, performance, and thermals in computer systems
US20080307017A1 (en) 2007-06-08 2008-12-11 Apple Inc. Searching and Restoring of Backups
US8745523B2 (en) 2007-06-08 2014-06-03 Apple Inc. Deletion in electronic backups
US8725965B2 (en) * 2007-06-08 2014-05-13 Apple Inc. System setup for electronic backup
US8468136B2 (en) * 2007-06-08 2013-06-18 Apple Inc. Efficient data backup
US8010900B2 (en) * 2007-06-08 2011-08-30 Apple Inc. User interface for electronic backup
US8099392B2 (en) 2007-06-08 2012-01-17 Apple Inc. Electronic backup of applications
US8307004B2 (en) 2007-06-08 2012-11-06 Apple Inc. Manipulating electronic backups
US8429425B2 (en) 2007-06-08 2013-04-23 Apple Inc. Electronic backup and restoration of encrypted data
US8230433B2 (en) * 2007-06-26 2012-07-24 International Business Machines Corporation Shared performance monitor in a multiprocessor system
US8651268B2 (en) * 2007-09-18 2014-02-18 Paul H. Smith, Jr. Hydrogen energy systems
US8321868B2 (en) * 2008-01-08 2012-11-27 International Business Machines Corporation Method for counting events in a computer system
US8055477B2 (en) * 2008-11-20 2011-11-08 International Business Machines Corporation Identifying deterministic performance boost capability of a computer system
US8275954B2 (en) 2010-01-08 2012-09-25 International Business Machines Corporation Using DMA for copying performance counter data to memory
US9069891B2 (en) * 2010-01-08 2015-06-30 International Business Machines Corporation Hardware enabled performance counters with support for operating system context switching
US8468275B2 (en) * 2010-01-08 2013-06-18 International Business Machines Corporation Hardware support for software controlled fast reconfiguration of performance counters
US8347001B2 (en) * 2010-01-08 2013-01-01 International Business Machines Corporation Hardware support for software controlled fast multiplexing of performance counters
US10169187B2 (en) 2010-08-18 2019-01-01 International Business Machines Corporation Processor core having a saturating event counter for making performance measurements
US8984029B2 (en) 2011-01-14 2015-03-17 Apple Inc. File system management
US8943026B2 (en) 2011-01-14 2015-01-27 Apple Inc. Visual representation of a local backup
US8918569B2 (en) * 2011-08-10 2014-12-23 Intel Corporation Streaming audio visual content simultaneously to different topologies on a wireless adapter
US8856406B2 (en) * 2011-09-14 2014-10-07 Microchip Technology Incorporated Peripheral trigger generator
US9158576B2 (en) * 2012-06-26 2015-10-13 Wal-Mart Stores, Inc. Systems and methods of processing events having an attribute and value pair
US9363136B2 (en) * 2013-12-20 2016-06-07 Intel Corporation Mechanism to monitor quality of service
CA3133305A1 (en) 2014-11-17 2016-05-17 Whitewater West Industries Ltd. Interactive play center with interactive elements and consequence elements
US10576388B2 (en) 2016-11-14 2020-03-03 Whitewater West Industries Ltd. Play center using structural monoliths for water delivery capabilities
TWI670593B (zh) * 2018-03-27 2019-09-01 瑞昱半導體股份有限公司 效能監視單元的計數電路

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4835736A (en) * 1986-08-25 1989-05-30 Tektronix, Inc. Data acquisition system for capturing and storing clustered test data occurring before and after an event of interest
US4872121A (en) * 1987-08-07 1989-10-03 Harris Corporation Method and apparatus for monitoring electronic apparatus activity
US5237684A (en) * 1991-08-12 1993-08-17 International Business Machines Corporation Customized and versatile event monitor within event management services of a computer system
US5657253A (en) * 1992-05-15 1997-08-12 Intel Corporation Apparatus for monitoring the performance of a microprocessor
US5675729A (en) * 1993-10-22 1997-10-07 Sun Microsystems, Inc. Method and apparatus for performing on-chip measurement on a component
US5537541A (en) * 1994-08-16 1996-07-16 Digital Equipment Corporation System independent interface for performance counters
US5680644A (en) * 1994-10-31 1997-10-21 Digital Equipment Corporation Low delay means of communicating between systems on different clocks
US5557548A (en) * 1994-12-09 1996-09-17 International Business Machines Corporation Method and system for performance monitoring within a data processing system
US5799178A (en) * 1996-04-19 1998-08-25 Vlsi Technology, Inc. System and method for starting and maintaining a central processing unit (CPU) clock using clock division emulation (CDE) during break events
US5796637A (en) * 1996-09-06 1998-08-18 Intel Corporation Apparatus and method for filtering event signals

Also Published As

Publication number Publication date
DE69814997D1 (de) 2003-07-03
EP0897152A3 (de) 1999-08-25
EP0897152B1 (de) 2003-05-28
US6112318A (en) 2000-08-29
EP0897152A2 (de) 1999-02-17

Similar Documents

Publication Publication Date Title
DE69814997T2 (de) Durch programmierbare Logik gesteuerte Leistungszähler
DE69915377T2 (de) Auf-chip fehlersuchsystem
EP1720100B1 (de) Verfahren und Vorrichtung zur Emulation einer programmierbaren Einheit
DE3508291A1 (de) Realzeit-datenverarbeitungssystem
DE10120080B4 (de) Ereignisgestütztes Prüfsystem mit einer Einrichtung zur Erzeugung von Prüfabschluß-Mehrfachsignalen
DE69816818T2 (de) Mehrheitsentscheidungsvorrichtung und entsprechendes verfahren
DE102010012904A1 (de) Systeme zum Testen von Verbindungen zwischen Chips
DE19814415A1 (de) Logikanalyse-Untersystem in einem Zeitscheibenemulator
DE10162507A1 (de) Überwachungsschaltung
DE102006041444B4 (de) Schaltungsanordnung und Verfahren zum Erfassen einer Ausführungszeit eines Befehls in einem Rechnersystem
DE112015006067T5 (de) Intelligentes Funktionsmodul und speicherprogrammierbares Steuerungssystem
WO2004049159A2 (de) Einrichtung und verfahren zur analyse von eingebetteten systemen
DE102009004726A1 (de) Systeme und Verfahren zum Verfolgen von Befehlszeigern und Datenzugriffen
DE3037475A1 (de) Schnittstellenschaltungsanordnung fuer eine datenverarbeitungsanlage
DE102021104735A1 (de) Log-Daten Analyse
DE68919638T2 (de) Rechner mit unterbrechungsgesteuerter Taktgeschwindigkeit und Verfahren für seinen Betrieb.
DE10139660A1 (de) Programmgesteuerte Einheit
AT501880B1 (de) Speicherprogrammierbare steuerung
WO2000043885A1 (de) Verfahren zum tracen von daten
EP1283471B1 (de) Programmgesteuerte Einheit
EP3739479B1 (de) Verfahren zur fehlersuche in der programmlogik eines systems verteilter programmierbarer gatteranordnungen
DE3587062T2 (de) Seriell angeschlossenes videoanpassungsgeraet.
DE112014003069T5 (de) Funktionseinheit, Analogeingabeeinheit und programmierbares Steuerungssystem
EP1260905A2 (de) Programmgesteuerte Einheit
DE3914003A1 (de) Anordnung zur ueberwachung des programmablaufes in einer mikroprozessor-steuerungsbaugruppe

Legal Events

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