-
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.
-
-
-
-
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.
-
-
-
-
-
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 4–7 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 2–4 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 610–614,
einem Addierer 620 mit N Eingängen, und einer AND-Logik 630.
Die Multiplexer 610–614 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 610–614 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 610–614,
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 610–614 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 610–614 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 610–614 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 610–614.
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 610–614 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.