DE102006041444B4 - Schaltungsanordnung und Verfahren zum Erfassen einer Ausführungszeit eines Befehls in einem Rechnersystem - Google Patents

Schaltungsanordnung und Verfahren zum Erfassen einer Ausführungszeit eines Befehls in einem Rechnersystem

Info

Publication number
DE102006041444B4
DE102006041444B4 DE200610041444 DE102006041444A DE102006041444B4 DE 102006041444 B4 DE102006041444 B4 DE 102006041444B4 DE 200610041444 DE200610041444 DE 200610041444 DE 102006041444 A DE102006041444 A DE 102006041444A DE 102006041444 B4 DE102006041444 B4 DE 102006041444B4
Authority
DE
Grant status
Grant
Patent type
Prior art keywords
time
circuit arrangement
value
execution
clock
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE200610041444
Other languages
English (en)
Other versions
DE102006041444A1 (de )
Inventor
Dr. Zettler Thomas
Dr. Ing. Siggelkow Andreas
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Grant date

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware

Abstract

Eine Schaltungsanordnung zum Erfassen einer Ausführungszeit eines Befehls in einem Rechnersystem umfasst Zeitbestimmungsmittel (2) zum Bestimmen einer die Ausführungszeit kennzeichnenden Größe, mit den Zeitbestimmungsmitteln (2) gekoppelte Vergleichermittel (3), welche eingerichtet sind, um die die Ausführungszeit kennzeichnende Größe mit einem Schwellenwert zu vergleichen, und Speichermittel (4), welche eingerichtet sind, um die die Ausführungszeit kennzeichnende Größe und einen den Befehl kennzeichnenden Indikator zu speichern, falls die die Ausführungszeit kennzeichnende Größe den Schwellenwert übersteigt.

Description

  • Die vorliegende Erfindung betrifft eine Schaltungsanordnung und ein Verfahren zum Erfassen einer Ausführungszeit eines Befehls in einem Rechnersystem, insbesondere eine Schaltungsanordnung und ein Verfahren für On-Chip-Debugging, welche es ermöglichen, eine Ausführungszeit eines Befehls zu ermitteln und zu speichern.
  • Die Software moderner integrierter Systeme kann in echtzeitkritische („real time software”) und echtzeitunkritische Applikationen unterteilt werden. Bei echtzeitkritischer Software muss beispielsweise aufgrund eines Standards oder wegen Güteanforderungen eines Anwenders eine bestimmte Aufgabe oder ein bestimmter Befehl in einer vorgegebenen Zeit abgearbeitet werden. Hohe Latenzzeiten bei der Befehlsausführung stellen ein potenzielles Problem für Echtzeitsoftware dar, da insbesondere lange Latenzzeiten im Extremfall zu einem Systemabsturz führen können.
  • Eine häufige Quelle für Echtzeitverletzungen sind Speicherzugriffe, da durch die hohe Leistung moderner Prozessoren die Diskrepanz zwischen der immer kürzer werdenden Abarbeitungszeit von Instruktionen im Prozessor und der im Verhältnis dazu zunehmenden Zugriffszeit auf Speichereinheiten zunimmt. Eine Maßnahme zur Verringerung der Speicherzugriffszeit ist die Verwendung so genannter Cache-Speicher, wobei ein Teil der benötigten Daten in einem kleinen schnellen Speicher, welcher in der Nähe des Prozessors angeordnet ist, abgelegt werden kann. Die im Cache-Speicher abgelegten Daten werden unter Berücksichtung der Applikation derart ausgewählt, dass möglichst alle jeweils benötigten Daten im Cache-Speicher vorhanden sind. Bei der Auswahl kann jedoch niemals sichergestellt werden, dass wirklich alle benötigten Daten oder Teile des Instruktionscodes im Cache-Speicher vorliegen. In diesem Fall, in welchem ein benötigtes Datum nicht im Cache-Speicher vorliegt (Cache Miss-Fall), muss auf einen weiteren Speicher zugegriffen werden, was typischerweise eine längere Zugriffszeit mit sich bringt. Somit sind mit derartigen Zugriffen häufig hohe Latenzzeiten verbunden. Hohe Latenzzeiten, welche zur Verletzung von Echtzeitbedingungen führen können, können jedoch auch andere Ursachen aufweisen, wie beispielsweise Buskonflikte und Registerzugriffe.
  • Um Software dahingehend optimieren zu können, dass hohe Latenzzeiten und somit auch die mit diesen verbundenen Systemabstürze vermieden werden können, wird die Software ausgetestet („debugging”). Dazu wird die Ausführung einer Folge von Befehlen durch den Prozessor überwacht, um mögliche Probleme zu detektieren. Ein derartiges Verfahren ist beispielsweise in der JP 2002351695 A beschrieben, bei welcher eine Programmausführung unterbrochen wird, um den Zustand eines Befehlszählerwerts zu sichern. Aus der JP 2000222256 A ist eine Vorrichtung zum Austesten eines Prozessors mit einem Cache-Speicher bekannt, bei welcher ein „Instruction Fetch”-Wert, ein „Cache Hit”-Wert und eine Verzweigungszieladressinformation ausgegeben werden, wobei aus diesen Zahlen das Cache Hit-Verhältnis berechnet werden kann. Die Vorrichtungen und das Verfahren dieser Druckschriften ermöglichen jedoch keine detaillierte Analyse der mit der Ausführung einzelner Befehle verbundenen Latenzzeiten, welche für das Austesten von Software vorteilhaft wäre.
  • Die JP 07-160545 A offenbart ein Verfahren, bei dem die Ausführungszeit eines Befehls durch einen Prozessor gemessen und mit einem Referenzwert verglichen wird. Bei einer Abweichung der gemessenen Ausführungszeit von dem Referenzwert wird eine Fehlermeldung erzeugt. Während dieses Verfahren zur Überprüfung der Leistung eines Prozessors geeignet ist, erlaubt es keine systematische Überwachung von Ausführungszeiten einer Folge von Befehlen, da die Referenzwerte nur für spezifische, vorgegebene Befehle vorliegen und ein vorcharakterisierter Code zur Durchführung des Verfahrens nötig ist.
  • Die US 6 691 080 B1 offenbart ein Simulationsverfahren zur Ermittlung eines Cache-Hit-Werts, bei dem Programmunterbrechungen berücksichtigt werden. Dazu wird eine Programmausführung in mehreren Ebenen simuliert, wobei eine Vielzahl von Informationen über die Ausführung eines Befehls gesammelt und in einer nachfolgenden Ebene weiterverarbeitet wird, um Schätzwerte für Ausführungszeiten von Befehlen bzw. einen Cache-Hit-Wert zu ermitteln. Da zur Simulation auf einer nachgeordneten Ebene eine Vielzahl von Informationen über die Befehlsausführung auf einer vorhergehenden Ebene nötig ist, ist häufig eine große Speicherkapazität nötig, um mit diesem Verfahren auch lange Befehlsfolgen analysieren zu können. Weiterhin kann ein Simulationsverfahren, wie es in der US 6 691 080 B1 offenbart sind, auch manuelle Eingriffe in den Programmablauf erfordern, was seine Anwendung beim Austesten langer Befehlsfolgen erschwert.
  • Der vorliegenden Erfindung liegt die Aufgabe zu Grunde, eine verbesserte Vorrichtung und ein verbessertes Verfahren, insbesondere für On-Chip-Debugging, zum Erfassen einer Ausführungszeit eines Befehls zur Verfügung zu steilen. Insbesondere liegt der Erfindung die Aufgabe zu Grunde, eine Vorrichtung und ein Verfahren zur Verfügung zu stellen, welche bzw. welches es ermöglicht zu ermitteln, bei welchem Befehl eines Programmcodes welche Latenzzeiten aufgetreten sind, um dadurch Verletzungen von Echtzeitanforderungen einschränken zu können, und welche bzw. welches bei vorgegebener Speicherkapazität die Analyse längerer Befehlsfolgen ermöglicht.
  • Erfindungsgemäß wird diese Aufgabe gelöst durch eine Schaltungsanordnung nach Anspruch 1, eine integrierte Schaltung nach Anspruch 19 und ein Verfahren nach Anspruch 22. Die abhängigen Ansprüche definieren vorteilhafte oder bevorzugte Ausführungsbeispiele der Erfindung.
  • Eine Schaltungsanordnung nach einem Ausführungsbeispiel der Erfindung, insbesondere für On-Chip-Debugging, zum Erfassen einer Ausführungszeit eines Befehls, welcher von einem Rechnersystem mit einem Prozessor ausgeführt wird, umfasst Zeitbestimmungsmittel zum Bestimmen einer die Ausführungszeit kennzeichnenden Größe, Vergleichermittel, welche mit dem Zeitbestimmungsmitteln gekoppelt sind und eingerichtet sind, um die die Ausführungszeit kennzeichnende Größe mit einem Schwellenwert zu vergleichen, und Speichermittel, welche mit den Vergleichermitteln gekoppelt sind und eingerichtet sind, um den den Befehl kennzeichnenden Indikator sowie, bei einem Ausführungsbeispiel, weiterhin die die Ausführungszeit kennzeichnende Größe zu speichern, falls die die Ausführungszeit kennzeichnende Größe den Schwellenwert übersteigt. Wie nachfolgend näher erläutert werden wird, kann die die Ausführungszeit kennzeichnende Größe beispielsweise die Ausführungszeit in Echtzeit selbst oder eine Anzahl von Taktzyklen des Prozessors sein. Der den Befehl kennzeichnende Indikator kann beispielsweise ein Befehlszählerwert des Prozessors sein. Während die Schaltungsanordnung eingerichtet ist, um die die Ausführungszeit kennzeichnende Größe für jeden Befehl zu ermitteln, wird diese Größe sowie der zugehörige Indikator für den Befehl nur dann gespeichert, wenn die die Ausführungszeit kennzeichnende Größe den Schwellenwert übersteigt, wodurch die Anforderungen hinsichtlich der Speicherkapazität der Speichermittel reduziert werden oder bei vorgegebener Speicherkapazität eine längere Abfolge von Befehlen, d. h. eine größere Applikation untersucht werden kann.
  • Zum Speichern des Schwellenwerts kann ein Schwellenwertspeicher, beispielsweise in der Form eines Registers, vorgesehen sein, aus welchem die Vergleichermittel den Schwellenwert auslesen.
  • Um die die Ausführungszeit kennzeichnende Größe zu bestimmen, können die Zeitbestimmungsmittel extern, beispielsweise von dem Prozessorkern, mit Signalen versorgt werden, welche einen Beginn und/oder ein Ende der Ausführung des Befehls anzeigen. Bei einem Ausführungsbeispiel umfasst jedoch die Schaltungsanordnung Schaltungszustandssignaldetektormittel, welche eingerichtet sind, um ein Schaltungszustandssignal zu überwachen, um basierend auf einer Änderung des Schaltungszustandssignals ein den Beginn und/oder das Ende der Ausführung des Befehls anzeigendes Signal an die Zeitbestimmungsmittel auszugeben. Das Schaltungszustandssignal, welches von den Schaltungszustandssignaldetektormitteln überwacht wird, kann jedes geeignete Schaltungszustandssignal sein, dessen Änderung den Beginn und/oder das Ende der Ausführung irgendeines Befehls oder einer bestimmten Klasse von Befehlen anzeigt. Beispielsweise kann das Schaltungszustandssignal ausgewählt sein aus einer Gruppe umfassend einen Befehlszählerwert, ein Cache Miss-Signal, ein Stall-Signal, welches anzeigt, dass der Prozessor auf die Verfügbarkeit von Daten oder Programmcode wartet, und ein einen Speicherzugriff anzeigendes Signal (Cache fetch). Bei mehrstufigen Caches ist es denkbar und sinnvoll, dass das Schaltungszustandssignal die logische Kombination mehrerer Cache Miss-Signale darstellt. Beispielsweise kann bei zweistufigen Caches das logische AND der Cache Miss-Signale als Startsignal verwendet werden. Das Schaltungszustandssignal kann in Abhängigkeit von den spezifischen Zielen des On-Chip-Debugging ausgewählt werden. Soll beispielsweise die mit jeder Befehlsausführung verbundene Latenzzeit ermittelt werden, dient beispielsweise eine Änderung des Befehlszählerwerts sowohl als das ein Ende einer Befehlsausführung anzeigende Signal als auch als das den Beginn der Ausführung des nächsten Befehls anzeigende Signal. Sollen dagegen nur derartige Befehle erfasst werden, bei welchen ein Datum nicht im Cache gefunden wird, wird beispielsweise das Cache Miss-Signal überwacht, um ein Startsignal für die Zeitbestimmungsmittel zu erzeugen, und ein den Abschluss der Cache Fetch-Operation anzeigendes Signal wird überwacht, um das Stoppsignal für die Zeitbestimmungsmittel zu erzeugen.
  • Die Schaltungszustandssignaldetektormittel können derart ausgestaltet sein, dass sie eine Registerkette mit einem ersten Register und einem zweiten Register für jeweils ein Bit des Schaltungszustandssignals umfassen. Dabei speichert das erste Register und das zweite Register jeweils einen Wert des Bits zu verschiedenen Zeiten, insbesondere während aufeinanderfolgender Taktzyklen des Prozessors. Die in dem ersten und zweiten Register gespeicherten Werte werden verglichen, beispielsweise mittels eines XOR-Gatters, so dass bitweise eine Änderung des Schaltungszustandssignals erfasst werden kann.
  • Die Zeitbestimmungsmittel umfassen bei einem Ausführungsbeispiel Zählermittel zum Zählen von Taktzyklen des Prozessors und sind eingerichtet, um die die Ausführungszeit kennzeichnende Größe basierend auf einer Taktzyklenanzahl, welche während der Ausführung des Befehls ermittelt wird, zu bestimmen. Die Taktzyklenanzahl kann dabei der Gesamtzahl von Taktzyklen während der Ausführung des Befehls entsprechen. Jedoch kann die Taktzyklenanzahl auch nur die Anzahl von Taktzyklen während eines Intervalls während der Ausführung des Befehls sein, während dessen die Taktfrequenz konstant ist. Im letzteren Fall ist es insbesondere möglich, die Ausführungszeit des Befehls auch dann zu bestimmen, wenn die Taktfrequenz nicht konstant ist, wie nachfolgend näher erläutert.
  • Die die Ausführungszeit kennzeichnende Größe kann insbesondere die Ausführungszeit des Befehls selbst sein oder diese umfassen. In diesem Fall sind die Zeitbestimmungsmittel bei einem Ausführungsbeispiel dazu eingerichtet, eine Taktfrequenz oder Taktzyklenzeit des Prozessors zu erfassen, um basierend auf der Taktfrequenz oder Taktzyklenzeit sowie der Taktzyklenanzahl die Ausführungszeit zu bestimmen. Zu diesem Zweck können die Zeitbestimmungsmittel Multiplikatormittel zum Multiplizieren der Taktzyklenzeit mit der Taktzyklenanzahl umfassen. Ist insbesondere die Taktfrequenz oder Taktzyklenzeit konstant, kann die Ausführungszeit durch Multiplizieren der Taktzyklenanzahl, in diesem Fall der Anzahl von Taktzyklen während der gesamten Befehlsausführung, mit der Taktzyklenzeit durch die Multiplikatormittel ermittelt werden. Ändert sich die Taktfrequenz oder Taktzyklenzeit hingegen während der Befehlsausführung, wird das Zeitintervall, das der Ausführung des Befehls entspricht, in Teilintervalle mit jeweils konstanter Taktzyklenzeit zerlegt, wobei die Taktzyklenanzahl während jedes der Teilintervalle ermittelt und mit der entsprechenden Taktzyklenzeit multipliziert wird. In diesem Fall umfasst die Schaltungsanordnung bei einem Ausführungsbeispiel mit den Multiplikatormitteln gekoppelte Addierermittel, welche eingerichtet sind, um bei einer Änderung der Taktfrequenz oder Taktzyklenzeit das von den Multiplikatormitteln ermittelte Produkt der Taktzyklenzeit und Taktzyklenanzahl zu einem Wert hinzuzuaddieren, welcher in den Addierermitteln gespeichert ist. Auf diese Weise kann die akkumulierte Ausführungszeit, d. h. die Summe der Längen der einzelnen Intervalle mit jeweils konstanter Taktzyklenzeit oder Taktfrequenz, ermittelt werden. Alternativ kann in dem Fall, in welchem die Taktzyklenzeit zwar veränderlich ist, jedoch immer ein ganzzahliges Vielfaches einer minimalen Zeiteinheit ist oder sich durch dieses annähern lässt, die Ausführungszeit einfacher dadurch bestimmt werden, dass die Zeitbestimmungsmittel eingerichtet sind, um ein Inkrement der Zählermittel in Abhängigkeit von der ermittelten Taktfrequenz oder Taktzyklenzeit einzustellen. Vorteilhaft wird dabei für eine gegebene Taktzyklenzeit das Inkrement als Quotient zwischen der gegebenen Taktzyklenzeit und der minimalen Zeit eingestellt. Die Inkremente für verschiedene Taktzyklenzeiten können insbesondere durch eine Inkrementlogikschaltung ermittelt werden, welche den richtigen Wert für die jeweils ermittelte Taktzyklenzeit einstellt.
  • Die die Ausführungszeit kennzeichnende Größe kann jedoch nicht nur die Ausführungszeit selbst, sondern beispielsweise die Taktzyklenanzahl sein. Insbesondere dient bei konstanter Taktfrequenz oder Taktzyklenzeit des Prozessors die Taktzyklenanzahl in gleicher Weise als Indikator für die mit der Befehlsausführung verbundene Zeitdauer wie die Ausführungszeit selbst. Dies gilt jedoch auch noch in dem Fall, in welchem die Taktfrequenz oder Taktzyklenzeit des Prozessors variabel ist. Im letzteren Fall umfasst die Schaltungsanordnung bei einem Ausführungsbeispiel Frequenzdetektormittel zum Erfassen einer Taktfrequenz oder Taktzyklenzeit des Prozessors, wobei der Schwellenwert, mit welchem die die Ausführungszeit kennzeichnende Größe, also die Taktzyklenanzahl, verglichen wird, in Abhängigkeit von der Taktfrequenz oder Taktzyklenzeit aus einer Mehrzahl von Werten für den Schwellenwert ausgewählt. wird. Insbesondere kann die Schaltungsanordnung einen mit den Vergleichermitteln gekoppelten Schwellenwertspeicher zum Speichern der Mehrzahl von Werten für den Schwellenwert umfassen, aus welchem der für die jeweilige Taktzyklenzeit relevante Schwellenwert ausgelesen wird. Bei einem Ausführungsbeispiel ist die Schaltungsanordnung dann weiterhin derart eingerichtet, dass zusätzlich zu der die Ausführungszeit kennzeichnenden Größe und dem den Befehl kennzeichnenden Indikator auch die Taktfrequenz oder Taktzyklenzeit gespeichert wird, falls die die Ausführungszeit kennzeichnende Größe den Schwellenwert übersteigt. Dadurch wird es möglich, während späterer Phasen des Debugging die Ausführungszeit aus der Taktzyklenanzahl und der Taktzyklenzeit zu berechnen. Weiter können die Frequenzdetektormittel eingerichtet sein, um eine Änderung der Taktfrequenz oder Taktzyklenzeit zu erfassen, wobei die Speichermittel mit dem Frequenzdetektormittel gekoppelt und eingerichtet sind, um die Taktfrequenz oder Taktzyklenzeit und die Taktzyklenanzahl, d. h. den aktuellen Wert der Zählermittel, zu speichern, falls die Frequenzdetektormittel eine Änderung der Taktfrequenz oder Taktzyklenzeit erfassen. In anderen Worten werden die für die Berechnung der Ausführungszeit wesentlichen Größen nicht nur bei Abschuss der Befehlsausführung, sondern auch bei einem Wechsel der Taktfrequenz gespeichert, wenn die Taktzyklenanzahl bereits den vorherbestimmten Schwellenwert übersteigt. Dadurch wird sichergestellt, dass alle zur Bestimmung der Ausführungszeit in Echtzeit benötigten Informationen verfügbar sind.
  • Die Speichermittel sind bei einem Ausführungsbeispiel derart ausgestaltet, dass bei Erreichen der Speicherkapazität die ältesten Werte zuerst überschrieben werden und dass bei einem Reset des Prozessorkerns die gespeicherten Werte auslesbar bleiben.
  • Der den Befehl kennzeichnende Indikator kann insbesondere ein Befehlszählerwert, d. h. der Wert des Befehlszählerregisters des Prozessors sein.
  • Die Schaltungsanordnung ist bei einem Ausführungsbeispiel als integrierter Bestandteil einer integrierten Schaltung ausgestaltet, d. h. als On-Chip-Debug-Vorrichtung. Bevorzugt ist die Debug-Schaltungsanordnung aktivierbar und deaktivierbar, so dass ein spezieller Debug-Modus ausgeführt werden kann.
  • Entsprechend wird nach einem weiteren Ausführungsbeispiel der Erfindung eine integrierte Schaltung bereitgestellt, welche einen Prozessor und eine Schaltungsanordnung nach einem Ausführungsbeispiel umfasst. Der Prozessor kann einen Befehlszähler umfassen, wobei die Schaltungsanordnung Schaltungszustandssignaldetektormittel umfasst, die mit dem Befehlszähler gekoppelt sind, um einen Wert des Befehlszählers zu überwachen, und die weiterhin eingerichtet sind, um ein einen Beginn und/oder ein Ende der Ausführung des Befehls anzeigendes Signal an die Zeitbestimmungsmittel der Schaltungsanordnung auszugeben, falls eine Änderung des Befehlszählerwerts erfasst wird. Diese Ausgestaltung, bei welcher das Start- und Stopp-Signal für die Schaltungsanordnung basierend auf dem Befehlszählerwert erzeugt wird, hat den Vorteil, dass die Ausführungszeit jedes Befehls überwacht wird.
  • Bei einem Ausführungsbeispiel umfasst die integrierte Schaltung eine Debug-Schnittstelle zum Auslesen der Speichermittel der Schaltungsanordnung. Dadurch können selbst nach einem Systemabsturz die für das Debugging notwendigen Daten aus den Speichermitteln ausgelesen werden. Bei einem Ausführungsbeispiel sind die Speichermittel der Schaltungsanordnung ein existierender Debug-Speicher des Prozessors.
  • Ein Verfahren nach einem Ausführungsbeispiel der Erfindung, insbesondere für On-Chip-Debugging, zum Erfassen einer Ausführungszeit eines Befehls, der von einem Rechnersystem mit einem Prozessor ausgeführt wird, umfasst die Schritte Bestimmen einer die Ausführungszeit kennzeichnenden Größe, Vergleichen der die Ausführungszeit kennzeichnenden Größe mit einem Schwellenwert und Speichern eines den Befehl kennzeichnenden Indikators und, bei einem Ausführungsbeispiel, der die Ausführungszeit kennzeichnenden Größe, falls die die Ausführungszeit kennzeichnende Größe den Schwellenwert übersteigt. Das erfindungsgemäße Verfahren weist die Vorteile auf, dass systematisch alle Befehle oder bestimmte Klassen von Befehlen überwacht werden können, die die Ausführungszeit kennzeichnende Größe jedoch nur gespeichert wird, falls sie einen bestimmten Schwellenwert übersteigt. Dadurch werden Speicheranforderungen reduziert.
  • Das Bestimmen der die Ausführungszeit kennzeichnenden Größe kann insbesondere ein Empfangen eines einen Beginn und/oder ein Ende der Ausführung des Befehls kennzeichnenden Signals umfassen. Das den Beginn und/oder das Ende der Ausführung kennzeichnende Signal kann dabei ausgewählt sein aus einer Gruppe umfassend eine Änderung eines Befehlszählerwerts, eines Cache Miss-Signals, eines Stall-Signals und eines einen Speicherzugriff anzeigenden Signals des Prozessors. Bei einem Ausführungsbeispiel ist sowohl das den Beginn der Ausführung des Befehls kennzeichnende Signal als auch das das Ende der Ausführung des Befehls kennzeichnende Signal die Änderung des Befehlszählerwerts. Bei einem anderen Ausführungsbeispiel ist das den Beginn der Ausführung des Befehls kennzeichnende Signal eine Änderung des Cache Miss-Signals, während das das Ende der Ausführung des Befehls kennzeichnende Signal eine Änderung des einen Speicherzugriff anzeigenden Signals des Prozessors ist. Durch die geeignete Wahl von Schaltungszustandssignalen, auf deren Basis ein Start-Signal und/oder ein Stopp-Signal für das Bestimmen der die Ausführungszeit kennzeichnenden Größe ermittelt wird, können alle Befehle oder bestimmte Klassen von Befehlen ausgewählt werden, deren Ausführungszeit überwacht wird.
  • Das Bestimmen der die Ausführungszeit kennzeichnenden Größe kann ein Bestimmen einer Taktzyklenanzahl während der Ausführung des Befehls umfassen. Die Taktzyklenanzahl kann dabei wiederum die gesamte Anzahl von Taktzyklen während der Befehlsausführung sein, oder die Anzahl von Taktzyklen während der Ausführung des Befehls in einem Intervall, in welchem die Taktfrequenz oder Taktzyklenzeit konstant gehalten wird.
  • Die die Ausführungszeit kennzeichnende Größe kann insbesondere die Ausführungszeit des Befehls selbst sein. In diesem Fall umfasst das Bestimmen der die Ausführungszeit kennzeichnenden Größe ein Erfassen einer Taktzyklenzeit des Prozessors und ein Multiplizieren der Taktzyklenzeit mit der Taktzyklenanzahl. Insbesondere kann, falls die Taktzyklenzeit oder Taktfrequenz des Prozessors konstant ist, die Ausführungszeit als Produkt aus der gesamten Taktzyklenanzahl während der Befehlsausführung und der Taktzyklenzeit berechnet werden. Fall die Taktzyklenzeit veränderlich ist, umfasst das Bestimmen der die Ausführungszeit kennzeichnenden Größe beispielsweise ein Ermitteln einer Taktzyklenanzahl während jeweils eines Zeitintervalls, während dessen die Taktzyklenzeit konstant ist, ein Multiplizieren der Taktzyklenanzahl während des Zeitintervalls mit der entsprechenden Taktzyklenzeit und ein Aufaddieren von Produkten aus der Taktzyklenanzahl während des Zeitintervalls mit der entsprechenden Taktzyklenzeit. In anderen Worten wird der Zeitraum der Befehlsausführung in mehrere Zeitintervalle mit jeweils konstanter Taktzyklenzeit unterteilt, wobei für jedes dieser Zeitintervalle die Dauer des Zeitintervalls durch Bestimmen der Taktzyklenanzahl und Multiplikation mit der Taktzyklenzeit ermittelt wird.
  • Die die Ausführungszeit kennzeichnende Größe kann auch die Taktzyklenanzahl sein oder diese umfassen. Insbesondere ist bei konstanter Taktzyklenzeit des Prozessor die Taktzyklenanzahl ein ebenso guter Indikator für die Ausführungszeit wird die Ausführungszeit selbst. Bei variabler Taktzyklenzeit oder Taktfrequenz des Prozessors kann, falls die die Ausführungszeit kennzeichnende Größe die Taktzyklenanzahl ist, der Schwellenwert, mit welchem diese Größe verglichen wird, in Abhängigkeit von der Taktfrequenz oder Taktzyklenzeit des Prozessors gewählt werden. Bei einem Ausführungsbeispiel wird in diesem Fall zusätzlich zu der Taktzyklenanzahl während der Befehlsausführung und dem den Befehl kennzeichnenden Indikator jeweils auch die Taktfrequenz oder Taktzyklenzeit gespeichert.
  • Der den Befehl kennzeichnende Indikator kann ein Befehlszählerwert des Prozessors sein.
  • Nach einem Ausführungsbeispiel wird das Verfahren als ein On-Chip-Debugverfahren ausgeführt.
  • Das Verfahren kann ein Auslesen der die Ausführungszeit kennzeichnenden Größe und des den Befehl kennzeichnenden Indikators umfassen, um diese einer weiteren Analyse zuzuführen, was es beispielsweise ermöglicht, mögliche Verletzungen von Echtzeitbedingungen während einer Applikation zu erkennen.
  • Die Schaltungsanordnung und das Verfahren nach den verschiedenen Ausführungsbeispielen weisen den Vorteil auf, dass sie eine systematische Überwachung von mit einzelnen Befehlen verbundenen Ausführungszeiten, entweder für alle Befehle aus einer Folge von Befehlen oder für Befehle einer bestimmten Klasse von Befehlen, wie beispielsweise Speicherzugriffe, erlauben, während die Anforderungen an den Speicherplatz zum Speichern der Ausführungszeiten moderat gehalten werden. Die Schaltungsanordnung und das Verfahren nach den verschiedenen Ausführungsbeispielen kann insbesondere beim Austesten von Software, speziell bei On-Chip-Debugverfahren, Verwendung finden.
  • Im Folgenden werden Ausführungsbeispiele der vorliegenden Erfindung unter Bezugnahme auf die beigefügten Figuren detaillierter erläutert.
  • 1 ist ein Schaltbild einer Schaltungsanordnung zum Erfassen einer Ausführungszeit eines Befehls nach einem ersten Ausführungsbeispiel der Erfindung.
  • 2 zeigt ein Schaltbild für eine abgewandelte Implementierung der Zeitbestimmungsmittel, welche bei der Schaltungsanordnung von 1 Verwendung finden kann.
  • 3 zeigt ein Schaltbild für eine weitere abgewandelte Implementierung der Zeitbestimmungsmittel, welche bei der Schaltungsanordnung von 1 Verwendung finden kann.
  • 4 zeigt ein Schaltbild einer Schaltungsanordnung zum Erfassen einer Ausführungszeit eines Befehls nach einem zweiten Ausführungsbeispiel der Erfindung.
  • 5 zeigt ein Schaltbild für eine mögliche Implementierung von Schaltungszustandssignaldetektormitteln.
  • Unter Bezugnahme auf 1 wird eine Schaltungsanordnung 1 zum Erfassen einer Ausführungszeit eines Befehls nach einem ersten Ausführungsbeispiel erläutert werden. Die Schaltungsanordnung umfasst einen Zähler 2 zum Zählen von Taktzyklen oder Taktimpulsen CLK, einen Komparator 3 zum Vergleichen der Taktzyklenanzahl mit einem Schwellenwert, und einen Speicher 4 zum Speichern einer von dem Zähler 2 ermittelten Taktzyklenanzahl oder einer anderen Größe, welche die Ausführungszeit des Befehls kennzeichnet, sowie eines Indikators, welcher den gerade ausgeführten Befehl kennzeichnet. Wie nachfolgend näher erläutert werden wird, wird bei der Schaltungsanordnung 1 von 1 die Taktzyklenanzahl oder Ausführungszeit des Befehls nur dann in dem Speicher 4 gespeichert, falls sie einen vorherbestimmten Schwellenwert übersteigt. Der Schwellenwert ist in dem Schwellenwertregister 5 gespeichert. Der Komparator 3 vergleicht den Wert COUNT_VAL des Zählers 2 mit dem Schwellenwert LIMIT, welche an den Eingängen A bzw. B des Komparators 3 anliegen, und der Ausgang des Komparators 3 ist true, wenn der Zählerwert größer als der Schwellenwert ist.
  • Die Schaltungsanordnung umfasst einen Prozessorsignaldetektor 7 zum Überwachen eines Prozessorsignals, welcher als Änderungsdetektor ausgestaltet ist. Der Prozessorsignaldetektor 7 bildet den Schaltungszustandsdetektor für das vorliegende Ausführungsbeispiel. Eine mögliche Realisierung des Prozessorsignaldetektors 7 wird unten unter Bezugnahme auf 5 näher erläutert werden. Der Prozessorsignaldetektor 7 hat die Funktion, basierend auf der Überwachung des Prozessorsignals ein Start- bzw. Stopp-Signal zu erzeugen, welches einen Beginn bzw. ein Ende einer Befehlsausführung kennzeichnet. Dabei umfasst der Begriff Prozessorsignal allgemein sowohl solche Signale, welche im Prozessorkern selbst erzeugt werden, als auch solche Signale, welche in den Prozessorkern eingekoppelt werden. Bei der in 1 dargestellten Schaltungsanordnung ist das Prozessorsignal ein Wert PC_VAL eines Befehlszählers des Prozessorkerns, welcher von dem Befehlszähler 6 des Prozessorkerns zu dem Prozessorsignaldetektor 7 geführt wird. Es sollte beachtet werden, dass der Befehlszähler 6 nur aus Gründen der Übersichtlichkeit in 1 mit dargestellt ist, typischerweise aber kein Bestandteil der Schaltungsanordnung zum Erfassen einer Ausführungszeit eines Befehls ist. Eine Änderung des Befehlszählerwerts PC_VAL zeigt an, dass ein Befehl abgearbeitet ist und der Prozessor mit der Ausführung eines neuen Befehls beginnt. Entsprechend hat der Prozessorsignaldetektor 7 zwei Ausgänge, von welchen einer ein Signal RESET_START trägt und mit dem Zähler 2 gekoppelt ist, während der andere ein Signal STORE2 trägt und mit einem AND-Gatter 8 gekoppelt ist. Erfasst der Prozessorsignaldetektor 7 eine Änderung des Befehlszählerwerts PC_VAL, wird sowohl das Signal STORE2 als auch, mit einer Zeitverzögerung, das Signal RESET_START true. Sowohl das Signal STORE2 als auch der Ausgang des Komparators 3 werden an Eingänge des AND-Gatters 8 geführt, so dass das Signal STORE an dessen Ausgang dann und nur dann true wird, falls bei einer Änderung des Befehlszählerwerts, welche dadurch angezeigt wird, dass STORE2 true wird, der Wert des Zählers 2 den im Schwellenwertspeicher 5 gespeicherten Schwellenwert übersteigt.
  • Der Ausgang des AND-Gatters 8 ist mit einem Eingang 4a des Speichers 4 verbunden, so dass, wenn das Signal STORE true wird, Werte des Befehlszählers, PC_VAL, und des Zählers 2, COUNT_VAL, an dem Dateneingang 4b in dem Speicher 4 gespeichert werden.
  • Das Signal RESET_START an dem zweiten Ausgang des Prozessorsignaldetektors 7, welcher mit einem Eingang des Zählers 2 verbunden ist, wird ebenfalls true, wenn sich der Wert PC_VAL des Befehlszählers ändert. In diesem Fall wird der Wert des Zählers 2 auf 0 zurückgesetzt, und der Zähler beginnt von neuem, die Taktimpulse CLK des Prozessors zu zählen. Eine zeitliche Verzögerung zwischen den Übergängen der Signale STORE2 und RESET_START auf true stellt sicher, dass der Wert des Zählers 2 ausgelesen werden kann, bevor er auf 0 zurückgesetzt wird.
  • Es sollte beachtet werden, dass bei der Schaltungsanordnung von 1 Daten bezüglich der Ausführungszeit eines Befehls, nämlich die Anzahl von Taktzyklen, welche während der Befehlsausführung verstreicht, und der zugehörige Wert des Befehlszählers für den entsprechenden Befehl, nur dann gespeichert wird, wenn die Anzahl von Taktzyklen, d. h. der Wert des Zählers 2, den im Schwellenwertregister 5 gespeicherten Schwellenwert übersteigt. Damit verbunden ist eine drastische Reduktion der zu speichernden Daten im Vergleich zu einer Schaltung, bei welcher die Taktzyklenanzahl nicht mit einem Schwellenwert verglichen wird. Dies erlaubt es, bei vorgebebener Speicherkapazität des Speichers 4 die Ausführung einer längeren Folge von Befehlen durch den Prozessor zu überwachen, um die Software oder die Applikationen entsprechend auszutesten.
  • Da in dem Speicher 4 nicht nur die Taktzyklenanzahl während der Ausführung des Befehls, welche ein Maß für die Ausführungszeit ist, sondern zusätzlich auch der Wert des Befehlszählers gespeichert wird, ermöglichen die in dem Speicher 4 gespeicherten Daten eine Analyse, bei welchen Befehlen einer Folge von Befehlen große Latenz- oder Ausführungszeiten auftreten, welche zu einer möglichen Verletzung von Echtzeitbedingungen führen können.
  • Der in dem Schwellenwertregister 5 gespeicherte Schwellenwert wird geeignet so gewählt, dass zunächst die Befehle in einer Folge von Befehlen identifiziert werden können, welche besonders lange Ausführungszeiten aufweisen. Mit zunehmender Softwareoptimierung, d. h. mit der Eliminierung von Befehlen mit sehr langen Ausführungszeiten, kann der Schwellenwert entsprechend abgesenkt werden, um die Software weiter optimieren zu können. Ein typischer Ausgangswert für den Schwellenwert könnten beispielsweise 3–5 Taktzyklen sein, so dass die Taktzyklenanzahl und der Wert des Befehlszählers nur dann gespeichert wird, wenn die Ausführung des Befehls eine Länge von 3–5 Taktzyklen übersteigt. Im Lauf der Optimierung kann der Schwellenwert dann auf zwei Taktzyklen oder sogar auf einen Taktzyklus abgesenkt werden. Da ein großer Teil der Befehle in heutigen Prozessoren in einem Taktzyklus abgearbeitet werden kann, ist mit dem Schwellenwert eine drastische Reduktion der zu speichernden Datenmenge verbunden.
  • Trotz der Reduktion der zu speichernden Datenmenge kann es vorkommen, dass beispielsweise bei langen Abfolgen von Befehlen oder bei ungenügend optimierter Software die Speicherkapazität des Speichers 4 überschritten wird. Dazu kann der Speicher 4 daher als FIFO ausgestaltet sein, so dass bei einer Überschreitung der Speicherkapazität zuerst die ältesten Daten überschrieben werden.
  • Die in 1 gezeigte Schaltungsanordnung kann als integrierter Teil einer integrierten Schaltung, welche einen Prozessor umfasst, ausgestaltet sein, d. h. die Schaltungsanordnung bildet eine On-Chip-Debugvorrichtung. Um zu gewährleisten, dass ein Benutzer selbst nach einem Systemabsturz auf die im Speicher 4 gespeicherten Daten zugreifen kann, um Software weiter zu optimieren, verfügt die integrierte Schaltung, welche die Schaltungsanordnung 1 umfasst, beispielsweise über eine Debug-Schnittstelle, welche ein Auslesen des Speichers 4 selbst nach einem Systemabsturz ohne einen Neustart des Prozessors ermöglicht. Verfügt die integrierte Schaltung über weitere On-Chip-Debugvorrichtungen, so kann ein Bestandteil oder können mehrere Bestandteile der Schaltungsanordnung als kombinierte Element mit den anderen Debugvorrichtungen ausgestaltet sein. Beispielsweise kann der Speicher 4 ein Debug-Speicher sein, welcher von mehreren Debugvorrichtungen gleichzeitig genutzt wird.
  • Bei dem Ausführungsbeispiel von 1 wird die Taktzyklenanzahl als Maß für die Ausführungszeit eines Befehls in dem Speicher 4 abgelegt. Nicht nur bei konstanter Taktzyklenzeit, sondern auch bei nur schwach variierender Taktzyklenzeit oder Taktfrequenz des Prozessors ist die Taktzyklenanzahl ein gutes Maß für die Ausführungszeit, welches es ermöglicht, mögliche Verletzungen von Echtzeitbedingungen zu identifizieren. Jedoch ist häufig ein genaueres Maß für die Ausführungszeit wünschenswert, beispielsweise dann, wenn sich die Taktfrequenz während der Abarbeitung der Folge von Befehlen stärker ändern kann. Ein genaueres Maß für die Ausführungszeit eines Befehls erhält man in diesem Fall dadurch, dass die sich ändernde Taktzyklenzeit berücksichtigt wird, wenn das Maß für die Ausführungszeit berechnet wird. Zu diesem Zweck wird der Zähler 2 in 1 durch komplexere Schaltungen ersetzt, welche diesem Zweck dienen.
  • Unter Bezugnahme auf 2 und 3 werden als nächstes mögliche Implementierungen für Zeitbestimmungsmittel beschrieben, welche den Zähler 2 in 1 ersetzen können, um bei veränderlicher Taktfrequenz des Prozessors ein verbessertes Maß für die Ausführungszeit eines Befehls bereitzustellen.
  • 2 zeigt eine erste Implementierung von Zeitbestimmungsmitteln 11, welche einen Zähler 12 zum Zählen von Taktimpulsen CLK des Prozessors, einen Frequenzdetektor 14, einen Multiplikator 15 und einen Addierer 16 umfassen. Der Frequenzdetektor 14 ist als Änderungsdetektor ausgestaltet, so dass er eingerichtet ist, eine Änderung der Taktfrequenz oder Taktzyklenzeit des Prozessors zu erfassen. Zu diesem Zweck ist der Frequenzdetektor 14 mit einem Register 13 gekoppelt, dessen Wert der Taktzyklenzeit oder Taktfrequenz des Prozessors entspricht. Das Register 13 ist zwar schematisch in 2 dargestellt, bildet jedoch typischerweise keinen Bestandteil der Zeitbestimmungsmittel. Der Wert für die Taktzyklenzeit oder Taktfrequenz wird im Folgenden als F_VAL bezeichnet. Der Frequenzdetektor 14 weist zwei Ausgänge auf, welche mit dem Zähler 12 bzw. dem Addierer 16 gekoppelt sind, wobei die Signale an den Ausgängen mit RESET2_START2 bzw. ACCUMULATE bezeichnet sind. Detektiert der Frequenzdetektor 14 eine Änderung des in dem Register 13 gespeicherten Werts der Taktfrequenz oder Taktzyklenzeit, wird sowohl das Signal ACCUMULATE als auch, bevorzugt mit einer Zeitverzögerung gegenüber dem Signal ACCUMULATE, das Signal RESET2_START2 true. Der Eingang der Zeitbestimmungsmittel 11, welcher mit dem Ausgang des Prozessorsignalsdetektors 7 mit dem Signal RESET_START gekoppelt ist, ist sowohl mit dem Zähler 12 als auch mit dem Addierer 16 verbunden, so dass, wenn das Signal RESET_START den Wert true annimmt, sowohl der Wert des Zählers 12 als auch der Wert des Addierers 16 auf 0 zurückgesetzt wird. Darüber hinaus wird der Wert des Zählers 12 auch dann auf 0 zurückgesetzt, wenn das Signal RESET2_START2 den Wert true annimmt, d. h. wenn sich die Taktfrequenz oder Taktzyklenzeit des Prozessors ändert.
  • Aus Gründen der Einfachheit wird im Folgenden angenommen, dass die Taktzyklenzeit des Prozessors nur solche Werte annehmen kann, die als rationales Vielfaches einer Minimalperiode Tmin geschrieben werden können, d. h. dass die Taktzyklenzeit T = m/n·Tmin ist, wobei m, n ganze Zahlen sind. Der Wert F_VAL für die Taktzyklenzeit ist in diesem Fall m/n. Der Multiplikator 15 ist als Bruchzahlmultiplikator ausgestaltet, dessen Eingänge den Wert F_VAL für den Quotienten m/n bzw. den Wert COUNT_VAL des Zählers 12 empfangen und das Produkt COUNT_VAL·m/n berechnen. Da der Wert des Zählers 12 immer dann auf 0 zurückgesetzt wird, wenn entweder der Wert des Befehlszählers oder der Wert der Taktfrequenz oder Taktzyklenzeit sich ändert, korrespondiert der Wert COUNT_VAL des Befehlszählers 12 der Anzahl von Taktzyklen seit der letzten Änderung des Befehlszählerwerts oder Taktfrequenz des Prozessors, je nachdem welcher der Werte sich zuletzt geändert hat. Somit entspricht der Wert COUNT_VAL des Zählers 12 der Taktzyklenanzahl während eines Zeitintervalls während der Befehlsausführung, während dessen die Taktfrequenz oder Taktzyklenzeit konstant ist, und der von dem Multiplikator 15 berechnete Wert entspricht der Zeitdauer dieses Zeitintervalls.
  • Mit der in 2 gezeigten Verschaltung haben die Komponenten 12, 14 und 15 somit die Funktion, die Zeitdauer eines Zeitintervalls während der Befehlsausführung zu ermitteln, während welchem die Taktzyklenzeit des Prozessors konstant gehalten wird.
  • Bei einer Änderung der Taktfrequenz oder Taktzyklenzeit nimmt darüber hinaus das Signal ACCUMULATE den Wert true an, woraufhin der Addierer 16 den multiplizierten Wert COUNT_VAL·m/n des Multiplikators 15 zu dem in dem Addierer 16 registrierten Wert RT_COUNT_VAL addiert gemäß der Beziehung RT_COUNT_VAL := RT_COUNT_VAL + COUNT_VAL·m/n. Dasselbe gilt, falls sich der Befehlszählerwert ändert. Der Addierer 16 ist derart eingerichtet, dass in diesem Fall, wenn das Signal RESET_START true wird, welches an dem in 2 unteren Eingang des Addierers 16 eingekoppelt wird, zunächst COUNT_VAL·m/n addiert wird, dann der Wert des Addieres 16 ausgelesen wird und erst nach dem Auslesen des Addierers 16 der Wert auf 0 zurückgesetzt wird. Dadurch wird gewährleistet, dass auch bei dem Ende der Befehlsausführung der Wert COUNT_VAL·m/n durch den Addierer 16 aufaddiert wird, bevor der Addierer 16 ausgelesen wird. Der Addierer 16 berechnet somit die Summe der Zeitdauern der Zeitintervalle während der Befehlsausführung, während derer die Taktzyklenzeit jeweils konstant ist, also einen akkumulierten Wert der gesamten, seit Beginn der Befehlsausführung verstrichenen Zeit. Sind die Zeitbestimmungsmittel 11 in die Schaltung 1 von 1 integriert, so dass sie dort den Zähler 2 ersetzen, ist der Ausgang des Addierers 16 mit einem Eingang des Komparators 3 verbunden, so dass die Ausführungszeit des Befehls, welche durch den Addierer 16 bereitgestellt wird, mit dem im Register 5 gespeicherten Schwellenwert verglichen werden kann.
  • Durch Integration der Zeitbestimmungsmittel 11 von 2 in die Schaltungsanordnung 1 von 1 wird diese derart angepasst, dass ein zuverlässiges Maß der Ausführungszeit eines Befehls selbst dann bereitgestellt werden kann, falls die Taktfrequenz oder Taktzyklenzeit veränderlich ist.
  • Eine alternative Ausgestaltung der Zeitbestimmungsmittel 21 ist in 3 dargestellt. Die Zeitbestimmungsmittel 21 umfassen einen Zähler 22, welcher wiederum die Taktimpulse CLK des Prozessors zählt und im mit der Schaltungsanordnung von 1 kombinierten Zustand mit dem Ausgang des Prozessordetektors 7 gekoppelt ist, um das Signal RESET_START zu empfangen. Die Zeitbestimmungsmittel 21 umfassen weiterhin eine Inkrementlogikschaltung 24, welche den Wert der Taktfrequenz oder Taktzyklenzeit des Prozessors aus einem Register 23 ausliest, welches typischerweise keinen Bestandteil der Zeitbestimmungsmittel bildet und nur schematisch dargestellt ist. Die Inkrementlogikschaltung 24 ist mit dem Zähler 22 gekoppelt, um ein Inkrement des Zählers 22 in Abhängigkeit von der Taktfrequenz oder Taktzyklenzeit des Prozessors einzustellen, wobei der Wert des Inkrements als INC_VAL bezeichnet ist.
  • Im Folgenden wird angenommen, dass sich die Taktfrequenz T des Prozessors als Vielfaches einer minimalen Zeitperiode Tmin schreiben lässt, d. h. T = m·Tmin, wobei m eine ganze Zahl ist. Die Inkrementlogikschaltung 24 bestimmt basierend auf dem Wert der Taktfrequenz F_VAL einen Inkrementwert INC_VAL gemäß INC_VAL = m·INC_MIN, wobei INC_MIN ein minimales Inkrement, beispielsweise 1 ist. Der Zähler 22 addiert pro Taktimpuls des Prozessors CLK den jeweiligen Inkrementwert INC_VAL. Bei einer Änderung des Werts des Befehlszählers wird der Zähler 22 dadurch, dass das Signal RESET_START true wird, zurückgesetzt und neu gestartet. Der aktuelle Wert des Zählers 22 stellt ein Maß für die seit Beginn der Befehlsausführung verstrichene Zeit in Einheiten von Tmin dar und ist somit ein Echtzeitmaß für die Ausführungszeit. Ist die Schaltung 21 in die Schaltungsanordnung von 1 integriert, ist der Ausgang des Zählers 22 mit dem Komparator 3 verbunden, welcher den Wert des Zählers mit dem vorherbestimmten Schwellenwert vergleicht.
  • Die Ausgestaltung der Zeitbestimmungsmittel wie sie unter Bezugnahme auf 2 und 3 beschrieben wurde, zielt im Wesentlichen darauf ab, die Ausführungszeit des Befehls direkt zu bestimmen und basierend auf der Ausführungszeit die dem Befehl zugeordneten Daten selektiv zu speichern. Anstatt direkt die Ausführungszeit zu berechnen, kann jedoch selbst bei veränderlicher Taktfrequenz oder Taktzyklenzeit des Prozessors die Anzahl von Taktzyklen, welche während der Befehlsausführung verstreicht, als Maß für die Ausführungszeit dienen, wobei die Schaltungsanordnung derart ausgestaltet werden kann, dass auch bei veränderlicher Taktfrequenz oder Taktzyklenzeit eine selektive Speicherung basierend auf der Taktzyklenanzahl den gewünschten Effekt reduzierter Speicheranforderungen erzielt.
  • Unter Bezugnahme auf 4 wird als nächstes eine derartige Schaltungsanordnung 31 beschrieben. Die Schaltungsanordnung 31 umfasst einen Zähler 32, einen Komparator 33 und einen Speicher 34, deren Aufbau und Funktion im Wesentlichen denjenigen der entsprechenden Elemente 2, 3 und 4 von 1 entsprechen. Im Gegensatz zu 1 ist jedoch der Speicher 34 eingerichtet, um zusätzlich zu dem Wert PC_VAL des Befehlszählers und einer Taktzyklenanzahl COUNT_VAL den Wert F_VAL der Taktfrequenz oder Taktzyklenzeit des Prozessors zu speichern, so dass nach dem Auslesen des Speichers 34 die genauen Werte für die Ausführungszeiten einzelner Befehle aus der Taktzyklenanzahl und der korrespondierenden Taktzyklenzeit berechnet werden können. Die Schaltungsanordnung umfasst weiterhin einen Prozessorsignaldetektor 37 und einen Frequenzdetektor 40, deren Aufbau und Funktion im Wesentlichen denjenigen des Prozessorsignaldetektors 7 von 1 bzw. des Frequenzdetektors 14 von 2 entspricht. Der Prozessorsignaldetektor 37 und der Frequenzdetektor 40 weisen jeweils zwei Ausgänge auf, von welchen jeweils einer mit den Eingängen eines OR-Gatters 41 und die jeweils anderen mit den Eingängen eines OR-Gatters 42 gekoppelt sind. Als Antwort auf eine Änderung des Werts PC_VAL des Befehlszählers wird der Signalwert STORE2 an dem mit dem OR-Gatter 41 verbundenen Ausgang des Prozessorsignaldetektors 37 auf den Wert true gesetzt, und mit einer Zeitverzögerung wird auch der Signalwert RS2 an dem mit dem OR-Gatter 42 verbundenen Ausgang des Prozessorsignaldetektors 37 auf den Wert true gesetzt. Der Frequenzdetektor 40, welcher ebenfalls als Änderungsdetektor ausgestaltet ist, ist mit einem Register 39 gekoppelt, in welchem die aktuelle Taktfrequenz oder Taktzyklenzeit des Prozessors abgelegt ist. Als Antwort auf eine erfasste Änderung der Taktfrequenz wird der mit dem OR-Gatter 41 verbundene Ausgang des Frequenzdetektors 40 mit dem Signal STORE3 auf den Wert true gesetzt, und mit einer Zeitverzögerung wird auch der mit dem OR-Gatter 42 verbundene Ausgang des Frequenzdetektors 40 mit dem Signal RS3 auf den Wert true gesetzt.
  • Der Ausgang des OR-Gatters 42 ist mit dem Zähler 32 verbunden und stellt das Signal RESET_START für diesen bereit. Somit wird der Zähler 32 sowohl bei einem Wechsel des Werts PC_VAL des Befehlszählers als auch bei einem Wechsel der Taktfrequenz oder Taktzyklenzeit des Prozessors auf 0 zurückgesetzt und neu gestartet. Der Ausgang des OR-Gatters 41 ist mit einem Eingang eines AND-Gatters 38 gekoppelt, dessen anderer Eingang mit dem Ausgang des Komparators 33 gekoppelt ist. Der Ausgang des AND-Gatters 38 ist mit einem Eingang 34a des Speichers 34 verbunden und stellt das STORE-Signal für diesen bereit, wobei der Wert des Befehlszählers, die Taktzyklenanzahl und die momentane Taktfrequenz in dem Speicher 34 gespeichert werden, wenn das Signal STORE den Wert true annimmt. Es ist wichtig zu beachten, dass bei dem in 4 dargestellten Ausführungsbeispiel der Wert PC_VAL des Befehlszählers, der Wert COUNT_VAL des Zählers 32 und die momentane Taktfrequenz oder Taktzyklenzeit F_VAL immer dann in dem Speicher 34 abgelegt werden, wenn sich der Wert des Befehlszählers oder die Taktfrequenz ändert, vorausgesetzt dass der Wert des Zählers 32 zu dem Zeitpunkt, in welchem sich der Wert des Befehlszählers oder die Taktfrequenz ändert, den zugehörigen Schwellenwert übersteigt und der Ausgang des Komparators 33 den Wert true hat.
  • Um zu berücksichtigen, dass, beispielsweise im Hinblick auf echtzeitkritische Software oder Applikationen, die Taktzyklenanzahl allein nicht immer ein geeignetes Maß für die Ausführungszeit ist, besteht ein wesentlicher Unterschied der Schaltungsanordnung von 4 zur Schaltungsanordnung von 1 darin, dass das Register 35 nicht einen einzelnen Schwellenwert, sondern eine Mehrzahl von Schwellenwerten speichert, welche verschiedenen möglichen Taktfrequenzen oder Taktzyklenzeiten des Prozessors zugeordnet sind. Die Mehrzahl von Schwellenwerten kann beispielsweise in Form einer Schwellenwerttabelle gespeichert sein. Das Frequenzregister 35 weist einen Eingang auf, um den Wert der Taktfrequenz oder Taktzyklenzeit F_VAL zu empfangen und um als Antwort auf den empfangenen Wert der Taktfrequenz oder Taktzyklenzeit den entsprechenden Schwellenwert LIMIT_VAL für den Komparator 33 bereitzustellen. Durch diese Ausgestaltung der Schaltungsanordnung 31 wird es möglich, auch bei veränderlicher Taktfrequenz oder Taktzyklenzeit des Prozessors den Schwellenwert jeweils geeignet so zu wählen, dass nur bei Überschreiten einer bestimmten Zeitdauer während der Ausführung des Befehls der Wert des Befehlszählers, der Wert des Zählers 32 und der aktuelle Wert der Taktfrequenz oder Taktzyklenzeit in dem Speicher 34 gespeichert werden, um durch die selektive Speicherung eine Reduktion der zu speichernden Datenmenge zu erreichen. In einem einfachen beispielhaften Fall, in welchem der Prozessor mit zwei verschiedenen Taktzyklenzeiten getaktet wird, von welchen eine doppelt so groß wie die andere ist, werden die im Register 35 gespeicherten Schwellenwerte bei einem Ausführungsbeispiel derart gewählt, dass der der kurzen Taktzyklenzeit zugeordnete Schwellenwert doppelt so groß wie der der langen Taktzyklenzeit zugeordnete Schwellenwert ist. Somit bleibt auch bei der Schaltung von 4 das Überschreiten einer bestimmten Zeitdauer das maßgebliche Kriterium dafür, dass Daten in dem Speicher 34 gespeichert werden.
  • Eine beispielhafte Ausgestaltung eines Änderungsdetektors, wie er als Prozessorsignaldetektor 7 oder 37 bei den Schaltungsanordnungen von 1 bzw. 4 oder als Frequenzdetektor 13 bzw. 40 in den Schaltungen von 2 bzw. 4 Verwendung finden kann wird als nächstes unter Bezugnahme auf 5 erläutert. Der Änderungsdetektor 51 von 5 ist beispielhaft für den Fall eines Werts PC_VAL des Befehlszählers mit 4 Bits PC1–PC4 angegeben. Eine Änderung des Werts des Befehlszählers wird dadurch überwacht, dass die Änderung der Werte der einzelnen Bits mit Schaltungen 5255 bitweise überwacht werden. Die Schaltungen 5255 sind identisch ausgestaltet, so dass beispielhaft nur die Schaltung 52 für das erste Bit PC1 näher erläutert werden wird.
  • Die Schaltung 52 umfasst eine zweistufige Registerkette mit einem ersten Register 52a und einem zweiten Register 52b, wobei in das erste Register 52a der aktuelle Wert des ersten Bits PC1 eingetaktet wird. Das zweite Register 52b enthält den Wert dieses Bits während des vorhergehenden Taktzyklus. Die Ausgänge des ersten Registers 52a und des zweiten Registers 52b sind mit den Eingängen eines XOR-Gatters 52c gekoppelt. Der Ausgang des XOR-Gatters 52c nimmt den Wert true an, falls die in dem ersten Register 52a und dem zweiten Register 52b abgelegten Werte des ersten Bits verschieden sind, d. h. falls sich der Wert des Bits zwischen dem vorhergehenden Taktzyklus und dem aktuellen Taktzyklus verändert hat. Ähnlich ist der Ausgang der XOR-Gatter 53c55c der Schaltungen 5355 nur dann true, wenn sich der Wert des entsprechenden Bits zwischen dem vorhergehenden Taktzyklus und dem aktuellen Taktzyklus verändert hat.
  • Die Ausgänge der XOR-Gatter 52c55c sind mit Eingängen eines OR-Gatters 56 gekoppelt, so dass der Ausgang des OR-Gatters 56 den Wert true annimmt, falls sich der Wert irgendeines der Bits des Befehlszählerwerts zwischen dem vorhergehenden und dem aktuellen Taktzyklus verändert hat. Das Ausgangssignal des OR-Gatters 56 kann in dem Fall, dass der Änderungsdetektor als Prozessorsignaldetektor 7 oder 37 verwendet wird, direkt als das Signal STORE2 verwendet werden. Um das Signal RESET_START zu bilden, wird der Ausgang des OR-Gatters 56 über eine Verzögerungsstufe 57 geführt. Durch die Verzögerungsstufe 57 wird sichergestellt, dass die gewünschten Werte im Speicher 4 bzw. 34 der Schaltungsanordnung von 1 bzw. 4 gespeichert werden, was dadurch veranlasst wird, dass das Signal STORE2 den Wert true annimmt, bevor der Wert des Zählers 2 oder 32 auf 0 zurückgesetzt und der Zähler neu gestartet wird, was dadurch veranlasst wird, dass das Signal RESET_START den Wert true annimmt. Die Verzögerungsstufe 57 muss jedoch nicht notwendigerweise vorgesehen sein, so dass das Signal RESET_START mit dem Signal STORE2 identifiziert werden kann, sofern sichergestellt ist, dass die benötigten Werte, wie beispielsweise der Wert des Zählers 2 oder 32, in dem Speicher 34 gespeichert werden können, bevor der Zähler 2 bzw. 32 auf 0 zurückgesetzt wird.
  • Natürlich sind zahlreiche Abwandlungen und Modifizierungen der oben dargestellten Schaltungen denkbar. So wurde beispielsweise bei den oben dargestellten Schaltungsanordnungen 1 bzw. 31 von 1 bzw. 4 der Wert PC_VAL des Befehlszählers des Prozessors überwacht, wobei eine Änderung des Werts des Befehlszählers den Beginn der Ausführung eines neuen Befehls und das Ende der Abarbeitung des letzten Befehls anzeigt. Die Schaltungsanordnungen sind jedoch nicht darauf beschränkt, den Befehlzählerwert zu überwachen, sondern zahlreiche abgewandelte Ausführungen sind denkbar, bei welchen beispielsweise ein Stall-Signal des Prozessors, ein Cache Miss-Signal des Prozessors oder ein ein Ende eines Speicherzugriffs anzeigendes Signal des Prozessors überwacht werden kann. Auch wird bei den Ausführungsbeispielen von 1 und 4 der Befehlszählerwert als Indikator für den Befehl in dem Speicher 4 bzw. 34 abgelegt, dessen Ausführungszeit bestimmt wurde. Jedoch ist die vorliegende Erfindung nicht darauf beschränkt. Vielmehr kann auch jeder andere geeignete Wert anstelle des Befehlszählerwerts gespeichert werden, welcher es ermöglicht, bei einer anschließenden Analyse der im Speicher 4 oder 34 abgelegten Daten den Befehl aus der Folge von Befehlen zu identifizieren, welcher eine lange Ausführungszeit aufweist.
  • Die unter Bezugnahme auf 1 bis 5 oben beschriebenen Schaltungen können bei jeder Anwendung verwendet werden, bei welcher es nötig ist, lange Ausführungszeiten einzelner Befehle in einer Folge von Befehlen zu ermitteln. Die Schaltungsanordnungen können zum Debuggen von Echtzeitsoftware verwendet werden.
  • Ein Verfahren zum Debuggen von Echtzeitsoftware nach einem Ausführungsbeispiel der Erfindung besteht in diesem Fall darin, unter Einsatz einer Schaltungsanordnung nach einem Ausführungsbeispiel der Erfindung die Ausführungszeiten von Befehlen zu erfassen und diese anschließend aus dem Speicher der Schaltungsanordnung auszulesen. Ein derartiges Verfahren ist besonders dann vorteilhaft, wenn Systemabstürze bei der Ausführung von Software oder von Applikationen auftreten und vermutet wird, dass die Verletzung von Echtzeitbedingungen zu diesen Systemabstürzen führt. Durch Analysieren der im Speicher der oben beschriebenen Schaltungsanordnungen gespeicherten Daten können kritische Programmteile gut identifiziert und gegebenenfalls verändert werden, um Applikationen zu optimieren.

Claims (36)

  1. Schaltungsanordnung zum Erfassen einer Ausführungszeit eines Befehls in einem den Befehl ausführenden Rechnersystem mit einem Prozessor, umfassend Zeitbestimmungsmittel (2; 11; 21; 32) zum Bestimmen einer die Ausführungszeit kennzeichnenden Größe, Vergleichermittel (3; 33), welche mit den Zeitbestimmungsmitteln (2; 11; 21; 32) gekoppelt sind und eingerichtet sind, um die die Ausführungszeit kennzeichnende Größe mit einem Schwellenwert zu vergleichen, und Speichermittel (4; 34), welche mit den Vergleichermitteln (3; 33) gekoppelt sind und eingerichtet sind, um einen den Befehl kennzeichnenden Indikator, welcher es erlaubt den Befehl in einer Folge von Befehlen zu identifizieren, zu speichern, falls die die Ausführungszeit kennzeichnende Größe den Schwellenwert übersteigt.
  2. Schaltungsanordnung nach Anspruch 1, dadurch gekennzeichnet, dass die Speichermittel (4; 34) eingerichtet sind, um ferner die die Ausführungszeit kennzeichnende Größe zu speichern, falls diese den Schwellenwert übersteigt.
  3. Schaltungsanordnung nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die Schaltungsanordnung einen mit den Vergleichermitteln (4; 34) gekoppelten Schwellenwertspeicher (5; 35) zum Speichern des Schwellenwerts umfasst.
  4. Schaltungsanordnung nach einem der Ansprüche 1–3, dadurch gekennzeichnet, dass die Schaltungsanordnung Schaltungszustandssignaldetektormittel (7; 37; 51) zum Überwachen eines Schaltungszustandssignals umfasst, welche eingerichtet sind, um ein einen Beginn und/oder ein Ende einer Ausführung des Befehls anzeigendes Signal (RESET_START) an die Zeitbestimmungsmittel (2; 11; 21; 32) auszugeben, falls eine Änderung des Schaltungszustandssignals erfasst wird.
  5. Schaltungsanordnung nach Anspruch 4, dadurch gekennzeichnet, dass das Schaltungszustandssignal ausgewählt ist aus einer Gruppe umfassend einen Befehlszählerwert (PC_VAL), ein Cache Miss-Signal, ein Stall-Signal und ein einen Speicherzugriff anzeigendes Signal.
  6. Schaltungsanordnung nach Anspruch 4 oder 5, dadurch gekennzeichnet, dass die Schaltungszustandssignaldetektormittel (51) eine Registerkette für ein Bit des Schaltungszustandssignals mit einem ersten Register (52a) und einem zweiten Register (52b), wobei das erste Register (52a) und das zweite Register (52b) Werte des Bits zu verschiedenen Zeiten speichern, und Mittel (52c) zum Vergleichen des Werts des ersten Registers (52a) mit dem Wert des zweiten Registers (52b) umfassen.
  7. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Zeitbestimmungsmittel Zählermittel (2; 12; 22; 32) zum Zählen von Taktzyklen des Prozessors umfassen und eingerichtet sind, um die die Ausführungszeit kennzeichnende Größe basierend auf einer während der Ausführung des Befehls ermittelten Taktzyklenanzahl zu bestimmen.
  8. Schaltungsanordnung nach Anspruch 7, dadurch gekennzeichnet, dass die die Ausführungszeit kennzeichnende Größe die Ausführungszeit des Befehls umfasst.
  9. Schaltungsanordnung nach Anspruch 8, dadurch gekennzeichnet, dass die Zeitbestimmungsmittel (11; 21) eingerichtet sind, um eine Taktfrequenz oder Taktzyklenzeit des Prozessors zu erfassen und um basierend auf der Taktfrequenz oder Taktzyklenzeit und der Taktzyklenanzahl die Ausführungszeit zu bestimmen.
  10. Schaltungsanordnung nach Anspruch 9, dadurch gekennzeichnet, dass die Zeitbestimmungsmittel (11) Multiplikatormittel (15) zum Berechnen eines multiplizierten Werts der Taktzyklenzeit mit der Taktzyklenanzahl umfassen.
  11. Schaltungsanordnung nach Anspruch 10, dadurch gekennzeichnet, dass die Zeitbestimmungsmittel (21) mit den Multiplikatormitteln (15) gekoppelte Addierermittel (16) umfassen, welche eingerichtet sind, um bei einer Änderung der Taktfrequenz oder Taktzyklenzeit durch Addieren des multiplizierten Werts eine akkumulierte Ausführungszeit zu berechnen.
  12. Schaltungsanordnung nach Anspruch 9, dadurch gekennzeichnet, dass die Zeitbestimmungsmittel (21) eingerichtet sind, um ein Inkrement der Zählermittel (22) in Abhängigkeit von der Taktfrequenz oder Taktzyklenzeit einzustellen.
  13. Schaltungsanordnung nach Anspruch 7, dadurch gekennzeichnet, dass die die Ausführungszeit kennzeichnende Größe die Taktzyklenanzahl umfasst.
  14. Schaltungsanordnung nach Anspruch 13, dadurch gekennzeichnet, dass die Schaltungsanordnung Frequenzdetektormittel (40) zum Erfassen einer Taktfrequenz oder Taktzyklenzeit des Prozessors umfasst, wobei der Schwellenwert in Abhängigkeit von der Taktfrequenz oder Taktzyklenzeit aus einer Mehrzahl von Werten für den Schwellenwert ausgewählt wird.
  15. Schaltungsanordnung nach Anspruch 14, dadurch gekennzeichnet, dass die Schaltungsanordnung einen mit den Vergleichermitteln (33) gekoppelten Schwellenwertspeicher (35) zum Speichern der Mehrzahl von Werten für den Schwellenwert umfasst.
  16. Schaltungsanordnung nach Anspruch 14 oder 15, dadurch gekennzeichnet, dass die Speichermittel (34) eingerichtet sind, um die Taktfrequenz oder Taktzyklenzeit zu speichern, falls die die Ausführungszeit kennzeichnende Größe den Schwellenwert übersteigt.
  17. Schaltungsanordnung nach einem der Ansprüche 14–16, dadurch gekennzeichnet, dass die Frequenzdetektormittel (40) eingerichtet sind, um eine Änderung der Taktfrequenz oder Taktzyklenzeit zu erfassen, wobei die Speichermittel (34) mit den Frequenzdetektormitteln gekoppelt und eingerichtet sind, um weiterhin die Taktfrequenz oder Taktzyklenzeit zu speichern, falls die Frequenzdetektormittel (40) eine Änderung der Taktfrequenz oder Taktzyklenzeit erfassen.
  18. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der den Befehl kennzeichnende Indikator ein Befehlszählerwert (PC_VAL) des Prozessors ist.
  19. Integrierte Schaltung, umfassend einen Prozessor und eine Schaltungsanordnung zum Erfassen einer Ausführungszeit eines Befehls, dadurch gekennzeichnet, dass die Schaltungsanordnung nach einem der vorhergehenden Ansprüche ausgestaltet ist.
  20. Integrierte Schaltung nach Anspruch 19, dadurch gekennzeichnet, dass der Prozessor einen Befehlszähler (6) umfasst, und dass die Schaltungsanordnung (1; 31) Schaltungszustandssignaldetektormittel (7; 37) umfasst, welche mit dem Befehlszähler (6) gekoppelt sind, um einen Befehlszählerwert (PC_VAL) zu überwachen, und welche eingerichtet sind, um ein einen Beginn und/oder ein Ende der Ausführung des Befehls anzeigendes Signal (RESET_START) an die Zeitbestimmungsmittel (2; 11; 21; 32) auszugeben, falls eine Änderung des Befehlszählerwerts (PC_VAL) erfasst wird.
  21. Integrierte Schaltung nach Anspruch 19 oder 20, dadurch gekennzeichnet, dass die integrierte Schaltung eine Debug-Schnittstelle zum Auslesen der Speichermittel (4; 34) der Schaltungsanordnung umfasst.
  22. Verfahren zum Erfassen einer Ausführungszeit eines Befehls, welcher von einem Rechnersystem mit einem Prozessor ausgeführt wird, umfassend Bestimmen einer die Ausführungszeit kennzeichnenden Größe, Vergleichen der die Ausführungszeit kennzeichnenden Größe mit einem Schwellenwert, und Speichern eines den Befehl kennzeichnenden Indikators, welcher es erlaubt den Befehl in einer Folge von Befehlen zu identifizieren, falls die die Ausführungszeit kennzeichnende Größe den Schwellenwert übersteigt.
  23. Verfahren nach Anspruch 22, dadurch gekennzeichnet, dass weiterhin die die Ausführungszeit kennzeichnende Größe gespeichert wird, falls diese den Schwellenwert übersteigt.
  24. Verfahren nach Anspruch 22 oder 23, dadurch gekennzeichnet, dass das Bestimmen der die Ausführungszeit kennzeichnenden Größe ein Empfangen eines einen Beginn und/oder ein Ende einer Ausführung des Befehls kennzeichnenden Signals (RESET_START) umfasst.
  25. Verfahren nach Anspruch 24, dadurch gekennzeichnet, dass das den Beginn und/oder das Ende der Ausführung des Befehls kennzeichnende Signals (RESET_START) ausgewählt ist aus einer Gruppe umfassend eine Änderung eines Befehlszählerwerts (PC_VAL), ein Cache Miss-Signal, ein Stall-Signal und ein einen Speicherzugriff anzeigendes Signal.
  26. Verfahren nach Anspruch 25, dadurch gekennzeichnet, dass das den Beginn und das Ende der Ausführung des Befehls kennzeichnende Signal (RESET_START) einer Änderung des Befehlszählerwerts (PC_VAL) des Prozessors entspricht.
  27. Verfahren nach einem der Ansprüche 23–26, dadurch gekennzeichnet, dass das Bestimmen der die Ausführungszeit kennzeichnenden Größe ein Bestimmen einer während der Ausführung des Befehls ermittelten Taktzyklenanzahl umfasst.
  28. Verfahren nach Anspruch 27, dadurch gekennzeichnet, dass die die Ausführungszeit kennzeichnende Größe die Ausführungszeit des Befehls umfasst, und dass das Bestimmen der die Ausführungszeit kennzeichnenden Größe ein Erfassen einer Taktzyklenzeit des Prozessors und ein Multiplizieren der Taktzyklenzeit mit der Taktzyklenanzahl umfasst.
  29. Verfahren nach Anspruch 28, dadurch gekennzeichnet, dass die Taktzyklenzeit veränderlich ist, und dass das Bestimmen der die Ausführungszeit kennzeichnenden Größe ein Ermitteln einer Taktzyklenanzahl während jeweils eines Zeitintervalls, in welchem die Taktzyklenzeit konstant ist, ein Multiplizieren der Taktzyklenanzahl während des Zeitintervalls mit der entsprechenden Taktzyklenzeit und ein Aufaddieren von Produkten aus der Taktzyklenanzahl während des Zeitintervalls mit der entsprechenden Taktzyklenzeit umfasst.
  30. Verfahren nach Anspruch 27, dadurch gekennzeichnet, dass die die Ausführungszeit kennzeichnende Größe die Taktzyklenanzahl umfasst.
  31. Verfahren nach Anspruch 30, dadurch gekennzeichnet, dass das Verfahren ein Erfassen einer Taktfrequenz oder Taktzyklenzeit des Prozessors umfasst, wobei der Schwellenwert in Abhängigkeit von der Taktfrequenz oder Taktzyklenzeit gewählt wird.
  32. Verfahren nach Anspruch 31, dadurch gekennzeichnet, dass das Verfahren ein Speichern der Taktfrequenz oder Taktzyklenzeit umfasst.
  33. Verfahren nach einem der Ansprüche 22–32, dadurch gekennzeichnet, dass der den Befehl kennzeichnende Indikator ein Befehlszählerwert (PC_VAL) des Prozessors ist.
  34. Verfahren nach einem der Ansprüche 22–33, dadurch gekennzeichnet, dass das Verfahren ein On-Chip-Debugverfahren ist.
  35. Verfahren nach einem der Ansprüche 22–34, dadurch gekennzeichnet, dass das Verfahren mit einer Schaltungsanordnung nach einen der Ansprüche 1–18 ausgeführt wird.
  36. Verfahren nach einem der Ansprüche 22–35, dadurch gekennzeichnet, dass das Verfahren ein Auslesen der die Ausführungszeit kennzeichnenden Größe und des den Befehl kennzeichnenden Indikators umfasst.
DE200610041444 2006-09-04 2006-09-04 Schaltungsanordnung und Verfahren zum Erfassen einer Ausführungszeit eines Befehls in einem Rechnersystem Active DE102006041444B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE200610041444 DE102006041444B4 (de) 2006-09-04 2006-09-04 Schaltungsanordnung und Verfahren zum Erfassen einer Ausführungszeit eines Befehls in einem Rechnersystem

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE200610041444 DE102006041444B4 (de) 2006-09-04 2006-09-04 Schaltungsanordnung und Verfahren zum Erfassen einer Ausführungszeit eines Befehls in einem Rechnersystem
US11849517 US8185772B2 (en) 2006-09-04 2007-09-04 Determining execution times of commands

Publications (2)

Publication Number Publication Date
DE102006041444A1 true DE102006041444A1 (de) 2008-03-20
DE102006041444B4 true DE102006041444B4 (de) 2014-10-30

Family

ID=39078881

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200610041444 Active DE102006041444B4 (de) 2006-09-04 2006-09-04 Schaltungsanordnung und Verfahren zum Erfassen einer Ausführungszeit eines Befehls in einem Rechnersystem

Country Status (2)

Country Link
US (1) US8185772B2 (de)
DE (1) DE102006041444B4 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090204856A1 (en) * 2008-02-08 2009-08-13 Sinclair Colin A Self-service terminal
US8824497B2 (en) * 2009-03-30 2014-09-02 Mstar Semiconductor, Inc. Method and apparatus for performing data access according to protocol handling
CN101893927B (zh) * 2009-05-22 2012-12-19 中兴通讯股份有限公司 手持设备功耗管理方法
US8321618B1 (en) 2009-07-28 2012-11-27 Nvidia Corporation Managing conflicts on shared L2 bus
US8195858B1 (en) * 2009-07-28 2012-06-05 Nvidia Corporation Managing conflicts on shared L2 bus
NL2009756C (en) * 2012-11-05 2014-05-08 Realworld Holding B V Method and arrangement for collecting timing data related to a computer application.
US9489287B2 (en) * 2013-08-23 2016-11-08 Atmel Corporation Breaking code execution based on time consumption
US9983831B2 (en) * 2014-07-22 2018-05-29 Ngd Systems, Inc. System and method for consistent performance in a storage device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6691080B1 (en) * 1999-03-23 2004-02-10 Kabushiki Kaisha Toshiba Task execution time estimating method

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07160545A (ja) 1993-12-13 1995-06-23 Fujitsu Ltd 情報処理装置の性能測定方法
EP0689141A3 (de) 1994-06-20 1997-10-15 At & T Corp Unterbrechungsbasierte hardwaremässige Unterstützung für Systemleistungsprofilierung
US6374367B1 (en) 1997-11-26 2002-04-16 Compaq Computer Corporation Apparatus and method for monitoring a computer system to guide optimization
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US6609216B1 (en) * 2000-06-16 2003-08-19 International Business Machines Corporation Method for measuring performance of code sequences in a production system
US6898682B2 (en) * 2002-08-12 2005-05-24 Freescale Semiconductor, Inc. Automatic READ latency calculation without software intervention for a source-synchronous interface
US7269824B2 (en) * 2003-02-13 2007-09-11 Path Reliability, Inc. Software behavior pattern recognition and analysis
US7194732B2 (en) * 2003-06-26 2007-03-20 Hewlett-Packard Development Company, L.P. System and method for facilitating profiling an application
US7360218B2 (en) * 2003-09-25 2008-04-15 International Business Machines Corporation System and method for scheduling compatible threads in a simultaneous multi-threading processor using cycle per instruction value occurred during identified time interval
US7353517B2 (en) * 2003-09-25 2008-04-01 International Business Machines Corporation System and method for CPI load balancing in SMT processors
US7496908B2 (en) * 2004-01-14 2009-02-24 International Business Machines Corporation Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information
US7735073B1 (en) * 2004-02-28 2010-06-08 Oracle International Corporation Method and apparatus for data object profiling
US7707554B1 (en) * 2004-04-21 2010-04-27 Oracle America, Inc. Associating data source information with runtime events
US20060036810A1 (en) * 2004-08-12 2006-02-16 International Business Machines Corporation System, application and method of reducing cache thrashing in a multi-processor with a shared cache on which a disruptive process is executing
US7904912B2 (en) * 2005-08-30 2011-03-08 International Business Machines Corporation Adaptive processor utilization reporting handling different processor frequencies
US7596719B2 (en) * 2006-02-14 2009-09-29 Atmel Corporation Microcontroller information extraction system and method
US7447883B2 (en) * 2006-08-10 2008-11-04 Arm Limited Allocation of branch target cache resources in dependence upon program instructions within an instruction queue

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6691080B1 (en) * 1999-03-23 2004-02-10 Kabushiki Kaisha Toshiba Task execution time estimating method

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JP 07-160545 A elektronische Übersetzung vom 19.6.07 *

Also Published As

Publication number Publication date Type
US20080059828A1 (en) 2008-03-06 application
DE102006041444A1 (de) 2008-03-20 application
US8185772B2 (en) 2012-05-22 grant

Similar Documents

Publication Publication Date Title
DE19807872A1 (de) Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
DE4042262A1 (de) Verfahren zur analyse der funktionsweise von digitalen schaltungen
DE102006028992B4 (de) Elektronische Steuervorrichtung
DE3731097A1 (de) Schaltungsanordnung zur ueberwachung einer einrichtung mit zwei mikroprozessoren, insbesondere einer kraftfahrzeug-elektronik
DE3603240A1 (de) Schaltungsanordnung zur bereinigung von operandenkonflikten in nach dem fliessbandprinzip arbeitenden datenverarbeitungsanlagen
EP0075713A2 (de) Zusätzliche Funktionseinheit in einem Mikroprozessor, Mikroprozessorsystem und Verfahren zu seinem Betrieb
DE102004043063A1 (de) Halbleiter-Bauelement mit Test-Schnittstellen-Einrichtung
EP0116883A2 (de) Schaltungsanordnung zur Zwischenspeicherung von Befehlsworten
EP1391824A2 (de) Verfahren zur Messung der Nettolaufzeit eines Datenverarbeitungsprogramms
DE102008014347A1 (de) Redundantes Mikroprozessorsystem mit Taktüberprüfung
EP0907912B1 (de) Synchronisationsverfahren
EP1892639A2 (de) Sichere Programmcodeausführung
EP0111161A2 (de) Vorrichtung zur Mikrobefehls-Bereitstellung für mindestens zwei unabhängig arbeitende Funktionseinheiten in einem integrierten, mikroprogrammierten elektronischen Baustein und Verfahren zu ihrem Betrieb
DE3521081C2 (de)
DE19736972C1 (de) Verfahren und Vorrichtung zum beschleunigten Hochfahren eines Personal Computers
DE10229129C1 (de) Debug-Schnittstelle für einen Ereigniszeitgeber
DE10337284B4 (de) Integrierter Speicher mit einer Schaltung zum Funktionstest des integrierten Speichers sowie Verfahren zum Betrieb des integrierten Speichers
DE102009056758A1 (de) Verfahren zur Beeinflussung eines Steuergerätes und Manipulationseinheit
DE4134392A1 (de) Verfahren und vorrichtung zum ungueltigmachen von befehlen in geraeten mit parallelverarbeitung
DE19835610A1 (de) Programmgesteuerte Einheit und Verfahren zum Debuggen derselben
DE102004006089A1 (de) Testfälle für eine Testvorrichtung
DE19923231C1 (de) Digitale Analysierung von Frequenzen bei Chipkarten
EP1035474A2 (de) Verfahren zur Systemlastmessung in prozessorgesteuerten Systemen
DE3903835C2 (de)
EP2567295B1 (de) Verfahren zum selektiven aufzeichnen, rekonstruieren und analysieren des programmlaufs eines steuerungsprogramms

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final