DE102007040148B4 - Mikroprozessor mit einer Schaltung zum Auswerten einer Vielzahl von Program Counter (PC)-Werten zur Erzeugung von Haltepunkt-Steuersignalen für eine Programmprotokolliereinheit - Google Patents

Mikroprozessor mit einer Schaltung zum Auswerten einer Vielzahl von Program Counter (PC)-Werten zur Erzeugung von Haltepunkt-Steuersignalen für eine Programmprotokolliereinheit 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
English (en)
Other versions
DE102007040148A1 (de
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/de
Application granted granted Critical
Publication of DE102007040148B4 publication Critical patent/DE102007040148B4/de
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.

Description

  • HINTERGRUND DER ERFINDUNG
  • Die Erfindung betrifft allgemein Schaltungen und Verfahren zum Vergleichen von Werten, insbesondere in einem Mikroprozessor.
  • 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.
  • Es gibt beispielsweise Anwendungen, bei denen zu einem bestimmten Zeitpunkt bestimmt werden muss, ob ein Signal einen Wertebereich erreicht oder überschreitet.
  • 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.)
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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 Tietze, U., Schenk, Ch.: Halbleiter-Schaltungstechnik, 9. Auflage, Springer Verlag 1989, Seiten 603-613, sind Grundlagen der Schaltungstechnik offenbart.
  • Es ist eine konkrete technische Aufgabe, eine effiziente Auswertung von aktuellen Program Counter-Werten zur Erzeugung von Haltepunkt-Steuersignalen bereitzustellen.
  • KURZE ZUSAMMENFASSUNG DER ERFINDUNG
  • Die Aufgabe wird durch den Gegenstand des Patentanspruchs 1 gelöst. Ein weiteres Ausführungsbeispiel ist im abhängigen Anspruch 2 beschrieben.
  • 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.
  • 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.
  • Weitere Merkmale, Erscheinungsformen und Vorzüge der vorliegenden Erfindung werden in der folgenden detaillierten Beschreibung unter Bezugnahme auf die beigefügten Zeichnungen offensichtlich.
  • Figurenliste
  • 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.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • 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.
  • 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.
  • Wie in 1 gezeigt, umfasst die PTU mindestens eine Komparatorschaltung 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
  • 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.
  • 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).
  • 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.
  • Werte von ip_ref_r in den Intervallen 24 und 26 erfüllen die Ungleichung 1 nicht („kein Treffer“).
  • 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
  • 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
  • 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.
  • 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.
  • Die n LSBs von BND-ip_ref_r umfassen die n niedrigsten Stellen des Digitalwerts von 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • Andernfalls umfasst der Schnitt mindestens einen Wert.
  • 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
  • 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).
  • 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
  • Auf diese Weise müssen lediglich erheblich kleinere Werte verglichen werden, um die Ungleichungen 2b' und 3b' zu untersuchen.
  • Die Ungleichung 2b' kann zur Hardware-Implementierung weiter vereinfacht werden wie folgt: 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.
  • 4 zeigt eine Schaltung nach einem Ausführungsbeispiel der Erfindung, die eine Hardware-Implementierung einer Untersuchung der Ungleichungen 2b" und 3b' darstellt.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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“).
  • 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 Verbindung

Claims (2)

  1. 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.
  2. Mikroprozessor nach Anspruch 1, wobei der Mikroprozessor als superskalarer Prozessor ausgestaltet ist.
DE102007040148.7A 2006-08-25 2007-08-24 Mikroprozessor mit einer Schaltung zum Auswerten einer Vielzahl von Program Counter (PC)-Werten zur Erzeugung von Haltepunkt-Steuersignalen für eine Programmprotokolliereinheit Expired - Fee Related DE102007040148B4 (de)

Applications Claiming Priority (2)

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

Publications (2)

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

Family

ID=38973471

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102007040148.7A Expired - Fee Related DE102007040148B4 (de) 2006-08-25 2007-08-24 Mikroprozessor mit einer Schaltung zum Auswerten einer Vielzahl von Program Counter (PC)-Werten zur Erzeugung von Haltepunkt-Steuersignalen für eine Programmprotokolliereinheit

Country Status (2)

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

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 (ja) * 1991-08-23 1995-01-30 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ処理データベース・システムにおけるジョインの実行方法及びシステム
US6633953B2 (en) * 2000-02-08 2003-10-14 Hywire Ltd. Range content-addressable memory
JP2004013556A (ja) * 2002-06-07 2004-01-15 Matsushita Electric Ind Co Ltd プロセッサ装置、コンパイル装置及びその方法
US7200846B2 (en) * 2002-08-05 2007-04-03 Sun Microsystems, Inc. System and method for maintaining data synchronization
US7162552B2 (en) * 2002-11-22 2007-01-09 Texas Instruments Incorporated Programmable 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 (ja) * 2003-11-28 2005-06-09 Matsushita Electric Industrial Co.,Ltd. データ処理装置
JP4784912B2 (ja) * 2004-03-02 2011-10-05 パナソニック株式会社 情報処理装置
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
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
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

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 (de) 2008-02-28
US7698542B2 (en) 2010-04-13
US20080052339A1 (en) 2008-02-28

Similar Documents

Publication Publication Date Title
DE112012005014T5 (de) Ausführen arithmetischer Operationen unter Verwendung sowohl von großen als auch kleinen Gleitkommawerten
DE102006041444B4 (de) Schaltungsanordnung und Verfahren zum Erfassen einer Ausführungszeit eines Befehls in einem Rechnersystem
DE112007000051T5 (de) Dreiteiliges-Modell-basiertes Verfahren zur Informationsgewinnung und -verarbeitung
DE10006455A1 (de) Verfahren zum Betrieb einer technischen Anlage
DE102019001129A1 (de) Numerische Steuervorrichtung
DE2536625A1 (de) Paritaetspruefschaltung
DE102007040148B4 (de) Mikroprozessor mit einer Schaltung zum Auswerten einer Vielzahl von Program Counter (PC)-Werten zur Erzeugung von Haltepunkt-Steuersignalen für eine Programmprotokolliereinheit
EP1252714A1 (de) A/d-wandler mit lookup-tabelle
WO2014012579A1 (de) Verfahren, werkzeug, datenträger und programmbaustein zur beurteilung einer verlässlichkeit einer vorrichtung
DE2235802A1 (de) Verfahren und einrichtung zur pruefung nichtlinearer schaltkreise
DE10200133B4 (de) Verfahren und Vorrichtung zur Berechnung von Modulo-Operationen
EP1145113A1 (de) Verfahren und anordnung zur erzeugung und ausführung von komprimierten programmen eines vliw-prozessors
DE102018202093A1 (de) Verfahren und Vorrichtung zur Berechnung von Datenmodellen in sicherheitskritischen Systemen
DE102009039430B4 (de) Vorrichtung und Verfahren mit ersten und zweiten Zeittakten
DE10258472B3 (de) Verfahren zum Verarbeiten von digitalen Datenwerten
DE10219161A1 (de) Vorrichtung und Verfahren zum Umrechnen eines Terms
DE102021200575A1 (de) Anomalieerkennungsvorrichtung, Anomalieerkennungsverfahren und Programm
DE102017118996B3 (de) Verfahren zur Bestimmung von einflussführenden Parameterkombinationen eines physikalischen Simulationsmodells
DE10054145A1 (de) Verfahren zum Identifizieren des besten Werkzeugs in einem Halbleiterherstellungsprozess
EP1402423A2 (de) Verfahren zur bestimmung des kritischen pfades einer integrierten schaltung
EP3945423B1 (de) Verfahren zur detektion von anomalen betriebszuständen eines computersystems
EP0433315A1 (de) Schaltungsanordnung zur addition oder subtraktion von im bcd-code oder dual-code codierten operanden
EP4092535B1 (de) Verfahren zum testen von steuergeräten
EP4184399A1 (de) Computer-implementiertes verfahren zum betrieb eines technischen geräts mit einem modell
DE102009009171B4 (de) Vorrichtung und Verfahren zum Bereitstellen eines Triggers

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