DE102007040148B4 - Microprocessor with a circuit for evaluating a large number of program counter (PC) values for generating breakpoint control signals for a program logging unit - Google Patents

Microprocessor with a circuit for evaluating a large number of program counter (PC) values for generating breakpoint control signals for a program logging unit Download PDF

Info

Publication number
DE102007040148B4
DE102007040148B4 DE102007040148.7A DE102007040148A DE102007040148B4 DE 102007040148 B4 DE102007040148 B4 DE 102007040148B4 DE 102007040148 A DE102007040148 A DE 102007040148A DE 102007040148 B4 DE102007040148 B4 DE 102007040148B4
Authority
DE
Germany
Prior art keywords
value
subtraction result
signal representing
ref
range
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE102007040148.7A
Other languages
German (de)
Other versions
DE102007040148A1 (en
Inventor
Martin Mohr
Harry Siebert
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
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of DE102007040148A1 publication Critical patent/DE102007040148A1/en
Application granted granted Critical
Publication of DE102007040148B4 publication Critical patent/DE102007040148B4/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/02Comparing digital values
    • G06F7/026Magnitude comparison, i.e. determining the relative order of operands based on their numerical value, e.g. window comparator

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Mikroprozessor, miteiner Programmprotokolliereinheit, welche eine Schaltung aufweist zum Auswerten einer Vielzahl von Program Counter (PC) - Werten zur Erzeugung von Haltepunkt-Steuersignalen für die Programmprotokolliereinheit, wobei von der Schaltung untersucht wird, ob mindestens ein Program Counter (PC) - Wert aus der Vielzahl von Program Counter (PC) - Werten, welche einen zweiten Wertebereich bilden, innerhalb eines vorgegebenen ersten Wertebereichs (BND...BND+RNG) liegt, wobei der erste Wertebereich und der zweite Wertebereich kontinuierliche Wertebereiche sind, und wobei der zweite Wertebereich den Bereich ip_ref_r...ip_ref_r+cur_inc_r bildet, wobei ip_ref_r den alten PC-Wert des vorherigen Taktzyklus darstellt, und cur_inc_r das maximale Inkrement des aktuellen Taktzyklus darstellt, und wobei die Schaltung umfasst:ein erstes Subtrahierglied (401), welches den unteren Grenzwert des ersten Wertebereichs (BND) und den unteren Grenzwert des zweiten Wertebereichs (ip_ref_r) repräsentierende Signale empfängt, und zur Erzeugung eines ein erstes Subtraktionsergebnis repräsentierenden ersten Subtraktionsergebnissignals den unteren Grenzwert des zweiten Wertebereichs (ip_ref_r) vom unteren Grenzwert des ersten Wertebereichs (BND) subtrahiert;ein zweites Subtrahierglied (431), welches das das erste Subtraktionsergebnis repräsentierende erste Subtraktionsergebnissignal vom ersten Subtrahierglied (401) empfängt, und zur Erzeugung eines ein zweites Subtraktionsergebnis repräsentierenden zweiten Subtraktionsergebnissignals das empfangene maximale Inkrement des zweiten Wertebereichs cur_inc_r vom ersten Subtraktionsergebnis subtrahiert;einen ersten Komparator (432), welcher das das zweite Subtraktionsergebnis repräsentierende zweite Subtraktionsergebnissignal vom zweiten Subtrahierglied (431) empfängt, und untersucht, ob das zweite Subtraktionsergebnis vom zweiten Subtrahierglied (431) kleiner gleich Null ist, und falls ja, ein einen Wahr-Wert repräsentierendes Signal ausgibt, und falls nein, ein einen Unwahr-Wert repräsentierendes Signal ausgibt;ein Addierglied (402), welches das das erste Subtraktionsergebnis repräsentierende erste Subtraktionsergebnissignal vom ersten Subtrahierglied (401) empfängt, ein die Breite des zweiten Wertebereichs repräsentierendes Signal (RNG) empfängt, und ein einen Summenwert des ersten Subtraktionsergebnisses und der Breite des zweiten Wertebereichs repräsentierendes Signal ausgibt;einen zweiten Komparator (433), welcher das den Summenwert repräsentierende Signal vom Addierglied (402) empfängt, und untersucht, ob der Summenwert größer gleich Null ist, und falls ja, ein einen Wahr-Wert repräsentierendes Signal ausgibt, und falls nein, ein einen Unwahr-Wert repräsentierendes Signal ausgibt; undeine UND-Schaltung (409), die die jeweils einen Wahr- oder Unwahr-Wert repräsentierenden Signale vom ersten (433) und zweiten Komparator (432) empfängt, und ein einen Wahr-Wert repräsentierendes Ergebnissignal ausgibt, wenn die vom ersten (433) und zweiten Komparator (443) empfangenen Signale beide einen Wahr-Wert repräsentieren, und andernfalls ein einen Unwahr-Wert repräsentierendes Ergebnissignal ausgibt.Microprocessor, with a program logging unit which has a circuit for evaluating a plurality of program counter (PC) values for generating breakpoint control signals for the program logging unit, the circuit examining whether at least one program counter (PC) value from the A large number of program counters (PC) values which form a second value range lie within a predetermined first value range (BND ... BND + RNG), the first value range and the second value range being continuous value ranges, and the second value range being the Range ip_ref_r ... ip_ref_r + cur_inc_r forms, where ip_ref_r represents the old PC value of the previous clock cycle, and cur_inc_r represents the maximum increment of the current clock cycle, and wherein the circuit comprises: a first subtractor (401) which is the lower limit of the first value range (BND) and the lower limit of the second value range (ip_ref_r) receiving signals, and for generating a first subtraction result signal representing a first subtraction result signal subtracts the lower limit value of the second value range (ip_ref_r) from the lower limit value of the first value range (BND); a second subtractor (431) which subtracts the first subtraction result signal representing the first subtraction result receives the first subtractor (401), and subtracts the received maximum increment of the second value range cur_inc_r from the first subtraction result to generate a second subtraction result signal representing a second subtraction result; a first comparator (432), which represents the second subtraction result signal (431) representing the second subtraction result ), and examines whether the second subtraction result from the second subtractor (431) is less than or equal to zero, and if so, an S representing a true value signal, and if no, outputs a signal representing a false value; an adder (402) which receives the first subtraction result signal representing the first subtraction result from the first subtraction member (401) receives a signal (RNG) representing the width of the second value range , and outputs a signal representing a sum value of the first subtraction result and the width of the second value range; a second comparator (433) which receives the signal representing the sum value from the adder (402) and examines whether the sum value is greater than or equal to zero, and if yes, outputs a signal representing a true value, and if no, outputs a signal representing a false value; and an AND circuit (409) which receives the signals representing a true or false value from the first (433) and second comparator (432) and outputs a result signal representing a true value when the signal from the first (433) and second comparator (443) received signals both represent a true value, and otherwise outputs a result signal representing a false value.

Description

HINTERGRUND DER ERFINDUNGBACKGROUND OF THE INVENTION

Die Erfindung betrifft allgemein Schaltungen und Verfahren zum Vergleichen von Werten, insbesondere in einem Mikroprozessor.The invention relates generally to circuits and methods for comparing values, particularly in a microprocessor.

Insbesondere betrifft die Erfindung Schaltungen und Verfahren zum Vergleichen von Zahlen, die als ein Ausgangswert und eine Sequenz von Inkrementen in digitalen Schaltungen gegeben sind.In particular, the invention relates to circuits and methods for comparing numbers given as an output value and a sequence of increments in digital circuits.

Es gibt beispielsweise Anwendungen, bei denen zu einem bestimmten Zeitpunkt bestimmt werden muss, ob ein Signal einen Wertebereich erreicht oder überschreitet.For example, there are applications in which it must be determined at a certain point in time whether a signal reaches or exceeds a value range.

Exemplarisch sind Signalübergänge im Bereich von beispielsweise 10.050 bis 10.060 zu untersuchen, wobei die Werte, die zu beobachten sind und von beispielsweise einer stimulierenden Schaltung bereitgestellt werden, zum Beispiel in Folge 10.000, 10.040 und 10.080 sind, vorliegend in Start/Inkrementpaaren {10000,-}, {-,40}, {-,40}. Ein einfacher Satz von zwei Komparatoren (10.050 ≤ Signal ≤ 10.060) hingegen verfehlt den Übergang im oben genannten Bereich, da die bereitgestellten Signale nicht dessen Körnung aufweisen. (Es wird vorausgesetzt, dass beim Stimulieren mit den genannten Werten alle (anderen) Werte von 10.050 bis 10.060 ebenfalls gültig sind.)By way of example, signal transitions in the range from, for example, 10,050 to 10,060 are to be examined, the values which can be observed and which are provided by, for example, a stimulating circuit, for example in succession 10,000 . 10040 and 10,080 are present in start / increment pairs {10000, -}, {-, 40}, {-, 40}. A simple set of two comparators ( 10050 ≤ signal ≤ 10.060), on the other hand, misses the transition in the above range, since the signals provided do not have its grain size. (It is assumed that all (other) values from 10,050 to 10,060 are also valid when stimulating with the stated values.)

Der oben genannte Typ von Vergleich/Bestimmung ist beispielsweise von Interesse beim Durchführen einer Protokollierung eines Programmzählers (Program Counter, PC) eines Mikroprozessors. Eine PC-Schaltung erzeugt zum Steuern der Reihenfolge der Ausführung einer Gruppe von Befehlen eine Adresse, die einen Speicherort eines beliebigen Befehlscodes angibt, der auf einem Speichermedium gespeichert ist. Die Steuerung kann auf solch eine Weise erfolgen, dass die Befehlscodes in einer Reihenfolge ausgeführt werden, die von einem Programm vorgeschrieben ist. Die Befehlscodes werden durch Festlegen von Adressen bezeichnet, die deren Speicherort angeben. Die PC-Schaltung erzeugt solche Adressen und gibt die Adressen als PC-Werte aus.The above type of comparison / determination is of interest, for example, when logging a program counter (PC) of a microprocessor. A PC circuit generates an address to control the order of execution of a group of instructions, which indicates a location of any instruction code stored on a storage medium. Control can be done in such a way that the command codes are executed in an order prescribed by a program. The command codes are identified by specifying addresses that indicate their location. The PC circuit generates such addresses and outputs the addresses as PC values.

Im Allgemeinen zählt der Programmzähler automatisch bei jedem Befehlszyklus nach oben, so dass die Befehle normalerweise sequentiell vom Speichermedium abgerufen werden. Bestimmte Befehle allerdings wie Sprünge und Unterprogrammaufrufe und Rücksprünge unterbrechen die Sequenz durch Einsetzen eines neuen Werts im Programmzähler.In general, the program counter automatically counts up on each instruction cycle so that the instructions are normally retrieved sequentially from the storage medium. However, certain commands such as jumps and subroutine calls and jumps interrupt the sequence by inserting a new value in the program counter.

Bei einer superskalaren CPU zum Beispiel empfängt die Protokollier-Hardware den absoluten PC-Wert nur unter bestimmten Umständen, beispielsweise bei Beginn der Protokollierung oder nach einem Programmsprung, und die Codeausführung wird ansonsten von der CPU in Form von PC-Inkrementen angezeigt, wobei jedes Inkrement anzeigt, dass ein oder mehrere Befehle ausgeführt wurden.With a superscalar CPU, for example, the logging hardware only receives the absolute PC value under certain circumstances, for example when logging begins or after a program jump, and the code execution is otherwise displayed by the CPU in the form of PC increments, with each increment indicates that one or more commands have been executed.

Eine typische Aufgabe der Protokollier-Hardware ist das Auswerten der empfangenen PC-Werte zum Erzeugen von Steuersignalen, z. B. Haltepunkten. Ein Satz von Komparatoren kann zum Bestimmen verwendet werden, ob die CPU Befehle in einem bestimmten PC-Bereich ausgeführt hat oder sogar ob sie nur einen bestimmten Befehl an einer bestimmten PC-Stelle ausgeführt hat.A typical task of the logging hardware is to evaluate the received PC values to generate control signals, e.g. B. Breakpoints. A set of comparators can be used to determine whether the CPU has executed commands in a particular PC area, or even whether it has only executed a particular command at a particular PC location.

Fortfahrend mit dem oben genannten Beispiel und vorausgesetzt die stimulierende Schaltung kann Inkremente von 2 bis 40 in Schritten von 2 bereitstellen, muss die Protokollier-Hardware oder Vergleichs-Hardware alle Werte von 10.040 bis 10.080 in Schritten von 2 vergleichen, wenn der Wert 10.080 (eigentlich das Inkrement „{-,40}“) in einem zweiten Schritt nach Empfang des Werts 10040 empfangen wird. Diese Vielzahl von Vergleichsprozessen muss im gleichen Taktzyklus oder sequentiell durchgeführt werden, wobei jedoch folgende Probleme auftreten: Einerseits ist das vollständige Durchführen des Vergleichs für jeden berechneten Wert kostspielig (normalerweise werden PC-Werte mit 24 bis 32 oder sogar mehr Bits dargestellt) und andererseits ist das Verwenden zusätzlicher Taktzyklen höchst nachteilig für die Prozessorleistung, insbesondere wenn die CPU die Inkremente in einer großen Bandbreite bereitstellt. Aus diesen und anderen Gründen besteht ein Bedarf für die vorliegende Erfindung.Continuing with the example above and assuming the stimulating circuit can provide increments from 2 to 40 in steps of 2, the logging hardware or comparison hardware must compare all values from 10,040 to 10,080 in steps of 2 if the value 10,080 (actually the increment "{-, 40}") in a second step after receiving the value 10040 Will be received. This multitude of comparison processes must be performed in the same clock cycle or sequentially, but with the following problems: On the one hand, performing the comparison completely is expensive for each calculated value (usually PC values are shown with 24 to 32 or even more bits) and on the other hand using additional clock cycles is extremely detrimental to processor performance, especially when the CPU provides the increments over a wide bandwidth. For these and other reasons, there is a need for the present invention.

In Croad, J.G.: Range Comparator. IBM Technical Disclosure Bulletin, Vol. 7, 12, Mai 1965, Seiten 1158 1159, ist ein Bereichsvergleicher offenbart, welcher einen diskreten Einzelwert mit einem vorgegebenen Wertebereich vergleicht.In Croad, JG: Range Comparator. IBM Technical Disclosure Bulletin, Vol. 7, May 12, 1965, pages 1158 1159 , a range comparator is disclosed which compares a discrete individual value with a predetermined range of values.

In Tietze, U., Schenk, Ch.: Halbleiter-Schaltungstechnik, 9. Auflage, Springer Verlag 1989, Seiten 603-613, sind Grundlagen der Schaltungstechnik offenbart. In Tietze, U., Schenk, Ch .: Semiconductor circuit technology, 9th edition, Springer Verlag 1989 , Pages 603 - 613 , basics of circuit technology are disclosed.

Es ist eine konkrete technische Aufgabe, eine effiziente Auswertung von aktuellen Program Counter-Werten zur Erzeugung von Haltepunkt-Steuersignalen bereitzustellen.It is a specific technical task to provide an efficient evaluation of current program counter values in order to generate breakpoint control signals.

KURZE ZUSAMMENFASSUNG DER ERFINDUNGBRIEF SUMMARY OF THE INVENTION

Die Aufgabe wird durch den Gegenstand des Patentanspruchs 1 gelöst. Ein weiteres Ausführungsbeispiel ist im abhängigen Anspruch 2 beschrieben.The object is achieved by the subject matter of patent claim 1. Another embodiment is described in dependent claim 2.

Gemäß einer Erscheinungsform der Erfindung wird ein Verfahren zum Untersuchen eines Schnitts eines ersten Wertebereichs und eines zweiten Wertebereichs, von denen jeder einen unteren Grenzwert und einen oberen Grenzwert umfasst, in einem Mikroprozessor bereitgestellt, wobei das Verfahren ein Untersuchen, ob ein Wert des Wertebereichs größer gleich dem unteren Grenzwert des zweiten Wertebereichs ist, und ein Untersuchen umfasst, ob der untere Grenzwert des ersten Wertebereichs kleiner gleich dem oberen Grenzwert des zweiten Wertebereichs ist.According to one aspect of the invention, there is provided a method of examining a section of a first range of values and a second range of values, each of which includes a lower limit and an upper limit, in a microprocessor, the method of examining whether a value of the range is greater than or equal to is the lower limit of the second range of values, and examining whether the lower limit of the first range of values is less than or equal to the upper limit of the second range of values.

Gemäß einer weiteren Erscheinungsform der Erfindung wird eine Schaltung zum Untersuchen eines Schnitts eines ersten Wertebereichs und eines zweiten Wertebereichs, von denen jeder einen unteren Grenzwert und einen oberen Grenzwert umfasst, bereitgestellt, wobei die Schaltung erste Mittel zum Untersuchen, ob ein Wert des Werterbereichs größer gleich dem unteren Grenzwert des zweiten Wertebereichs ist, und zweite Mittel zum Untersuchen umfasst, ob der untere Grenzwert des ersten Wertebereichs kleiner gleich dem oberen Grenzwert des zweiten Wertebereichs ist.According to a further aspect of the invention, there is provided a circuit for examining a section of a first range of values and a second range of values, each of which includes a lower limit and an upper limit, the circuit comprising first means for examining whether a value of the range of values is greater than or equal to is the lower limit of the second range of values, and second means for examining whether the lower limit of the first range of values is less than or equal to the upper limit of the second range of values.

Weitere Merkmale, Erscheinungsformen und Vorzüge der vorliegenden Erfindung werden in der folgenden detaillierten Beschreibung unter Bezugnahme auf die beigefügten Zeichnungen offensichtlich.Further features, aspects and advantages of the present invention will become apparent in the following detailed description with reference to the accompanying drawings.

Figurenlistelist of figures

Die beigefügten Zeichnungen sind enthalten, um ein besseres Verständnis der vorliegenden Erfindung zu ermöglichen, und sind integriert in die vorliegende Beschreibung und bilden einen Bestandteil dieser. Die Zeichnungen zeigen Ausführungsbeispiele der vorliegenden Erfindung und dienen zusammen mit der Beschreibung zum Erläutern der Grundgedanken der Erfindung. Andere Ausführungsbeispiele der vorliegenden Erfindung und viele der beabsichtigten Vorzüge der vorliegenden Erfindung sind einfach zu beurteilen, da sie unter Bezugnahme auf die folgende detaillierte Beschreibung besser zu verstehen sind.

  • 1 zeigt eine schematische, beispielhafte Darstellung eines Schnitts einer Programmprotokolliereinheit, die mindestens eine Schaltung nach Ausführungsbeispielen der Erfindung umfasst;
  • 2 zeigt eine grafische Darstellung einer Ungleichung, die von der in 1 gezeigten Schaltung zu untersuchen ist;
  • 3 zeigt ein Schemadiagramm einer Schaltung nach einem Ausführungsbeispiel der Erfindung; und
  • 4 zeigt ein Schemadiagramm einer Schaltung nach einem weiteren Ausführungsbeispiel der Erfindung.
The accompanying drawings are included to provide a better understanding of the present invention and are incorporated in and constitute a part of this description. The drawings show exemplary embodiments of the present invention and, together with the description, serve to explain the basic ideas of the invention. Other embodiments of the present invention and many of the intended benefits of the present invention are easy to assess because they can be better understood with reference to the following detailed description.
  • 1 shows a schematic, exemplary representation of a section of a program logging unit, which comprises at least one circuit according to embodiments of the invention;
  • 2 shows a graphical representation of an inequality derived from that in 1 circuit shown is to be examined;
  • 3 shows a schematic diagram of a circuit according to an embodiment of the invention; and
  • 4 shows a schematic diagram of a circuit according to a further embodiment of the invention.

DETAILLIERTE BESCHREIBUNG DER ERFINDUNGDETAILED DESCRIPTION OF THE INVENTION

In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil dieser bilden und in denen zur Erläuterung spezifische Ausführungsbeispiele gezeigt werden, in denen die Erfindung ausgeführt werden kann. Es ist darauf hinzuweisen, dass andere Ausführungsbeispiele verwendet und strukturelle oder anderweitige Änderungen vorgenommen werden können, ohne dass vom Umfang der vorliegenden Erfindung abgewichen wird. Die folgende detaillierte Beschreibung darf daher nicht in einem einschränkenden Sinn verstanden werden, und der Umfang der vorliegenden Erfindung ist durch die beigefügten Ansprüche definiert.In the following detailed description, reference is made to the accompanying drawings, which form a part hereof, and in which, by way of illustration, specific exemplary embodiments are shown in which the invention can be carried out. It should be noted that other exemplary embodiments can be used and structural or other changes can be made without departing from the scope of the present invention. The following detailed description, therefore, is not to be taken in a limiting sense, and the scope of the present invention is defined by the appended claims.

1 zeigt eine schematische, beispielhafte Darstellung eines Schnitts einer Programmprotokolliereinheit (Program Trace Unit, PTU) nach einem Ausführungsbeispiel der Erfindung, beispielsweise der PTU einer superskalaren CPU. Eine typische Aufgabe der PTU ist beispielsweise das Auswerten der empfangenen PC-Werte zum Erzeugen von Steuersignalen, z. B. Haltepunkten. 1 shows a schematic, exemplary representation of a section of a program logging unit (Program Trace Unit, PTU) according to an embodiment of the invention, for example the PTU of a superscalar CPU. A typical task of the PTU is, for example, evaluating the received PC values to generate control signals, e.g. B. Breakpoints.

Wie in 1 gezeigt, umfasst die PTU mindestens eine Komparatorschaltung 11 . As in 1 shown, the PTU comprises at least one comparator circuit 11 ,

Die Komparatorschaltung 11 empfängt die Eingangssignale valid_I 13, ip_ref_I 14 und cur_inc_I 15 . Das Eingangssignal valid_I 13 gibt an, ob die empfangenen Befehlszeigerinkremente „aktuell gültig“ sind oder nicht. Nur wenn der protokollierte Programmablauf aktuell linear ist, können die Befehlszeigerinkremente unmittelbar ausgewertet und parallel für die wenigstens eine Komparatorschaltung 11 bereitgestellt werden. Wenn jedoch der protokollierte Programmablauf aktuell nicht linear ist, beispielsweise weil die PTU auf das Auftreten eines Sprungziels wartet, muss die PTU zwischenzeitlich die empfangenen Inkremente speichern, bis die Zieladresse auftritt, da die empfangenen Inkremente in Bezug zu dieser Zieladresse interpretiert werden müssen. Wenn somit das Eingangssignal valid_I 13 „nicht aktuell gültige“ Inkremente anzeigt, bleibt die wenigstens eine Komparatorschaltung 11 auf Standby, bis das Eingangssignal valid_I 13 „aktuell gültige“ Inkremente anzeigt. Eine Eingabe des Vortriggers 12 ist mit einer Ausgabe der wenigstens einen Komparatorschaltung 11 zum Bereitstellen eines Komparatorsignals 17 verbunden. Auf der Basis des Komparatorsignals 17 von der wenigstens einen Komparatorschaltung 11 stellt der Vortrigger einen Treffer bereit (z.B. Aktivieren eines Vortrigger-Signals 12), wenn mindestens einer der in den bereitgestellten Eingaben ip_ref_I 14 and cur_inc_I 15 beinhalteten Programmzähler-(PC-)Werte innerhalb des programmierten Bereichs, beschrieben durch die Ungleichung 1, liegt: BND PC BND + RNG

Figure DE102007040148B4_0001
bzw.: BND ip_ref_r + inc i BND + RNG bei beliebigem inc i  in  0 cur_inc_r Ungleichung
Figure DE102007040148B4_0002
The comparator circuit 11 receives the input signals valid_I 13, ip_ref_I 14 and cur_inc_I 15. The input signal valid_I 13 indicates whether the received command pointer increments are "currently valid" or not. Only if the logged program sequence is currently linear can the command pointer increments be evaluated directly and in parallel for the at least one comparator circuit 11 to be provided. However, if the logged program flow is currently not linear, for example because the PTU is waiting for a jump destination to occur, the PTU must temporarily save the received increments until the destination address occurs, since the received increments have to be interpreted in relation to this destination address. If the input signal valid_I 13 thus indicates “not currently valid” increments, the at least one comparator circuit remains 11 on standby until the input signal valid_I 13 shows "currently valid" increments. An input from the pre-trigger 12 is with an output of the at least one comparator circuit 11 for providing a comparator signal 17 connected. Based on the comparator signal 17 from the at least one comparator circuit 11 the pre-trigger provides a hit (e.g. activation of a pre-trigger signal 12 ) if at least one of the program counter (PC) values contained in the ip_ref_I 14 and cur_inc_I 15 inputs is within the programmed range, described by inequality 1: BND PC BND + RNG
Figure DE102007040148B4_0001
respectively.: BND ip_ref_r + inc i BND + RNG with any inc i in 0 ... cur_inc_r inequality
Figure DE102007040148B4_0002

Dabei gilt:

  • BND ist der untere Grenzwert des programmierten Bereichs;
  • RNG ist die Breite des programmierten Bereichs;
  • PC ist der aktuelle Programmzählerwert;
  • ip_ref_r ist der „alte PC-Wert“ vom vorhergehenden Taktzyklus;
  • inci sind eine Vielzahl von Inkrementen (0...cur_inc_r), wobei cur_inc_r das maximale Inkrement des aktuellen Taktzyklus ist.
The following applies:
  • BND is the lower limit of the programmed range;
  • RNG is the width of the programmed area;
  • PC is the current program counter value;
  • ip_ref_r is the "old PC value" from the previous clock cycle;
  • inci are a variety of increments ( 0 ... cur_inc_r), where cur_inc_r is the maximum increment of the current clock cycle.

2 zeigt eine grafische Darstellung von Ungleichung 1. Das obere Diagramm zeigt die Ungleichung 1 im Falle von cur_inc_r = 0. In diesem Fall ist die Ungleichung 1 nur wahr („Treffer“), wenn ip_ref_3 innerhalb der Grenzwerte BND und BND+RNG (Intervall 22) liegt oder diesen entspricht. Andernfalls ist die Ungleichung 1 unwahr („kein Treffer“, Intervall 21 und 23). 2 shows a graphic representation of inequality 1. The upper diagram shows inequality 1 in the case of cur_inc_r = 0. In this case inequality 1 is only true ("hit") if ip_ref_3 is within the limits BND and BND + RNG (interval 22 ) lies or corresponds to these. Otherwise, inequality 1 is untrue ("no hit", interval 21 and 23 ).

Das untere Diagramm zeigt einen allgemeinen Fall von Ungleichung 1. In diesem Fall ist das Intervall von Werten für ip_ref_r, für das die Ungleichung 1 erfüllt ist („Treffer“), größer: Zusätzlich zum Intervall 25b (BND...BND + RNG), das dem Intervall 22 des oberen Diagramms entspricht, erfüllen auch Werte für ip_ref_r im angrenzenden Intervall 25a die Ungleichung 1. Für Werte von ip_ref_r innerhalb dieses Intervalls 25a liegt der aktuelle PC-Wert (PC = ip_ref_r + inci) - für entsprechende Werte von inci - innerhalb des programmierten Bereichs (BND...BND + RNG). Da inci ansteigende Werte mit einem maximalen Wert von cur_inc_r sind, hat Intervall 25a eine Breite von cur_inc_r und liegt unterhalb des Intervalls 25b.The lower diagram shows a general case of inequality 1. In this case, the interval of values for ip_ref_r for which inequality 1 is fulfilled ("hit") is larger: in addition to the interval 25b (BND ... BND + RNG), the interval 22 of the diagram above, also meet values for ip_ref_r in the adjacent interval 25a the inequality 1. For values of ip_ref_r within this interval 25a the current PC value (PC = ip_ref_r + inc i ) - for corresponding values of inci - is within the programmed range (BND ... BND + RNG). Since inci are increasing values with a maximum value of cur_inc_r, interval has 25a a width of cur_inc_r and is below the interval 25b ,

Werte von ip_ref_r in den Intervallen 24 und 26 erfüllen die Ungleichung 1 nicht („kein Treffer“).Values of ip_ref_r in the intervals 24 and 26 do not meet inequality 1 ("no hit").

Zum Untersuchen von Ungleichung 1, die eigentlich eine „Doppelungleichung“ ist, wird die Ungleichung 1 in zwei Teilungleichungen 2 und 3 aufgeteilt: BND ip_ref_r + inc i bei beliebigem inc i  in  0 cur_inc_r

Figure DE102007040148B4_0003
und ip_ref_r + inc i BND + RNG bei beliebigem inc i  in  0 cur_inc_r
Figure DE102007040148B4_0004
To examine inequality 1, which is actually a "double inequality", inequality 1 is divided into two inequalities 2 and 3 divided up: BND ip_ref_r + inc i with any inc i in 0 ... cur_inc_r
Figure DE102007040148B4_0003
and ip_ref_r + inc i BND + RNG with any inc i in 0 ... cur_inc_r
Figure DE102007040148B4_0004

Unter der Annahme, dass es nicht wichtig ist, genau zu wissen, welcher Wert von inci die Ungleichung 1 erfüllt, d. h. Ungleichung 2 und 3, kann Ungleichung 3 auf Grundlage folgender Überlegungen vereinfacht werden: Zum Untersuchen, ob einer der Werte von ip_ref_r + inci kleiner gleich BND + RNG ist, reicht eine Untersuchung, ob ip_ref_r kleiner gleich BND + RNG ist: Wenn der kleinste Wert von ip_ref_r + inci, d. h. ip_ref_r (inci = 0), bereits größer ist als BND + RNG, wird kein anderer Wert von ip_ref_r + inci kleiner gleich BND + RNG sein, was zur vereinfachten Ungleichung 3a führt: ip_ref_r BND + RNG

Figure DE102007040148B4_0005
Assuming that it is not important to know exactly which value of inci meets inequality 1, ie inequality 2 and 3, inequality 3 can be simplified based on the following considerations: To examine whether any of the values of ip_ref_r + inci is less than or equal to BND + RNG, an investigation is sufficient to determine whether ip_ref_r is less than or equal to BND + RNG: If the smallest value of ip_ref_r + inci, ie ip_ref_r (inc i = 0), is already greater than BND + RNG, no other value is obtained of ip_ref_r + inc i be less than or equal to BND + RNG, which leads to simplified inequality 3a: ip_ref_r BND + RNG
Figure DE102007040148B4_0005

3 zeigt eine Schaltung nach einem Ausführungsbeispiel der Erfindung, die eine Hardware-Implementierung einer Untersuchung von Ungleichung 2 und 3a darstellt. Die Schaltung von 3 umfasst ein Subtrahierglied 301, das die Digitalwerte von BND und ip_ref_r als Eingabe empfängt und einen Differenzdigitalwert BND-ip_ref_r als Ausgabe erzeugt, der ein Vorzeichenbit, m höchstwertige Bits (Most Significant Bits, MSBs) und n niedrigstwertige Bits (Least Significant Bits, LSBs) umfasst, unter der Annahme, dass ip_ref_r m + n Stellen und cur_inc_r n Stellen umfasst. 3 shows a circuit according to an embodiment of the invention, which represents a hardware implementation of an investigation of inequality 2 and 3a. The circuit of 3 includes a subtractor 301 , which receives the digital values of BND and ip_ref_r as input and generates a differential digital value BND-ip_ref_r as output, which comprises a sign bit, m most significant bits (MSBs) and n least significant bits (LSBs), below which Assume that ip_ref_r includes m + n digits and cur_inc_r n digits.

Das Vorzeichenbit von BND-ip_ref_r ist „0“, wenn BND-ip_ref_r positiv oder gleich 0 ist, und ist „1“, wenn BND-ip_ref_r negativ ist.The sign bit of BND-ip_ref_r is "0" if BND-ip_ref_r is positive or equal to 0, and is "1" if BND-ip_ref_r is negative.

Die n LSBs von BND-ip_ref_r umfassen die n niedrigsten Stellen des Digitalwerts von BND-ip_ref_r.The n LSBs of BND-ip_ref_r include the n lowest digits of the digital value of BND-ip_ref_r.

Darüber hinaus umfassen die m MSBs von BND-ip_ref_r die restlichen m (höchsten) Stellen von BND-ip_ref_r.In addition, the m MSBs of BND-ip_ref_r include the remaining m (highest) digits of BND-ip_ref_r.

Die Ausgabe des Subtrahierglieds 301 wird als erste Eingabe dem Addierglied 302 über die Verbindung 320a bereitgestellt und ebenfalls über die Verbindung 320b übertragen, welche in drei separate Verbindungen 321, 322 und 323 verzweigt. Die Verbindung 321 überträgt das Vorzeichenbit von BND-ip_ref_r als eine erste Eingabe zur ODER-Schaltung 311, die Verbindung 322 überträgt die m höchstwertigen Bits als erste Eingabe zum Gleichheitskomparator 303, und die Verbindung 323 überträgt die n niedrigstwertigen Bits zu einer Vielzahl von Gleichheitskomparatoren 304a - 304k.The output of the subtractor 301 is the first input to the adder 302 about the connection 320a provided and also over the connection 320b transferred which into three separate connections 321 . 322 and 323 branched. The connection 321 transmits the sign bit of BND-ip_ref_r as a first input to the OR circuit 311 , the connection 322 transmits the m most significant bits as the first input to the equality comparator 303 , and the connection 323 transfers the n least significant bits to a variety of equality comparators 304a - 304k.

Der Gleichheitskomparator 303 untersucht, ob jeder der m MSBs von BND-ip_ref_r gleich Null ist (bereitgestellt für eine zweite Eingabe von Komparator 303) und stellt das Ergebnis als logisches Bit (1 = wahr, 0 = unwahr) für eine erste Eingabe der UND-Schaltung 308 bereit.The equality comparator 303 examines whether each of the m MSBs of BND-ip_ref_r is zero (provided for a second input from comparator 303 ) and represents the result as a logical bit ( 1 = true, 0 = false) for a first input of the AND circuit 308 ready.

Die Gleichheitskomparatoren 304a - 304k untersuchen jeweils, ob die n LSBs von BND-ip_ref_r gleich beliebigen möglichen Inkrementen inci sind, d. h. bei beliebigem inci in 0 max(cur_inc_r). Die Gleichheitskomparatoren 304b - 304k stellen ihre entsprechenden Ergebnisse als logische Bits (1 = wahr, 0 = unwahr) jeweils für die ersten Eingaben der UND-Schaltungen 306b - 306k über die entsprechenden Verbindungen 326b - 326k bereit, wobei die Ausgabe des Gleichheitskomparators 304a direkt mit einer Eingabe der ODER-Schaltung 310 über die Verbindung 327a verbunden ist.The equality comparators 304a - 304k investigate whether the n LSBs of BND-ip_ref_r are equal to any possible increments inci, ie with any inc i in 0 max (cur_inc_r). The equality comparators 304b - 304k put their corresponding results as logical bits ( 1 = true, 0 = untrue) for the first inputs of the AND circuits 306b - 306k via the corresponding connections 326b - 326K ready, the output of the equality comparator 304a directly with an input of the OR circuit 310 about the connection 327a connected is.

Jeder der Größenkomparatoren 305b - 305k empfängt den Digitalwert von cur_inc_r als eine erste Eingabe und untersucht jeweils, ob cur_inc_r größer gleich einem der möglichen Inkremente inci, beginnend mit dem Wert 2 bis zum Wert max(cur_inc_r), ist; (die möglichen Inkremente inci werden als entsprechende zweite Eingaben für die Komparatoren 305b - 305k bereitgestellt). Die Ergebnisse werden als logische Bits (1 = wahr, 0 = unwahr) für die jeweiligen zweiten Eingaben der entsprechenden UND-Schaltungen 306b - 306k über die jeweiligen Verbindungen 325b - 325k bereitgestellt.Each of the size comparators 305b - 305k receives the digital value from cur_inc_r as a first input and examines whether cur_inc_r is greater than or equal to one of the possible increments inci, starting with the value 2 up to max (cur_inc_r),; (The possible increments inci are used as corresponding second inputs for the comparators 305b - 305k provided). The results are presented as logical bits ( 1 = true, 0 = false) for the respective second inputs of the corresponding AND circuits 306b - 306k about the respective connections 325b - 325k provided.

Jede der jeweiligen Ausgaben der UND-Schaltungen 306b - 306k wird als weitere Eingabe für die ODER-Schaltung 310 über die Verbindungen 327b - 327k bereitgestellt.Each of the respective outputs of the AND circuits 306b - 306k is used as another input for the OR circuit 310 about the connections 327b - 327k provided.

Die UND-Schaltung 308 empfängt (wie beschrieben) die Ausgabe des Gleichheitskomparators 303 als erste Eingabe und zusätzlich zu dieser die Ausgabe der ODER-Schaltung 310 als zweite Eingabe und stellt ihre erzeugte Ausgabe als zweite Eingabe für die ODER-Schaltung 311 über die Verbindung 328 bereit.The AND circuit 308 receives (as described) the output of the equality comparator 303 as the first input and in addition to this the output of the OR circuit 310 as a second input and provides its generated output as a second input for the OR circuit 311 about the connection 328 ready.

Die ODER-Schaltung 311 empfängt (wie beschrieben) das Vorzeichenbit von BND-ip_ref_r und die Ausgabe der UND-Schaltung 308 als Eingaben und stellt die erzeugte Ausgabe über die Verbindung 329 als erste Eingabe für die UND-Schaltung 309 bereit. The OR circuit 311 receives (as described) the sign bit from BND-ip_ref_r and the output of the AND circuit 308 as inputs and puts the generated output over the connection 329 as the first input for the AND circuit 309 ready.

Das Addierglied 302 addiert die Ausgabe des Subtrahierglieds 301 zum Digitalwert RNG (empfangen als zweite Eingabe am Addierglied 302) und gibt einen Summendigitalwert von BND-ip_ref_r + RNG aus, umfassend ein Vorzeichenbit, m MSBs und n LSBs.The adder 302 adds the output of the subtractor 301 to digital value RNG (received as second input on adder 302 ) and outputs a sum digital value of BND-ip_ref_r + RNG, comprising a sign bit, m MSBs and n LSBs.

Die UND-Schaltung 309 empfängt das Bit für das Minus-Vorzeichen von BND-ip_ref_r + RNG über die Verbindung 330 als zweite Eingabe und (wie beschrieben) die Ausgabe der ODER-Schaltung 311 über die Verbindung 329 als erste Eingabe. Das Ausgabebit der UND-Schaltung 309, das die Endausgabe der Schaltung in 3 darstellt, gibt an, dass wenigstens ein Wert der Vielzahl von Werten von ip_ref_r + inci die Ungleichungen 2 und 3a erfüllt, wenn es „1“ (1 = wahr) ist, und gibt an, dass kein Wert der Vielzahl von Werten von ip_ref_r + inci die Ungleichungen 2 und 3a erfüllt, wenn es „0“ (0 = unwahr) ist.The AND circuit 309 receives the minus sign bit from BND-ip_ref_r + RNG over the connection 330 as the second input and (as described) the output of the OR circuit 311 about the connection 329 as the first entry. The output bit of the AND circuit 309 that the final edition of the circuit in 3 indicates that at least one of the plurality of values of ip_ref_r + inci satisfies inequalities 2 and 3a when it is “1” (1 = true), and indicates that no value of the plurality of values of ip_ref_r + inci fulfills inequalities 2 and 3a if it is "0" (0 = untrue).

Im Folgenden wird die Untersuchung der Ungleichung 1 aus einem etwas anderen Blickwinkel betrachtet. Da bei vielen Anwendungen, wie etwa der Protokollierung von PC-Werten, es nicht wesentlich ist, genau zu wissen, welcher Wert, beispielsweise ein PC-Wert, in einem fest vorgegebenen Bereich, beispielsweise einem programmierten Bereich (BND...BND + RNG), liegt, kann die Untersuchung der Ungleichung 1 wie folgt vereinfacht werden: Die Ungleichung 1 kann zu einem einfachen Problem der Mengenlehre umformuliert werden: Da die untersuchten PC-Werte ebenfalls einen Bereich bzw. ein Intervall von diskreten Werten (ip_ref_r...ip_ref_r + inci) bilden, kann die Untersuchung der Ungleichung 1 jeweils als eine Untersuchung des Schnitts von zwei Wertesätzen oder zwei Wertebereichen betrachtet werden. Entsprechend ist die Ungleichung 1 wahr, wenn der Schnitt der zwei Wertebereiche mindestens einen Wert umfasst; die Ungleichung 1 ist hingegen unwahr, wenn der Schnitt der beiden Wertebereiche leer ist.In the following, the investigation of inequality 1 is viewed from a slightly different perspective. Since in many applications, such as the logging of PC values, it is not essential to know exactly which value, for example a PC value, in a predetermined area, for example a programmed area (BND ... BND + RNG ), the investigation of inequality 1 can be simplified as follows: inequality 1 can be reformulated to a simple problem of set theory: since the PC values examined also have a range or an interval of discrete values (ip_ref_r ... ip_ref_r + inc i ), the investigation of inequality 1 can each be viewed as an examination of the intersection of two sets of values or two ranges of values. Accordingly, inequality 1 is true if the intersection of the two value ranges comprises at least one value; however, inequality 1 is untrue if the intersection of the two value ranges is empty.

Es wird jedoch darauf hingewiesen, dass die letzten Schlussfolgerungen streng genommen nur für zwei kontinuierliche Wertebereiche gültig sind. Wenn andernfalls ein Wertebereich diskret ist, kann der Schnitt der beiden Wertebereiche leer sein, auch wenn der untere/obere Grenzwert von einem Wertebereich jeweils kleiner/größer ist als der untere/obere Grenzwert des anderen Bereichs, wobei ein Inkrement des diskreten Wertebereichs größer ist als der gesamte andere Wertebereich.However, it should be noted that the last conclusions, strictly speaking, are only valid for two continuous ranges of values. Otherwise, if a range of values is discrete, the intersection of the two ranges of values may be empty, even if the lower / upper limit of one range of values is in each case smaller / larger than the lower / upper limit of the other range, an increment of the discrete range of values being greater than the entire other range of values.

Bei bestimmten Anwendungen jedoch, beispielsweise beim Protokollieren eines PC-Werts in einem Mikroprozessor, kann die Betrachtung des diskreten Bereichs von Inkrementen als ein tatsächlich kontinuierlicher Bereich, der alle zwischen den entsprechenden Inkrementen liegenden gültigen Werte umfasst, wünschenswert sein.However, in certain applications, such as when logging a PC value in a microprocessor, it may be desirable to consider the discrete range of increments as an actually continuous range that includes all valid values between the corresponding increments.

Entsprechend kann eine Lösung für das oben genannte Problem eine Untersuchung der Grenzwerte der beiden Wertebereiche umfassen. Wenn der untere Grenzwert von einem Wertebereich größer ist als der obere Grenzwert des anderen Wertebereichs, ist der Schnitt der beiden Wertebereiche leer.Accordingly, a solution to the above problem may include examining the thresholds of the two ranges. If the lower limit of one value range is greater than the upper limit of the other value range, the intersection of the two value ranges is empty.

Andernfalls umfasst der Schnitt mindestens einen Wert.Otherwise, the cut includes at least one value.

Somit kann die Ungleichung 1 vereinfacht werden, wenn sie in zwei Teilungleichungen unterteilt wird: BND ip_ref_r + cur_inc_r

Figure DE102007040148B4_0006
und ip_ref_r BND + RNG
Figure DE102007040148B4_0007
Inequality 1 can thus be simplified if it is divided into two partial inequalities: BND ip_ref_r + cur_inc_r
Figure DE102007040148B4_0006
and ip_ref_r BND + RNG
Figure DE102007040148B4_0007

Wenn jedoch die zu untersuchenden Werte einen hohen absoluten Wert haben, erfordert eine Hardware-Lösung zur genauen Implementierung des oben genannten Lösungsansatzes große und teure Größenkomparatoren zum Vergleichen von hohen Werten (beispielsweise 24- oder 32-Bit-Werte oder noch höhere Werte).However, if the values to be examined have a high absolute value, a hardware solution to accurately implement the above approach requires large and expensive size comparators to compare high values (e.g. 24 or 32 bit values or even higher values).

Aus diesem Grund wird ip_ref_r jeweils auf beiden Seiten der Ungleichungen 2b und 3b subtrahiert und die Ungleichungen 2b und 3b gestalten sich wie folgt: BND ip_ref_r cur_inc_r

Figure DE102007040148B4_0008
und 0 BND ip_ref_r + RNG
Figure DE102007040148B4_0009
For this reason, ip_ref_r is subtracted on both sides of inequalities 2b and 3b and inequalities 2b and 3b are as follows: BND - ip_ref_r cur_inc_r
Figure DE102007040148B4_0008
and 0 BND - ip_ref_r + RNG
Figure DE102007040148B4_0009

Auf diese Weise müssen lediglich erheblich kleinere Werte verglichen werden, um die Ungleichungen 2b' und 3b' zu untersuchen.In this way, only significantly smaller values have to be compared in order to examine inequalities 2b 'and 3b'.

Die Ungleichung 2b' kann zur Hardware-Implementierung weiter vereinfacht werden wie folgt: BND ip_ref_r cur_inc_r 0

Figure DE102007040148B4_0010
Inequality 2b 'can be further simplified for hardware implementation as follows: BND - ip_ref_r - cur_inc_r 0
Figure DE102007040148B4_0010

Somit müssen nur zwei Vorzeichenuntersuchungen durchgeführt werden, um die Ungleichungen 2b" und 3b' zu untersuchen: Für die Gleichung 2b" muss das Vorzeichen des Werts von BND-ip_ref_r-cur_inc_r untersucht werden, und für die Gleichung 3b' muss das Vorzeichen des Werts von BND-ip_ref_r + RNG untersucht werden. Ein entsprechendes Ausführungsbeispiel der Erfindung wird anschließend detailliert unter Bezugnahme auf 4 beschrieben.Thus, only two sign studies need to be performed to examine inequalities 2b "and 3b ': for equation 2b", the sign of the value of BND-ip_ref_r-cur_inc_r must be examined, and for equation 3b', the sign of the value of BND-ip_ref_r + RNG are examined. A corresponding embodiment of the invention is subsequently described in detail with reference to FIG 4 described.

4 zeigt eine Schaltung nach einem Ausführungsbeispiel der Erfindung, die eine Hardware-Implementierung einer Untersuchung der Ungleichungen 2b" und 3b' darstellt. 4 shows a circuit according to an embodiment of the invention, which represents a hardware implementation of an investigation of inequalities 2b "and 3b '.

Die Schaltung von 4 umfasst ein Subtrahierglied 401, das die Werte von BND und ip_ref_r als erste und zweite Eingabe empfängt und einen Differenzwert BND-ip_ref_r erzeugt.The circuit of 4 includes a subtractor 401 , which receives the values of BND and ip_ref_r as first and second input and generates a difference value BND-ip_ref_r.

Die Ausgabe des Subtrahierglieds 401, BND-ip_ref_r, wird als eine erste Eingabe für das Subtrahierglied 431 über die Verbindungen 440 und 440a und ebenfalls als eine erste Eingabe für das Addierglied 402 über die Verbindungen 440 und 440b bereitgestellt.The output of the subtractor 401 , BND-ip_ref_r, is used as a first input for the subtractor 431 about the connections 440 and 440a and also as a first input for the adder 402 about the connections 440 and 440b provided.

Das Subtrahierglied 431 empfängt zusätzlich den Wert von cur_inc_r (als eine zweite Eingabe) und subtrahiert cur_inc_r von der Ausgabe des Subtrahierglieds 401, BND-ip_ref_r, um einen Differenzwert BND-ip_ref_r-cur_inc_r zu erzeugen. Der Komparator 432 empfängt den Differenzwert und untersucht, ob der Differenzwert von BND-ip_ref_r-cur_inc_r kleiner gleich Null ist. Wenn der Differenzwert von BND-ip_ref_r-cur_inc_r kleiner gleich Null ist, stellt der Komparator 432 eine logische „1“ (wahr) für eine erste Eingabe der UND-Schaltung 409 über die Verbindung 443 und eine logische „0“ (unwahr) bereit, falls der Differenzwert von BND-ip_ref_r-cur_inc_r größer als Null ist.The subtractor 431 additionally receives the value of cur_inc_r (as a second input) and subtracts cur_inc_r from the output of the subtractor 401 , BND-ip_ref_r to generate a difference value BND-ip_ref_r-cur_inc_r. The comparator 432 receives the difference value and examines whether the difference value of BND-ip_ref_r-cur_inc_r is less than or equal to zero. If the difference value of BND-ip_ref_r-cur_inc_r is less than or equal to zero, the comparator provides 432 a logical "1" (true) for a first input of the AND circuit 409 about the connection 443 and a logical "0" (false) ready if the difference value of BND-ip_ref_r-cur_inc_r is greater than zero.

Das Addierglied 402 empfängt wie beschrieben die Ausgabe des Subtrahierglieds 401 BND-ip_ref_r als eine erste Eingabe und den Wert von RNG als eine zweite Eingabe und gibt einen Summenwert BND-ip_ref_r + RNG für den Komparator 433 über die Verbindung 442 aus.The adder 402 receives the output of the subtractor as described 401 BND-ip_ref_r as a first input and the value of RNG as a second input and gives a sum value BND-ip_ref_r + RNG for the comparator 433 about the connection 442 out.

Der Komparator 433 untersucht, ob der Summenwert von BND-ip_ref_r + RNG größer gleich Null ist. Wenn der Summenwert von BND-ip_ref_r + RNG größer gleich Null ist, stellt der Komparator 433 eine logische „1“ (wahr) für eine zweite Eingabe der UND-Schaltung 409 über die Verbindung 444 und eine logische „0“ (unwahr) bereit, falls der Summenwert von BND-ip_ref_r + RNG kleiner als Null ist.The comparator 433 examines whether the total value of BND-ip_ref_r + RNG is greater than or equal to zero. If the total value of BND-ip_ref_r + RNG is greater than or equal to zero, the comparator provides 433 a logical “1” (true) for a second input of the AND circuit 409 about the connection 444 and a logical "0" (false) ready if the total value of BND-ip_ref_r + RNG is less than zero.

Die UND-Schaltung 409 empfängt wie beschrieben die Ausgaben der Komparatoren 432 und 433 als Eingaben und stellt eine logische „1“ (wahr) nur bereit, wenn die Ausgaben der Komparatoren 432 und 433 beide wahr sind; andernfalls stellt sie eine logische „0“ (unwahr) bereit.The AND circuit 409 receives the outputs of the comparators as described 432 and 433 as inputs and provides a logical "1" (true) only if the outputs of the comparators 432 and 433 both are true; otherwise it provides a logical "0" (false).

Die Ausgabe der UND-Schaltung 409, die auch die Endausgabe der Schaltung von 4 darstellt, ist daher wahr („0“), wenn beide Ungleichungen 2b" und 3b' erfüllt sind, und andernfalls unwahr („1“).The output of the AND circuit 409 which is also the final edition of the circuit of 4 is therefore true ("0") if both inequalities 2b "and 3b 'are fulfilled and otherwise false (" 1 ").

11 Komparatorschaltung 12 Vortrigger 13 Eingangssignal 14 Eingangssignal 15 Eingangssignal 16 Eingangssignale 17 Komparatorsignal 21 Wertebereich 22 Wertebereich 23 Wertebereich 24 Wertebereich 25a Wertebereich 25b Wertebereich 26 Wertebereich 301 Subtrahierglied 302 Addierglied 303 Gleichheitskomparator 304a-k Gleichheitskomparatoren 305b-k Größenkomparatoren 306b-k UND-Schaltungen 308 UND-Schaltung 309 UND-Schaltung 310 ODER-Schaltung 311 ODER-Schaltung 320a Verbindung 320b Verbindung 321 Verbindung 322 Verbindung 323 Verbindung 324 Verbindung 325b-k Verbindungen 326b-k Verbindungen 327a-k Verbindungen 328 Verbindung 329 Verbindung 330 Verbindung 401 Subtrahierglied 402 Addierglied 409 UND-Schaltung 431 Subtrahierglied 432 Größenkomparator 433 Größenkomparator 440 Verbindung 440a Verbindung 440b Verbindung 441 Verbindung 441 Verbindung 443 Verbindung 444 Verbindung11 comparator circuit 12 pretrigger 13 input 14 input 15 input 16 input signals 17 comparator 21 value range 22 value range 23 value range 24 value range 25a value range 25b value range 26 value range 301 subtractor 302 adder 303 equality comparator 304a-k Gleichheitskomparatoren 305b-k magnitude comparators 306b-k AND circuits 308 AND circuit 309 AND circuit 310 OR circuit 311 OR circuit 320a connection 320b connection 321 connection 322 connection 323 connection 324 connection 325b-k links 326b-k links 327a-k links 328 connection 329 connection 330 connection 401 subtractor 402 adder 409 AND circuit 431 subtractor 432 magnitude 433 magnitude 440 connection 440a connection 440b connection 441 connection 441 connection 443 connection 444 connection

Claims (2)

Mikroprozessor, mit einer Programmprotokolliereinheit, welche eine Schaltung aufweist zum Auswerten einer Vielzahl von Program Counter (PC) - Werten zur Erzeugung von Haltepunkt-Steuersignalen für die Programmprotokolliereinheit, wobei von der Schaltung untersucht wird, ob mindestens ein Program Counter (PC) - Wert aus der Vielzahl von Program Counter (PC) - Werten, welche einen zweiten Wertebereich bilden, innerhalb eines vorgegebenen ersten Wertebereichs (BND...BND+RNG) liegt, wobei der erste Wertebereich und der zweite Wertebereich kontinuierliche Wertebereiche sind, und wobei der zweite Wertebereich den Bereich ip_ref_r...ip_ref_r+cur_inc_r bildet, wobei ip_ref_r den alten PC-Wert des vorherigen Taktzyklus darstellt, und cur_inc_r das maximale Inkrement des aktuellen Taktzyklus darstellt, und wobei die Schaltung umfasst: ein erstes Subtrahierglied (401), welches den unteren Grenzwert des ersten Wertebereichs (BND) und den unteren Grenzwert des zweiten Wertebereichs (ip_ref_r) repräsentierende Signale empfängt, und zur Erzeugung eines ein erstes Subtraktionsergebnis repräsentierenden ersten Subtraktionsergebnissignals den unteren Grenzwert des zweiten Wertebereichs (ip_ref_r) vom unteren Grenzwert des ersten Wertebereichs (BND) subtrahiert; ein zweites Subtrahierglied (431), welches das das erste Subtraktionsergebnis repräsentierende erste Subtraktionsergebnissignal vom ersten Subtrahierglied (401) empfängt, und zur Erzeugung eines ein zweites Subtraktionsergebnis repräsentierenden zweiten Subtraktionsergebnissignals das empfangene maximale Inkrement des zweiten Wertebereichs cur_inc_r vom ersten Subtraktionsergebnis subtrahiert; einen ersten Komparator (432), welcher das das zweite Subtraktionsergebnis repräsentierende zweite Subtraktionsergebnissignal vom zweiten Subtrahierglied (431) empfängt, und untersucht, ob das zweite Subtraktionsergebnis vom zweiten Subtrahierglied (431) kleiner gleich Null ist, und falls ja, ein einen Wahr-Wert repräsentierendes Signal ausgibt, und falls nein, ein einen Unwahr-Wert repräsentierendes Signal ausgibt; ein Addierglied (402), welches das das erste Subtraktionsergebnis repräsentierende erste Subtraktionsergebnissignal vom ersten Subtrahierglied (401) empfängt, ein die Breite des zweiten Wertebereichs repräsentierendes Signal (RNG) empfängt, und ein einen Summenwert des ersten Subtraktionsergebnisses und der Breite des zweiten Wertebereichs repräsentierendes Signal ausgibt; einen zweiten Komparator (433), welcher das den Summenwert repräsentierende Signal vom Addierglied (402) empfängt, und untersucht, ob der Summenwert größer gleich Null ist, und falls ja, ein einen Wahr-Wert repräsentierendes Signal ausgibt, und falls nein, ein einen Unwahr-Wert repräsentierendes Signal ausgibt; und eine UND-Schaltung (409), die die jeweils einen Wahr- oder Unwahr-Wert repräsentierenden Signale vom ersten (433) und zweiten Komparator (432) empfängt, und ein einen Wahr-Wert repräsentierendes Ergebnissignal ausgibt, wenn die vom ersten (433) und zweiten Komparator (443) empfangenen Signale beide einen Wahr-Wert repräsentieren, und andernfalls ein einen Unwahr-Wert repräsentierendes Ergebnissignal ausgibt.Microprocessor, with a program logging unit which has a circuit for evaluating a multiplicity of program counter (PC) values for generating breakpoint control signals for the program logging unit, the circuit examining whether at least one program counter (PC) value from the multiplicity of Program Counter (PC) - values which form a second value range lie within a predetermined first value range (BND ... BND + RNG), the first value range and the second value range being continuous value ranges, and the second value range covering the range ip_ref_r ... ip_ref_r + cur_inc_r, where ip_ref_r represents the old PC value of the previous clock cycle, and cur_inc_r represents the maximum increment of the current clock cycle, and wherein the circuit comprises: a first subtractor (401) which receives signals representing the lower limit value of the first value range (BND) and the lower limit value of the second value range (ip_ref_r), and for generating a first subtraction result signal representing the first limit value of the second value range (ip_ref_r) subtracted from the lower limit of the first range of values (BND); a second subtractor (431) which receives the first subtraction result signal representing the first subtraction result from the first subtractor (401) and subtracts the received maximum increment of the second value range cur_inc_r from the first subtraction result to generate a second subtraction result signal representing a second subtraction result; a first comparator (432) which receives the second subtraction result signal representing the second subtraction result from the second subtractor (431) and examines whether the second subtraction result from the second subtractor (431) is less than or equal to zero, and if so, a true value outputs a signal representing, and if not, outputs a signal representing a false value; an adder (402) which receives the first subtraction result signal representing the first subtraction result from the first subtractor (401), receives a signal (RNG) representing the width of the second range of values, and a signal representing a sum value of the first subtraction result and the width of the second range of values outputs; a second comparator (433), which receives the signal representing the sum value from the adder (402), and examines whether the sum value is greater than or equal to zero, and if so, outputs a signal representing a true value, and if no, a one Outputs a false value signal; and an AND circuit (409) which receives the signals representing a true or false value from the first (433) and second comparator (432), and outputs a result signal representing a true value when the signal from the first (433) and second comparator (443) received signals both represent a true value, and otherwise outputs a result signal representing a false value. Mikroprozessor nach Anspruch 1, wobei der Mikroprozessor als superskalarer Prozessor ausgestaltet ist.Microprocessor after Claim 1 , wherein the microprocessor is designed as a superscalar processor.
DE102007040148.7A 2006-08-25 2007-08-24 Microprocessor with a circuit for evaluating a large number of program counter (PC) values for generating breakpoint control signals for a program logging unit Expired - Fee Related DE102007040148B4 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/467,370 2006-08-25
US11/467,370 US7698542B2 (en) 2006-08-25 2006-08-25 Circuit and method for comparing program counter values

Publications (2)

Publication Number Publication Date
DE102007040148A1 DE102007040148A1 (en) 2008-02-28
DE102007040148B4 true DE102007040148B4 (en) 2020-02-06

Family

ID=38973471

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102007040148.7A Expired - Fee Related DE102007040148B4 (en) 2006-08-25 2007-08-24 Microprocessor with a circuit for evaluating a large number of program counter (PC) values for generating breakpoint control signals for a program logging unit

Country Status (2)

Country Link
US (1) US7698542B2 (en)
DE (1) DE102007040148B4 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10942748B2 (en) * 2015-07-16 2021-03-09 Nxp B.V. Method and system for processing interrupts with shadow units in a microcontroller

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH077422B2 (en) * 1991-08-23 1995-01-30 インターナショナル・ビジネス・マシーンズ・コーポレイション Method and system for executing join in computer processing database system
US6633953B2 (en) * 2000-02-08 2003-10-14 Hywire Ltd. Range content-addressable memory
JP2004013556A (en) * 2002-06-07 2004-01-15 Matsushita Electric Ind Co Ltd Processor device, compile device, and its method
US7200846B2 (en) * 2002-08-05 2007-04-03 Sun Microsystems, Inc. System and method for maintaining data synchronization
US7171497B2 (en) * 2002-11-22 2007-01-30 Texas Instruments Incorporated Progressive extended compression mask for dynamic trace
US7117398B2 (en) * 2002-11-22 2006-10-03 Texas Instruments Incorporated Program counter range comparator with equality, greater than, less than and non-equal detection modes
WO2005052769A1 (en) * 2003-11-28 2005-06-09 Matsushita Electric Industrial Co.,Ltd. Data processing device
JP4784912B2 (en) * 2004-03-02 2011-10-05 パナソニック株式会社 Information processing device
US7440375B2 (en) * 2004-03-03 2008-10-21 Pioneer Corporation Information recording device and method
US20050289311A1 (en) * 2004-06-29 2005-12-29 David Durham System and method for secure inter-platform and intra-platform communications
US20060005015A1 (en) * 2004-06-30 2006-01-05 David Durham System and method for secure inter-platform and intra-platform communications
US8516444B2 (en) * 2006-02-23 2013-08-20 International Business Machines Corporation Debugging a high performance computing program
US7925862B2 (en) * 2006-06-27 2011-04-12 Freescale Semiconductor, Inc. Coprocessor forwarding load and store instructions with displacement to main processor for cache coherent execution when program counter value falls within predetermined ranges
US7805590B2 (en) * 2006-06-27 2010-09-28 Freescale Semiconductor, Inc. Coprocessor receiving target address to process a function and to send data transfer instructions to main processor for execution to preserve cache coherence
US20070300042A1 (en) * 2006-06-27 2007-12-27 Moyer William C Method and apparatus for interfacing a processor and coprocessor

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CROAD J.G.: Range Comparator. IBM Technnical Disclosure Bulletin, Vol. 7, 12. Mai 1965 *
TIETZE, U., SCHENK, Ch.: Halbleiter-Schaltungstechnik, 9. Aufl., Springer Verlag 1989, S. 603-613 *

Also Published As

Publication number Publication date
DE102007040148A1 (en) 2008-02-28
US20080052339A1 (en) 2008-02-28
US7698542B2 (en) 2010-04-13

Similar Documents

Publication Publication Date Title
DE69212673T2 (en) Test sample generation device
DE112012005014T5 (en) Perform arithmetic operations using both large and small floating-point values
DE102006041444B4 (en) Circuit arrangement and method for detecting an execution time of a command in a computer system
DE112007000051T5 (en) Three-part model-based method for obtaining and processing information
DE102019001129A1 (en) Numerical control device
DE2536625A1 (en) PARITY CHECK CIRCUIT
DE102007040148B4 (en) Microprocessor with a circuit for evaluating a large number of program counter (PC) values for generating breakpoint control signals for a program logging unit
EP1252714A1 (en) A/d converter with lookup table
WO2014012579A1 (en) Method, tool, data carrier and programming module for assessing the reliability of a device
DE2235802A1 (en) PROCEDURE AND EQUIPMENT FOR TESTING NONLINEAR CIRCUITS
DE10200133B4 (en) Method and device for calculating modulo operations
WO2000038049A1 (en) Device and method for generating and executing compressed programs of a very long instruction word processor
DE102018202093A1 (en) Method and device for calculating data models in safety-critical systems
DE102009039430B4 (en) Device and method with first and second clock pulses
DE202008018636U1 (en) System for registering an event
DE202017105807U1 (en) Window Abweichungsanalysierer
DE10219161A1 (en) Device and method for converting a term
DE102021200575A1 (en) Anomaly detection device, anomaly detection method and program
DE102017118996B3 (en) Method for determining influencing parameter combinations of a physical simulation model
WO2004053619A2 (en) Method for processing digital data values
DE10054145A1 (en) Method for identifying the best tool in a semiconductor production line, requires outputting a weighted yield difference for each tool
WO2002056208A2 (en) Method for determining the critical path of an integrated circuit
EP0433315A1 (en) Circuits for adding or subtracting bcd-coded or dual-coded operands
EP4092535B1 (en) Control device testing method
EP4184399A1 (en) Computer-implemented method for operating a technical device with a model

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R016 Response to examination communication
R082 Change of representative

Representative=s name: VIERING, JENTSCHURA & PARTNER MBB PATENT- UND , DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R082 Change of representative
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee