-
Diese
Anmeldung ist mit der US-Patentanmeldung mit dem Titel „DURATION
MINIMUM AND MAXIMUM CIRCUIT",
der US-Patentanmeldung
mit dem Titel „PERFORMANCE
MONITORING SYSTEM",
der US-Patenanmeldung mit dem Titel „MATCH CIRCUIT FOR PERFORMING
PATTERN RECOGNITION IN A PERFORMANCE COUNTER", der US-Patentanmeldung mit dem Titel „DATA SELECTION
CIRCUIT FOR PERFORMANCE COUNTER",
der deutschen Patentanmeldung 1002004003867.8, eingereicht am 26.
Januar 2004, mit dem Titel „Datenauswahlschaltung
für Leistungszähler" entsprechend, der
US-Patenanmeldung mit dem Titel „ZEROING CIRCUIT FOR PERFORMANCE
COUNTER" und der
US-Patentanmeldung mit dem Titel „GENERAL PURPOSE PERFORMANCE
COUNTER" verwandt,
die hierin alle in ihrer Gesamtheit durch Bezugnahme aufgenommen
sind.
-
Eine
ansteigende Nachfrage nach einer Computersystemskalierbarkeit (d.
h. beständiger Preis
und Leistung und höhere
Prozessorzählwerte), kombiniert
mit einem Leistungsanstieg einzelner Komponenten, treibt Systemhersteller
dazu, Kernsystemarchitekturen zu optimieren. Ein derartiger Systemhersteller
hat ein Serversystem eingeführt, das
diesen Anforderungen nach einer Skalierbarkeit mit einer Familie
anwendungsspezifischer integrierter Schaltungen („ASICs"), die für Dutzende
oder Hunderte von Prozessoren eine Skalierbarkeit bieten, entspricht,
während
ein hohes Maß an
Leistung, Zuverlässigkeit
und Effizienz beibehalten wird. Die Schlüssel-ASIC bei dieser Systemarchitektur
ist eine Zellsteuerung („CC"), die eine Prozessor-I/O-Speicher-Verbindung
ist und für
Kommunikationen und Datenübertragungen,
Cachespeicherkohärenz
und für
ein Bereitstellen einer Schnittstelle zu anderen Hierarchien des
Speicherteilsystems verantwortlich ist.
-
Im
Allgemeinen weist die CC mehrere Hauptfunktionseinheiten auf, einschließlich einer
oder mehrerer Prozessorschnittstellen, Speichereinheiten, I/O-Steuerungen
und externer Kreuzschienenschnittstellen, die alle über einen
zentralen Datenpfad („CDP") miteinander verbunden
sind. Interne Signale von diesen Einheiten werden auf einem Leistungsüberwachungsbus
(„PMB") gesammelt. Einer oder
mehrere spezialisierte Leistungszähler oder Leistungsüberwachungsvorrichtungen
sind mit dem PMB verbunden und beim Sammeln von Daten von dem PMB
zur Verwendung bei einer Fehlersuche bzw. beim Debugging und einer
Bewertung der Leistung des Systems, von dem die CC ein Bestandteil ist,
nützlich.
Derzeit ist jeder der Leistungszähler
in der Lage, Daten lediglich von einem vorausgewählten Abschnitt des PMB zu
sammeln, derart, dass die Kombination aller Leistungszähler zusammen
alle Daten auf dem PMB sammeln kann. Während diese Anordnung in einigen
Situationen nützlich
ist, gibt es viele Situationen, in denen es vorteilhaft wäre, wenn mehr
als einer der Leistungszähler
auf Daten von demselben Abschnitt des PMB zugreifen könnte. Ferner
wäre es
vorteilhaft, in der Lage zu sein, die Leistungszähler auf dem Gebiet des Bestimmens
einer Testabdeckung verwenden zu können. Es wäre ebenso vorteilhaft, in der
Lage zu sein, die Leistungszähler
verwenden zu können,
um ein willkürliches
Binärmuster
von bis zu M Bits, die an Blockgrenzen ausgerichtet sind, zu erfassen.
Schließlich
wäre es vorteilhaft,
die Anzahl von Malen, die ein Ereignis auftritt, sowie die Menge
einer Zeit, in der ein Ereignis aktiv ist, zu erfassen. Diese Anwendungen
werden durch die Leistungszähler
des Stands der Technik nicht unterstützt.
-
Es
ist die Aufgabe der vorliegenden Erfindung, eine Flankenerfassungsschaltung,
einen Schaltungsaufbau oder ein Verfahren mit verbesserten Charakteristika
zu schaffen.
-
Diese
Aufgabe wird durch eine Flankenerfassungsschaltung gemäß Anspruch
1, einen Schaltungsaufbau gemäß Anspruch
10 oder ein Verfahren gemäß Anspruch
19 gelöst.
-
Bei
einem Ausführungsbeispiel
ist die Erfindung auf eine Flankenerfassungsschaltung gerichtet, die
mit einem Daten tragenden Bus verbunden ist. Die Flankenerfassungsschaltung
weist eine Logik zum Erfassen einer Flanke eines rohen Inkrementsignals
und eine Logik zum Aktivieren eines Inkrementsignals auf die Erfassung
einer Flanke des rohen Inkrementsignals hin auf.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beigefügten
Zeichnungen näher
erläutert,
wobei in den Zeichnungen gleiche oder ähnliche Elemente in allen Ansichten
derselben mit identischen Bezugszeichen bezeichnet sind und die
verschiedenen dargestellten Elemente nicht notwendigerweise maßstabsgetreu
gezeichnet sind. Es zeigen:
-
1 ein
Blockdiagramm, das eine Universal-Datensammlung in einem Logikentwurf
darstellt;
-
2 ein
Blockdiagramm eines Universal-Leistungszählers gemäß einem Ausführungsbeispiel;
-
3A ein
detaillierteres Blockdiagramm des Universal-Leistungszählers aus 2;
-
3B ein
detailliertes Blockdiagramm einer Verbesserung einer Flankenerfassungs-
und Dauer-Min/Max-Schaltung
gegenüber
dem Universal-Leistungszähler
aus 3A;
-
3C ein
detailliertes Blockdiagramm eines Flankenerfassungsschaltungsaufbaus
ohne Kernmodusfunktionalität;
und
-
4 ein
Verfahren, bei dem Signale von einem Beobachtbarkeitsbus zu einem
Leistungszähler abgebildet
werden, gemäß einem
Ausführungsbeispiel.
-
1 ist
ein Blockdiagramm einer Universal-Datensammlung in einem Logikentwurf.
Wie in 1 gezeigt ist, wird der Zustandsraum 100 eines betrachteten
Logikentwurfs zu einer Datensammel- und Auswahllogik 102 getrieben.
Die Logik 102 treibt einen D-Bit-Datensammel- oder Beobachtbarkeitsbus 104,
der ein D-Bit-debug_bus-Signal oder D-Bit-Fehlersuche_Bus-Signal
zu einer Mehrzahl von Leistungszählern 106(1)–106(M) trägt.
-
Bei
einem Ausführungsbeispiel
ist D gleich 80, M gleich 12 und die Leistungszähler 106(1)–106(M-1) sind
Universal-Leistungszähler, während der
verbleibende Leistungszähler 106(M) bei
jedem Taktzyklus inkrementiert. Wie unten dargestellt ist, sind
die Universal-Leistungszähler
dahingehend „universal", dass jeder derselben
in der Lage ist, auf jedes Bit der 80 Bits auf dem Bus 104 zuzugreifen;
ferner können
alle derselben auf den gleichen Block von Bits zugreifen und dieselben
oder unterschiedliche Leistungsberechnungen an denselben durchführen.
-
2 ist
ein Blockdiagramm eines Universal-Leistungszählers 200 gemäß einem
Ausführungsbeispiel,
der in jeder Hinsicht identisch zu jedem der Leistungszähler 106(1)–106(M-1) (1) ist.
Wie im Folgenden detaillierter beschrieben ist, kann der Leistungszähler 200 verwendet
werden, um Universaloperationen durchzuführen, um Leistungs-, Fehlersuche-
oder Abdeckinformationen in Bezug auf ein beliebiges gerade getestetes
System (SUT) zu extrahieren, wie z. B. den in 1 gezeigten
Systemzustandsraum 100. Der Leistungszähler 200 umfasst eine
UND/ODER-Schaltung 201, eine Übereinstimmungs-/Schwellenschaltung 202,
eine sm_sel-Schaltung 204, eine szero-Schaltung 206 und
eine Zählerschaltung 208.
-
Im
Allgemeinen ermöglicht
die UND/ODER-Schaltung 201 einen Zugriff auf alle Bits des
debug_bus-Signals, das über
den Beobachtbarkeitsbus 104 in den Leistungszähler 200 gelangt.
-
Bei
einem Ausführungsbeispiel,
wie in den 2, 3A und 3B dargestellt
ist, ist debug_bus ein 80-Bit-Signal. Wenn die UND/ODER-Schaltung 201 in
einem UND-Modus arbeitet, aktiviert die Schaltung ein „inc_raw"-Signal, falls alle
Bits des debug_bus-Signals plus zwei Bits, die an dasselbe angehängt sind,
wie im Folgenden detaillierter beschrieben wird, und die von Interesse sind
(wie durch den Wert einer 80-Bit-„Maske" plus zwei Bits, die an dieselbe angehängt sind,
angegeben wird), gesetzt sind. Wenn die UND/ODER-Schaltung 201 in einem ODER-Modus
arbeitet, aktiviert die Schaltung das inc_raw-Signal, falls eines
oder mehrere der Bits des debug_bus-Signals plus die zwei zusätzlichen
Bits, die von Interesse sind (wie durch den Wert der Maske plus
die zwei zusätzlichen
Bits angegeben ist), gesetzt sind.
-
Wenn
die Übereinstimmungs-/Schwellenschaltung 202 in
einem „Übereinstimmungs"-Modus arbeitet,
aktiviert ein Übereinstimmungsabschnitt 300 (3A)
der Schaltung ein match_thresh_event-Signal oder Übereinstimmung_Schwelle_Ereignis-Signal
zu der UND/ODER-Schaltung 201, wenn ein N-Bit-Abschnitt des
debug_bus-Signals, der ausgewählt
wird, wie unten Bezug nehmend auf die sm_sel-Schaltung 204 und
die szero-Schaltung 206 detaillierter beschrieben ist,
mit einer N-Bit-Schwelle (oder einem -Muster) für alle Bits, die durch eine N-Bit-Übereinstimmungsmaske
(„mmask") ausgewählt sind, übereinstimmt.
Bei einem Ausführungsbeispiel
ist für
alle Bits des ausgewählten
N-Bit-Fehlersuche-Bus-Signal-Abschnitts,
die „bedeutungslose" Werte („don't cares") sind, das entsprechende
Bit der mmask auf 0 gesetzt und das entsprechende Bit der Schwelle
auf 0 gesetzt. Für
alle Bits des ausgewählten
N-Bit-Fehlersuche-Bus-Signal-Abschnitts, die „ORs" oder „Rs" sind, wie unten
detaillierter beschrieben ist, wird das entsprechende Bit der mmask auf
0 gesetzt und das entsprechende Bit der Schwelle wird auf 1 gesetzt.
Schließlich
wird für
alle Bits des ausgewählten
N-Bit-Fehlersuche-Bus-Signal-Abschnitts, die nicht „bedeutungslose" Werte oder „ORs" sind, das entsprechende
Bit der mmask auf 1 gesetzt.
-
Das
in 3A dargestellte Ausführungsbeispiel verbessert die
normale Übereinstimmung
mit einem „R"-Ausdruck, ohne Steuerbits
zusätzlich
zu mmask (der Maske) und der Schwelle (der Übereinstimmung) zu verwenden.
Dieses Ausführungsbeispiel
kann für
jede Übereinstimmungsschaltung
und für
jede Mustererkennung verwendet werden; es ist nicht auf Leistungszähler eingeschränkt. Insbesondere
tritt eine Übereinstimmung
auf, wenn ein „R"-Bit eine Eins ist.
Dies ist äquivalent
zu einer ODER-Verarbeitung aller „R"-Eingangsbits. Wenn alle „R"-Bits Null sind,
liegt keine Übereinstimmung
vor.
-
Das
match_thresh_event-Signal ist eines der beiden Bits, die an das
debug_bus-Signal angehängt sind.
Bei dem dargestellten Ausführungsbeispiel
ist N gleich 16. Im Allgemeinen erfasst, wenn die Übereinstimmung-/Schwellenschaltung 202 in
einem Übereinstimmungsmodus
arbeitet, der Übereinstimmungsabschnitt 300 in
dem debug_bus-Signal jedes willkürliche
binäre
Muster von bis zu N Bits, die an 10-Bit-Blockgrenzen ausgerichtet sind. Dies
umfasst bei jedem Bit Suchen einer Übereinstimmung mit einer Eins,
Null oder einem „bedeutungslosen" Wert („X"). Zusätzlich umfasst,
wie oben gezeigt ist, bei einem Ausführungsbeispiel das Erfassen
bei allen bezeichneten Bits („R") ein Suchen einer Übereinstimmung
mit den Ergebnissen einer „ODER"-Operation. Dies
erlaubt eine Erfassung spezifischer Pakete oder spezifischer Gruppen
von Paketen oder Zuständen.
-
Bei
einem Ausführungsbeispiel
weist der Übereinstimmungsabschnitt 300 eine
Exklusiv-NOR- („XNOR"-) Schaltung, die
in 3A durch ein einzelnes XNOR-Gatter 301a dargestellt
ist, zur bitweisen Exklusiv-NOR-Verarbeitung eines ausgewählten N-Bit-Abschnitts
der debug_bus-Signal-Ausgabe aus der sm_sel-Schaltung 204,
wie unten detailliert beschrieben ist, mit einer N-Bit-Schwelle,
die z. B. aus einem Steuerstatusregister („CSR") (nicht gezeigt) ausgegeben wird, auf.
Eine N-Bit-Signalausgabe (d. h. eine erste Zwischen ausgabe) aus
der XNOR-Schaltung (dargestellt durch das XNOR-Gatter 301a,
obwohl es ganze N derartige Gatter geben könnte) wird in eine ODER-Schaltung
eingegeben, die in 3A durch ein einzelnes ODER-Gatter 301b dargestellt
wird, wo dieselbe bitweise einer ODER-Verarbeitung mit dem Inversen
der N-Bit-mmask unterzogen wird, was bei einem Ausführungsbeispiel
durch ein CSR (nicht gezeigt) bereitgestellt werden könnte. Die
N-Bit-Ausgabe (d. h. eine zweite Zwischenausgabe) der ODER-Schaltung,
die durch das ODER-Gatter 301b dargestellt ist (jedes der
N Ausgabebits wird durch ein Signal-2-Eingangs-ODER-Gatter erzeugt),
wird in ein N-Bit-UND-Gatter 301c eingegeben,
dessen Ausgabe ein Ein-Bit-„match_mm"-Signal aufweist.
-
Wie
in dem U.S.-Patent mit dem Titel „MATCH CIRCUIT FOR PERFORMING
PATTERN RECOGNITION IN A PERFORMANCE COUNTER" detaillierter beschrieben ist, umfasst
die Übereinstimmungsschaltung 300 ferner
einen Verbesserungsabschnitt 301d zum Suchen einer Übereinstimmung
mit den „R" Bits. Der Verbesserungsabschnitt 301d umfasst
eine UND-Schaltung, die in 3A durch
ein einzelnes UND-Gatter 301e dargestellt wird, zur bitweisen
UND-Verarbeitung des Inversen der N-Bit-mmask mit der N-Bit-Schwelle. Die
N-Bit-Ausgabe der UND-Schaltung 301e wird in eine UND-Schaltung
eingegeben, die in 3A durch ein einzelnes UND-Gatter 301f dargestellt
ist, wo dieselbe bitweise einer UND-Verarbeitung mit dem ausgewählten N-Bit-Abschnitt
der debug_bus-Signal-Ausgabe aus der sm_sel-Schaltung 204 unterzogen wird.
Die N-Bit-Ausgabe
der UND-Schaltung 301f wird in eine ODER-Schaltung 301g eingegeben,
an der dieselbe einer ODER-Verarbeitung mit dem Einzelbit-NOR (durch
ein N-Bit-NOR-Gatter bereitgestellt) der N-Bit-Ausgabe der UND-Schaltung 301e unterzogen
wird, um ein Einzelbit-„match_OR"-Signal zu erzeugen.
Das match_OR-Signal und das match_mm-Signal werden in ein UND-Gatter 301h eingegeben,
dessen Ausgabe in einen Eingang eines Zwei-Eingangs-MUX 301i als
ein „match"-Signal eingegeben
wird. Wenn die Übereinstimmungs-/Schwellenschaltung 202 in
einem Übereinstimmungsmodus
arbeitet (wie durch ein Auswahlsteuersignal gesteuert wird, z. B.
das match/thresh#-Steuersignal), wird das Übereinstimmungssignal aus dem
MUX 301i als das match_thresh_event-Signal an die UND/ODER-Schaltung
ausgegeben, wie oben beschrieben ist.
-
Als
ein Ergebnis der Operation des Übereinstimmungsabschnitts 300 wird
keine zusätzliche
Zufallslogik zum Decodieren von Paketen oder Zuständen in „Eins-Heiß"-Signale benötigt, die
1-Bit-Signale sind, die für
jeden Wert des Zustands in eine logische „l" übergehen.
Die Übereinstimmungs-/Schwellenschaltung 202 benötigt ein
N-Bit-Muster-Feld
und ein N-Bit-Maske-Feld. Zusätzlich
kann das hierin beschriebene Ausführungsbeispiel bei einem breiteren Bereich
von Mustern Übereinstimmungen
suchen als eine herkömmliche Übereinstimmungsschaltung,
die einer Ebene von UND-Gattern entspricht.
-
Um
die Anzahl erforderlicher Steuerbits zu reduzieren, ist bei dem
in 3A dargestellten Ausführungsbeispiel das N-Bit-Muster-Feld das
gleiche Feld, das für
einen Schwellenabschnitt 302 der Schaltung 202 verwendet
wird, wie unten beschrieben ist, da es unwahrscheinlich ist, dass
sowohl der Übereinstimmungsabschnitt 300 als
auch der Schwellenabschnitt 302 gleichzeitig verwendet
werden, insbesondere dann, wenn die sm_sel-Schaltung 204 die
gleichen N-Bits an beide liefert.
-
Wenn
die Übereinstimmungs-/Schwellenschaltung 202 in
einem „Schwellen"-Modus arbeitet, aktiviert
der Schwellenabschnitt 302 der Schaltung 202 das
match_thresh_event-Signal zu der UND/ODER-Schaltung 201,
wenn ein S-Bit-Abschnitt des debug_bus-Signals, das so, wie unten
Bezug nehmend auf die sm_sel-Schaltung 204 und die szero-Schaltung 206 detaillierter
beschrieben ist, ausgewählt
und auf Null gesetzt wird, größer oder
gleich der Schwelle ist. Bei dem dargestellten Ausführungsbeispiel
ist S gleich N/2 oder 8.
-
Eine
Vergleichsschaltung 303 des Schwellenabschnitts 302 vergleicht
eine Summe[7:0]-Signal-Ausgabe aus der szero-Schaltung 206, unten beschrieben,
mit den S niederstwertigen Bits des N-Bit-Schwellensignals und gibt
eine logische Eins aus, wenn Erstere größer oder gleich Letzterer ist, und
eine Null, falls dies nicht der Fall ist. Die Ausgabe der Vergleichsschaltung 303 wird
in einen zweiten Eingang des MUX 301d als ein Schwellensignal
eingegeben. Wenn die Übereinstimmungs-/Schwellenschaltung 202 in
einem Schwellenmodus arbeitet, wird das Schwellensignal aus dem
MUX 301i als das match_thresh_event-Signal an die UND/ODER-Schaltung ausgegeben,
wie oben beschrieben wurde.
-
Es
ist zu erkennen, dass in Systemen, in denen der Leistungszähler 200 und
der dadurch überwachte
Logikblock sich in zwei unterschiedlichen Taktbereichen befinden,
die Übereinstimmungs-/Schwellenschaltung 202 modifiziert
wird, um einen Vorteil aus einer „Kernmodusfunktionalität" zu ziehen, bei der
ein valid_cycle-Steuersignal oder Gültig_Zyklus-Steuersignal gemäß den Lehren
der U.S.-Patentanmeldung mit dem Titel „PERFORMANCE MONITORING SYSTEM" erzeugt wird. Kurz gesagt
könnte
der Leistungszähler 200 in
einigen Fällen
verwendet werden, um den inneren Betrieb einer Logik-Hardware zu
prüfen,
die sich in einem unterschiedlichen Taktbereich als der Leistungszähler befindet.
Ein Kernmodus unterstützt
die Deaktivierung des Leistungszählers
bei ungültigen
Taktzyklen und ermöglicht
es, dass hochentwickelte Merkmale die ungültigen Zyklen ignorieren.
-
Die
sm_sel-Schaltung 204 wählt
einen N-Bit-Abschnitt des debug_bus-Signals, der an einer ausgewählten 10-Bit-Blockgrenze
ausgerichtet, aus und gibt diesen in sowohl den Übereinstimmungsabschnitt 300 als
auch den Schwellenabschnitt 302 (3A) der Übereinstimmungs-/Schwellenschaltung 202 und
eine Summeneingabe der Zählerschaltung 208 aus.
Wie zuvor angemerkt wurde, ist bei dem dargestellten Ausführungsbeispiel
N gleich 16. Die szero-Schaltung 206 setzt keines bis alle
bis auf eines von S Bits, ausgerich tet an einer ausgewählten 10-Bit-Blockgrenze,
auf Null und gibt dies in den Schwellenabschnitt 302 der Übereinstimmungs-/Schwellenschaltung 202 und
die Summeneingabe der Zählerschaltung 208 aus.
Bei dem dargestellten Ausführungsbeispiel
ist S gleich 8. Die ausgewählte
10-Bit-Blockgrenze wird durch den Wert eines Drei-Bit-Steuersignals
sm_sel, das in die sm_sel-Schaltung 204 eingegeben wird,
identifiziert.
-
Zusätzliche
Details in Bezug auf die Funktionsweise der sm_sel-Schaltung 204 und
die szero-Schaltung 206 sind in der U.S.-Patentanmeldung mit
dem Titel „DATA
SELECTION CIRCUIT FOR PERFORMANCE COUNTER" und der U.S.-Patentanmeldung mit dem
Titel „ZEROING
CIRCUIT FOR PERFORMANCE COUNTER" zu
finden.
-
3B stellt
eine Verbesserung einer Flankenerfassungs- und Dauer-Min/Max-Schaltung 350 gegenüber dem
Leistungszähler,
der in 3A dargestellt ist, gemäß einem
Ausführungsbeispiel
dar. Bei diesem Ausführungsbeispiel
tastet ein Schattenregister das Zählwertsignal bei einem Intervall
ab, wenn eine Software dies anfordert, oder wenn ein Wert in dem
Zählwertregister 312 größer oder
kleiner als der Wert ist, der in dem Schattenregister an dem Ende
des Zählens
einer Dauer gespeichert ist. Das letzte Merkmal, in Verbindung mit
einem Dauer-Min/Max-Schaltungsaufbau 352, ermöglicht die Erfassung
eines minimalen oder maximalen Dauerwerts. Insbesondere verfolgt
der Dauer-Min/Max-Schaltungsaufbau 352 minimale/maximale
Zykluszählwerte
oder -dauern. Insbesondere wird am Ende eines Ereignisses der Wert
des Zählwertregisters 312 in
dem Schattenregister 351 gespeichert, wenn er größer als
der Wert ist, der gegenwärtig
in dem Schattenregister gespeichert ist (wenn der Leistungszähler 200 in
einem Dauer-MAX-Modus arbeitet), oder kleiner ist als der Wert,
der gegenwärtig
in dem Schattenregister gespeichert ist (wenn der Leistungszähler 200 in
einem Dauer-MIN-Modus arbeitet). Details in Bezug auf die Funktionsweise
des Min/Max-Schaltungsaufbaus 352 sind in der U.S.-Patentanmeldung
mit dem Titel „DURATION
MINIMUM AND MAXIMUM CIRCUIT FOR PERFORMANCE COUNTER" zu finden.
-
Ein
Flankenerfassungsschaltungsaufbau 354 erfasst eine ansteigende
Flanke bei dem inc_raw-Signal und aktiviert ein „inc"-Signal zu der Zählerschaltung 208 nur
einmal für
jede ansteigende Flanke, wenn der Leistungszähler 200 in einem
Flankenerfassungsmodus arbeitet.
-
Bei
einem Ausführungsbeispiel
arbeitet der Leistungszähler 200 in
einem Flankenerfassungsmodus, wenn ein „edge_op"-Signal
aktiviert ist, in einem Dauer-MAX-Modus, wenn ein „max_op"-Signal aktiviert
ist, und in einem Dauer-MIN-Modus,
wenn ein „min
op"-Signal aktiviert
ist. Der Leistungszähler
arbeitet in einem Normalmodus, wenn keines der „_op"-Signale aktiviert ist.
-
Wie
zuvor angezeigt wurde, zählt
der Leistungszähler 200 in
dem normalen Betriebsmodus die Anzahl von Zyklen, in denen ein Ereignis
von Interesse aktiv ist. Das Ausführungsbeispiel des Flankenerfassungsschaltungsaufbaus 354,
das hierin beschrieben ist, ermöglicht
es, dass der Leistungszähler 200 in
einem Flankenerfassungsmodus arbeiten kann, bei dem der Leistungszähler die
Anzahl von Malen zählt,
die ein Ereignis auftritt. Es wird z. B. angenommen, dass eine Zustandsmaschine
in einem Zustand = 0 beginnt, in einen Zustand = 2 übergeht und
dort drei Zyklen lang verbleibt, in einen Zustand = 1 übergeht
und dort eine weitere Anzahl von Zyklen lang verbleibt, in einen
Zustand = 2 übergeht
und dort vier Zyklen lang verbleibt, in einen Zustand = 3 übergeht
und dort eine bestimmte Anzahl von Zyklen lang verbleibt, in einen
Zustand = 2 übergeht
und dort zwei Zyklen lang verbleibt und dann wieder zurück in einen
Zustand = 0 übergeht.
Es wird der Einfachheit halber angenommen, dass das Ereignis von
Interesse Zustand = 2 ist.
-
In
dem Normalmodus zählt
der Leistungszähler 200 die
Anzahl von Zyklen, in denen das bezeichnet Ereignis aktiv ist; in diesem
Fall neun Zyklen. Im Gegensatz dazu ermöglicht es der Flankenerfassungsschaltungsaufbau 354 einem
Leistungszähler 200,
wenn dieser in einem Flankenerfassungsmodus ist, die Anzahl von
Malen zu zählen,
die die Zustandsmaschine in Zustand = 2 übergeht. In dem Flankenerfassungsmodus
zählt der
Leistungszähler 200 drei Übergänge von
Null (d. h. nicht in Zustand = 2) zu Eins (d. h. in Zustand = 2).
Folglich zeigt bei dem gegenwärtigen
Beispiel der Zählwert
eines Leistungszählers,
der in dem Flankenerfassungsmodus arbeitet, die Anzahl von Malen
an, die das Ereignis von Interesse (d. h. Übergang in Zustand = 2) aufgetreten
ist (d. h. drei).
-
Es
sollte angemerkt werden, dass, obwohl das dargestellte Ausführungsbeispiel
eine Erfassungsschaltung einer ansteigenden Flanke zeigt, eine Erfassungsschaltung
einer abfallenden Flanke ebenso zu den hierin beschriebenen Zwecken
implementiert werden könnte
und unter bestimmten Umständen
auch vorzuziehen sein könnte.
-
Durch
ein Betreiben eines Leistungszählers in
dem Normalmodus, um die Anzahl von Zyklen zu zählen, in denen ein Ereignis
von Interesse aktiv ist, und ein Betreiben eines anderen in einem
Flankenerfassungsmodus, um die Anzahl von Malen zu zählen, die
das gleiche Ereignis auftritt, ist es möglich, die durchschnittliche
Anzahl von Zyklen, in denen das Ereignis aktiv ist, zu bestimmen.
Wieder Bezug nehmend auf das obige Beispiel würde der erste Leistungszähler anzeigen,
dass das Ereignis (Zustand = 2) neun Zyklen lang aktiv war; der
zweite Leistungszähler
würde anzeigen,
dass das Ereignis dreimal aufgetreten ist. Folglich ist die durchschnittliche
Anzahl von Zyklen, in denen das Ereignis aktiv war (d. h. die durchschnittliche
Anzahl von Zyklen Zustand = 2), drei.
-
Der
Flankenerfassungsschaltungsaufbau 354 wird nun detaillierter
beschrieben. Der Schaltungsaufbau 354 umfasst einen Zwei-Eingangs-MUX 354a zum
Aufnehmen des inc_raw-Signals an einem Eingang und eines inc_hold_FF-Signals
an dem anderen Eingang. Der Ausgang des MUX 354a ist ein Eingang
in ein Flip-Flop 354b, dessen Ausgang das inc_hold_FF-Signal
aufweist, das zu dem MUX 354a rückgekoppelt wird, wie zuvor
beschrieben wurde. Das valid_cycle-Steuersignal, das oben beschrieben wurde,
weist das Auswahlsignal für
den MUX 354a auf, derart, dass, wenn das valid_cycle-Signal
aktiviert ist, das inc_raw-Signal aus dem MUX 354a ausgegeben
wird; andernfalls wird das inc_hold_FF-Signal aus dem MUX ausgegeben.
Das inc_hold_FF-Signal wird invertiert und einer UND-Verarbeitung
mit dem inc_raw-Signal und dem valid_cycle-Signal über ein
Drei-Eingangs-UND-Gatter 354c unterzogen. Die Ausgabe des
UND-Gatters 354c wird in einen Eingang eines Zwei-Eingangs-MUX 354d eingegeben, dessen
anderer Eingang geschaltet ist, um das inc_raw-Signal zu empfangen.
Das edge_op-Signal dient als das Auswahlsignal für den MUX 354d, derart,
dass, wenn der Leistungszähler 200 in
einem Flankenerfassungsmodus arbeitet, die Signalausgabe aus dem
UND-Gatter 354c aus dem MUX 354d als das inc-Signal
ausgegeben wird; andernfalls (d. h. bei Normalbetrieb) wird das
inc_raw-Signal aus dem MUX als das inc-Signal 354d ausgegeben.
-
Es
wird angemerkt, dass das Flip-Flop 354b und das UND-Gatter 354c als
ein Erfassungsschaltungsaufbau einer ansteigenden Flanke für den Flankenerfassungsschaltungsaufbau 354 dienen
und die Ausgabe des UND-Gatters 354c ansprechend auf einen
Null-zu-Eins-Übergang
des inc_raw-Signals in einen Hochzustand getrieben wird; andernfalls
bleibt die Ausgabe des UND-Gatters 354c Null. Das Vorangegangene
nimmt natürlich
an, dass der Zyklus ein gültiger
ist (d. h. valid_cycle ist aktiviert). Es sollte zu erkennen sein,
dass 3C ein Ausführungsbeispiel des
Flankenerfassungsschaltungsaufbaus 354 ohne Kernmodusfunktionalität darstellt.
-
Bei
einem Ausführungsbeispiel
ist jeder Universal-Leistungszähler,
wie z. B. der Leistungszähler 200,
48 Bits plus Überlauf.
Der Leistungszähler 200 ist
dahingehend universal, dass er alle D Bits des debug_bus-Signals
nach einer Ereignismaske plus zwei zusätzlichen Ereignissen durchsieht,
acht separate Auswahlen von 16 Bits für die Übereinstimmungsvergleichsoperation
und acht separate Auswahlen von acht Bits für die Schwellenvergleichs- und
die Ansammlungsoperation. Die acht Bits für die Schwellenvergleichs-
und die Ansammlungsoperation sind die unteren acht Bits der 16 Bits,
die für
die Übereinstimmungsvergleichsoperation
ausgewählt sind.
Diese 16 Bits sind mit zehn Schlitzgrenzen ausgerichtet, wie in
einer in 4 dargestellten exemplarischen
Abbildungsanordnung gezeigt ist.
-
In 4 weist
ein Ereignisse-Signal 400 das debug_bus-Signal, das in 4 durch
das Bezugszeichen 401 bezeichnet ist, das match_thresh_event-Signal,
das durch das Bezugszeichen 402 bezeichnet ist, und ein
logisches 1-Bit, das durch das Bezugszeichen 404 bezeichnet
ist, auf. Das debug_bus-Signal 401 weist Bits [79:0] des Ereignisse-Signals 400 auf;
das match_thresh_event-Signal 402 weist ein Bit [80] des Ereignisse-Signals
auf und das logische 1-Bit 404 weist ein Bit [81] des Ereignisse-Signals
auf.
-
Wie
am besten in 3A dargestellt ist, wird das
Ereignisse-Signal 400 (d. h. das debug_bus-Signal mit dem
match_thresh_event-Signal und der logischen 1, die daran angehängt sind)
zu Zwecken, die im Folgenden detaillierter beschrieben werden, in eine
erste Logikstufe 304 der UND/ODER-Schaltung 201 eingegeben.
-
Wieder
Bezug nehmend auf 4 weist ein zusammengesetztes
Maskensignal 410 ein 80-Bit-Maskensignal, das durch ein
Bezugszeichen 412 bezeichnet ist, ein match_thresh_eventmask-Bit („TM"-Bit), das durch
ein Bezugszeichen 414 bezeichnet ist, und ein Akkumulierbit
(„acc"), das durch ein
Bezugszeichen 416 bezeichnet ist, auf. Das Maskensignal 412 weist
Bits [79:0] des zusammengesetzten Maskensignals 410 auf;
das TM-Bit 418 weist ein Bit [80] des zusammengesetz ten
Maskensignals auf und das acc-Bit 416 weist ein Bit [81]
des zusammengesetzten Maskensignals auf. Wie am besten in 3A dargestellt
ist, wird jedes Bit der zusammengesetzten Maske 410 (d.
h. das Maskensignal mit dem TM-Bit und dem acc-Bit, daran angehängt) zu Zwecken,
die im Folgenden detaillierter beschrieben sind, in die erste Logikstufe 304 der UND/ODER-Schaltung 201 eingegeben.
-
Weiter
Bezug nehmend auf 4 sind acht 10-Bit-Blockausgerichtete
16-Bit-Übereinstimmungsauswahlen
jeweils durch Bezugszeichen 420(0)–420(7) bezeichnet.
Insbesondere weist die Auswahl 420(0) Bits [0:15] auf;
die Auswahl 420(1) weist Bits [10:25] auf; die Auswahl 420(2) weist
Bits [20:35] auf; die Auswahl 420(3) weist Bits [30:45]
auf; die Auswahl 420(4) weist Bits [40:55] auf; die Auswahl 420(5) weist
Bits [50:65] auf; die Auswahl 420(6) weist Bits [60:75]
auf; und die Auswahl 420(7) weist Bits [70:5] auf (Bits über 79 springen
zurück
auf Null).
-
Wieder
Bezug nehmend auf 3A weist die erste Logikstufe 304 einen
UND-Abschnitt, durch ein UND-Gatter 304a dargestellt, zur
bitweisen UND-Verarbeitung des Ereignisse-Signals 400 mit dem
zusammengesetzten Maskensignal 410 und einen ODER-Abschnitt,
dargestellt durch ein ODER-Gatter 304b, zur bitweisen ODER-Verarbeitung
des Inversen des zusammengesetzten Maskensignals 410 mit
dem Ereignisse-Signal 400 auf. Es ist zu erkennen, dass
der UND-Abschnitt der ersten Logikstufe 304, obwohl er
in 3A als ein einzelnes Zwei-Eingangs-UND-Gatter 304a dargestellt
ist, tatsächlichen
82 Zwei-Eingangs-UND-Gatter aufweist. Ähnlich weist der ODER-Abschnitt
der ersten Logikstufe 304 82 Zwei-Eingangs-ODER-Gatter
auf, identisch zu dem ODER-Gatter 304b.
-
Die
Ausgaben des UND-Abschnitts der ersten Logikstufe 304 werden
in ein 82-Eingangs-ODER-Gatter 306 eingegeben, dessen Ausgabe
in einen Eingang eines Zwei-Eingangs-MUX 308 als ein „or_result" oder „Oder_Ergebnis" eingegeben wird. Ähnlich werden
die Ausgaben des ODER-Abschnitts der ersten Logikstufe 304 in
ein 82-Eingangs-UND-Gatter 310 eingegeben, dessen Ausgabe
in den anderen Eingang des MUX 308 als ein „and_result" oder „Und_Ergebnis" eingegeben wird.
Ein Steuersignal („and/or#"), das von einem CSR
(nicht gezeigt) stammen könnte,
steuert, ob die UND/ODER-Schaltung 201 in einem UND-Modus
arbeitet, wobei in diesem Fall das Und_Ergebnis aus dem MUX 308 als
das inc-Signal ausgegeben wird, oder in einem ODER-Modus, wobei
in diesem Fall das Oder_Ergebnis aus dem MUX als das inc-Signal ausgegeben
wird.
-
Als
ein Ergebnis weist, wenn die UND/ODER-Schaltung 201 in
dem UND-Modus arbeitet, das inc-Signal das and_result-Signal oder Und_Ergebnis-Signal
auf und wird aktiviert, wenn alle Bits des Ereignisse-Signals 400,
die von Interesse sind, wie durch die zusammengesetzte Maske 410 spezifiziert
wird, gesetzt sind. Wenn die UND/ODER-Schaltung 201 in
dem ODER-Modus arbeitet, weist das inc-Signal das or_result-Signal oder Oder_Ergebnis-Signal
auf und wird aktiviert, wenn eines der Bits des Ereignisse-Signals 400,
die von Interesse sind, wie durch die zusammengesetzte Maske 410 spezifiziert
ist, gesetzt ist.
-
Das
acc-Bit 416 der zusammengesetzten Maske 410 ist
CSR-einstellbar.
Ein Setzen des TM-Bits 414 in der zusammengesetzten Maske 410 bezeichnet
das match_thresh_event-Signal in dem Ereignisse-Signal als ein Bit
von Interesse; ein Nicht-Setzen des TM-Bits in der zusammengesetzten
Maske bewirkt, dass der Wert des match_thresh_event-Signals in dem
Ereignisse-Signal 400 und so das Ergebnis einer Übereinstimmungs-
oder Schwellenoperation, die durch die Übereinstimmungs-/Schwellenschaltung 202 durchgeführt wird,
ignoriert werden.
-
Weiter
Bezug nehmend auf 3A wird die Funktionsweise eines
Ausführungsbeispiels
der Zählerschaltung 208 detaillierter
beschrieben. Die Zählerschaltung 208 ist
ein X-Bit-Zähler, der
einen Wert halten, um Eins inkrementieren, S- Bits zu demselben hinzufügen, ihn
löschen
oder in ein Zählwertregister 312 laden
kann. Eine weitere Verarbeitung könnte ebenso auftreten, um den
Wert des Registers 312 zu lesen. Bei dem in 3A dargestellten
Ausführungsbeispiel
ist X gleich 48. Die Funktionsweise der Zählerschaltung 208 wird
durch ein Setzen eines Zählerfreigabesignals
B, das eine Eingabe eines Zwei-Eingangs-UND-Gatters 314 aufweist,
freigegeben. Der andere Eingang des UND-Gatters 314 ist
verbunden, um das inc-Signal, das aus dem inc_raw-Signal erzeugt
wird, zu empfangen, wie oben detaillierter beschrieben ist. Entsprechend
wird, wenn die Zählerschaltung 208 freigegeben
ist und das inc-Signal aktiviert ist, eine logische Eins aus dem
UND-Gatter 314 ausgegeben. In einem anderen Fall ist die
Ausgabe des UND-Gatters 314 eine logische Null. Die Ausgabe
des UND-Gatters 314 wird durch einen 8x-Replikator 316 vervielfältigt und
das resultierende 8-Bit-Signal wird bitweise einer UND-Verarbeitung mit
einem 8-Bit-Signal, das aus einer MUX-Schaltung 318 ausgegeben
wird, unterzogen. Die Eingaben in die MUX-Schaltung 318 sind
das Summe[7:0]-Signal, das aus der szero-Schaltung 206 ausgegeben wird,
und ein 8-Bit-Signal, dessen Wert [00000001] beträgt. Das
Summe[7:0]-Signal wird aus der MUX-Schaltung 318 ausgegeben, wenn
das acc-Signal aktiviert ist; andernfalls wird das [00000001]-Signal
aus der MUX-Schaltung
ausgegeben.
-
Eine
UND-Schaltung, dargestellt durch ein UND-Gatter 320, führt eine
bitweise UND-Verarbeitung der Signale, die aus dem Replikator 316 und
aus der MUX-Schaltung 318 ausgegeben werden, durch. Das
resultierende 8-Bit-Signal wird in ein Register 322 eingegeben.
Ein Addierer 324 fügt
das 8-Bit-Signal,
das in dem Register 322 gespeichert ist, zu der 48-Bit-Summe, die in
dem Zählwertregister 312 gespeichert
ist, hinzu. Die neue Summe, die aus dem Addierer 324 ausgegeben
wird, wird in eine MUX-Schaltung 326 eingegeben. Zwei weitere
Sätze von
Eingaben in die MUX-Schaltung 326 sind mit einer logischen
Null bzw. einem csr_write-Wert oder csr-Schreiben-Wert verbunden.
Wenn ein csr_write-Freigabe signal an die MUX-Schaltung 326 aktiviert
ist, wird der Wert des csr_write-Werts aus der MUX-Schaltung 326 ausgegeben
und in das Zählwertregister 312 geschrieben.
Auf diese Weise kann ein Wert in das Zählwertregister 312 geladen werden. Ähnlich werden,
wenn das clear_counter-Signal oder Löschen_Zähler-Signal aktiviert ist,
48 Null-Bits aus der MUX-Schaltung 326 an das Zählwertregister 312 ausgegeben,
wodurch das Register gelöscht
wird.
-
Wenn
weder das csr_write-Signal noch das clear_counter-Signal aktiviert
ist und das acc-Signal aktiviert ist, wird die Ausgabe des Addierers 324 in das
Zählwertregister 312 geschrieben,
wodurch effektiv S Bits (d. h. der Wert des Summe[7:0]-Signals) zu
dem vorherigen Wert des Zählwertregisters 312 hinzugefügt werden.
Ein Nicht-Freigeben der Zählerschaltung 208 führt dazu,
dass das Zählwertregister 312 bei
seinem gegenwärtigen
Wert gehalten wird. Schließlich
muss zum Inkrementieren des Werts des Zählwertregisters 312 um
Eins die Zählerschaltung 208 freigegeben
werden, das inc-Signal muss aktiviert sein und das acc-Signal darf
nicht aktiviert sein.
-
Wie
oben detailliert beschrieben ist, stellt 4 dar, dass
der gesamte Datensammelbus 104 (1) für alle Leistungszähler verfügbar ist,
die durch den Leistungszähler 200 dargestellt
werden, was dieselben universal macht. Alle D Bits des debug_bus-Signals
können
durch die UND/ODER-Schaltung 201 verwendet
werden. N Bits, die an Blockgrenzen ausgerichtet sind, können durch
die sm_sel-Schaltung 206 ausgewählt werden, was eine vollständige Abdeckung
des Beobachtbarkeitsbusses 104 ermöglicht.
-
Eine
hierin beschriebene Implementierung der Erfindung liefert so einen
Universal-Leistungszähler.
Die gezeigten und beschriebenen Ausführungsbeispiele wurden als
lediglich darstellend charakterisiert; es sollte deshalb ohne weiteres
erkennbar sein, dass verschiedene Veränderungen und Modifizierungen
daran vorgenommen werden könnten, ohne
von dem Schutzbereich der vorliegenden Erfindung, wie in den folgenden
Ansprüchen
dargelegt ist, abzuweichen. Während
die Ausführungsbeispiele
z. B. Bezug nehmend auf eine ASIC beschrieben sind, ist zu erkennen,
dass die Ausführungsbeispiele
in anderen Typen von ICs implementiert sein könnten, wie z. B. in kundenspezifischen
Chipsätzen,
frei programmierbaren Gatterarrays („FPGAs"), programmierbaren Logikvorrichtungen
(„PLDs"), Universal-Array-Logik-Modulen
(„GAL"-Modulen) und dergleichen.
Ferner sollte zu erkennen sein, dass, während die gezeigten Ausführungsbeispiele
unter Verwendung von CSRs implementiert sein können, Steuersignale auch in
einer Vielzahl anderer Weisen angewendet werden können, beispielsweise
können sie
direkt oder über
Abtastregister oder modellspezifische Register („MSRs") angewendet werden. Obwohl Bezug nehmend
auf die beschriebenen Ausführungsbeispiele
spezifische Bitfeldgrößen dargestellt wurden,
z. B. 16-Bit-Schwelle für
eine Strukturübereinstimmung
(wobei die unteren 8 Bits für
die Schwelle verwendet werden), ein 80-Bit-Maskensignal, 3-Bit-sm_sel
usw., können
auch verschiedene andere Implementierungen auftreten.
-
Folglich
werden alle derartigen Modifizierungen, Erweiterungen, Variationen,
Veränderungen, Hinzufügungen,
Weglassungen, Kombinationen und dergleichen als innerhalb des Bereichs
der vorliegenden Erfindung erachtet, deren Schutzbereich einzig durch
die im Folgenden dargelegten Ansprüche definiert ist.