DE69414985T2 - Verzweigungsentscheidungskodierung - Google Patents
VerzweigungsentscheidungskodierungInfo
- Publication number
- DE69414985T2 DE69414985T2 DE69414985T DE69414985T DE69414985T2 DE 69414985 T2 DE69414985 T2 DE 69414985T2 DE 69414985 T DE69414985 T DE 69414985T DE 69414985 T DE69414985 T DE 69414985T DE 69414985 T2 DE69414985 T2 DE 69414985T2
- Authority
- DE
- Germany
- Prior art keywords
- address
- data
- program
- debug
- branch
- 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
Links
- 238000000034 method Methods 0.000 claims description 5
- 239000000872 buffer Substances 0.000 description 8
- 238000001514 detection method Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000015654 memory Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000001629 suppression Effects 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013024 troubleshooting Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 229940036310 program Drugs 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
- G06F11/3636—Debugging of software by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Microcomputers (AREA)
Description
- Diese Erfindung bezieht sich auf Mittel zur Verifizierung eines Programmflusses in einem nicht zugänglichen Computerprozessor. Sie sind in einen Entstöranschluß bzw. "Debug"-Anschluß eingebaut bzw. darin aufgenommen, der wiederum in die interne Logik eines Einzelchip-Signalprozessors mit reduziertem Instruktionssatz, die RSP-Vorrichtung genannt, eingebaut ist. Sie werden anstelle eines Logikanalysierers verwendet, da der interne Programmadressenbus der Vorrichtung an ihrer Schnittstelle nicht verfügbar ist.
- Bisher wurden Logikanalysierer als das Primärwerkzeug für bzw. beim Fehlersuchen oder "trouble shooting" bei der Digitalcomputerhardware verwendet. Jedoch mit dem Aufkommen von hochparallelen (englisch: highly pipelined) Einzelchipprozessoren mit weiten Daten- und Adreßbussen wird es unausführbar bzw. unpraktisch, alle notwendigen Busse für Hardware- und Programmfehlersuche bzw. "trouble shooting" zu der Schnittstelle der Vorrichtung zu bringen. Des weiteren ist es nicht möglich, all die Daten zu multiplexen bzw. zu vervielfachen, die man an einem Ausgabebus für diesen Zweck als brauchbar finden würde, wenn in einer Echtzeitprogrammumgebung entstört wird.
- Diese Probleme werden auch in Vorrichtungen der nächsten Generation aufwarten, die begrenzte externe Leitungen haben, Geschwindigkeiten verwenden, die alle physikalischen Grenzen erreichen und bei denen ein Zugriff zu mehr und weiteren Bussen erforderlich ist.
- Weitere Information in Bezug auf den Stand der Technik können in Computer, Vol. 26, no. 5, Mai 1993, Long Beach US, Seiten 52.61, James R. Larus 'Efficient Program Tracing' gefunden werden, wo die historischen Schwierigkeiten und technischen Vorgehensweisen für die Erfassung detaillierter Programmspuren referiert bzw. in Übersicht zusammengefaßt sind und wo des weiteren auf die neuen Techniken und Ergebnisse für effiziente Programmnachvollziehung (program tracing), insbesondere auf Compiler basierendes Programm nachvollziehen, fokussiert wird.
- Ein Entstör- bzw. "Debug"-Anschluß ist in der RSP-Vorrichtung aufgenommen, und zwar als ein Hardwareentstör- und Softentwicklungswerkzeug. Er umfaßt viele der Merkmale von herkömmlichen Logikanalysierern, ist jedoch in der internen Logik der Vorrichtung aufgenommen, und zwar primär deswegen, weil die sehr hohen Geschwindigkeitsleistungscharakteristiken der Vorrichtung es erfordern, daß die meisten Operationen auf einer einzelnen Siliciumform bzw. einem einzelnen Siliciumwürfel enthalten sind. Das heißt, das ein Großteil der funktionalen Operation der Vorrichtung intern ist und daher nicht länger verfügbar für externe Entwicklungswerkzeuge ist. Daher sind Schlüsselinformationen innerhalb der internen Register und Speicher schlichtweg nicht verfügbar an den Schnittstellenpins der Vorrichtung und sie sind nicht einfach heraus zu vervielfachen bzw. zu multiplexen, und zwar in einer Echtzeitumgebung.
- Der Entstöranschluß hat jedoch nahezu vollen Zugriff zu allen internen Bussen und kann Programmflußdaten ausgeben bzw. ausliefern, sowie auch andere Information, die von Programmierern und Vorrichtungs- bzw. Devicedesignern angefordert wird. Er ist jedoch zum Nachteil bezüglich der Siliciumfläche, jedoch wird erwartet, daß diese Fläche kleiner als 5% der Gesamtfläche der Vorrichtung bzw. des Devices ist.
- Der eigens gewidmete Entstöranschluß löst viele der Probleme, die in Verbindung damit auftreten, daß man nicht in der Lage ist, einen angefügten Logikanalysierer zu verwenden, und zwar dahingehend, daß er die Eingabe von Auslöse-Erfassungszuständen zum Erfassen von Daten auf Bussen erlaubt, ohne die Echtzeitverarbeitung der Vorrichtung zu stören; und dahingehend, daß er erlaubt, Instruktionen in den Anweisungs- bzw. Instruktionsfluß der Vorrichtung einzugeben, was im allgemeinen die Inhalte von internen Registern und Speicherstellen auf Entstöranschlußregister zur Ausgabe kopieren kann.
- Jedoch hat der Entstöranschluß eine Begrenzung auf eine acht Bit weite Datenbusschnittstelle. Der Acht-Bit-Anschluß ist ein Kompromiß zwischen Entwicklungswerkzeug und Vorrichtungseingabe/-ausgabeerfordernissen. Aufgrund dieser Einschränkung ist es während einer Echtzeitprogrammentwicklung nahezu unmöglich, jeden Zustand des 24- Bit-Programmzählers zu überwachen, der sich bei jedem Instruktionszyklus bzw. Anweisungszyklus ändert, und zwar durch einen Anschluß, der nur ein Drittel so weit ist.
- Die vorliegende Erfindung, wie sie in den Ansprüchen 1 und 3 dargelegt ist, löst dieses Problem, indem sie die sequentiellen Charakteristiken von Anwendungsprogrammen vorteilhaft ausnutzt. Da in den Zählschritten des Programmadreßzählers Diskontinuitäten auftreten, und zwar nur in einer begrenzten Anzahl von Situationen (d.h. Verzweigungen, Sprünge, Aufrufe von Subroutinen, Rückkehr von Subroutinen, Ausnahmen, Rückkehr von Ausnahmen, Fallen, Rückkehr von Fallen und Schleifenrückkehr zu den Anfängen von Schleifen), zieht der Entstöranschluß einen Vorteil aus dieser Tatsache und erfaßt Programmflußdaten nur dann, wenn bestimmte Diskontinuitäten auftreten. Als ein Ergebnis sind die Ausgabedaten stark reduziert.
- Des weiteren sind alle einfachen Verzweigungen, d.h. jene, welche nur eine mögliche Zweigadresse haben, in ein Zweigentscheidungswort kodiert, und zwar entweder als eine "1" oder eine "0", da die nächste Anweisung, die nach der Verzweigung ausgeführt wird, und die Verzögerungsschlitzinstruktion (engl.: delay slot instruction), die immer folgt, entweder die Instruktion an einer spezifischen Zieladresse ist oder die Instruktion ist, die der Verzögerungsschlitzinstruktion folgt. Zur Beibehaltung der Synchronisation zwischen Anwendung- und Dekompressionsprogrammen wird die 24-Bit-Programmadresse immer dann ausgegeben, wenn ein Zweigentscheidungswort ausgegeben wird.
- Der Entstöranschluß bzw. Debug-Anschluß liefert komprimierte Programmfluß- und andere Daten über den zuvor erwähnten 8-Bit-Bus aus. Der Bus erstreckt sich zu einem Schnittstellenmodul, welches die "hereinberstenden" Hochgeschwindigkeitsdaten auf eine niedrigere Rate puffert. Die Daten mit niedrigerer Rate sind dann zum Senden an die Arbeitsstation des Programmierers oder des Vorrichtungsentstörers geeignet, und zwar über einen Kleicomputersystemschnittstellen-(SCSI = small computer system interface)-Bus.
- Zum Verständnis, wie Programmflußadreßdiskontinuitäten durch die Programmflußeinheit des Debug-Anschlusses gehandhabt werden, sind all ihre Ursachen in den drei folgenden Tabellen aufgelistet. Tabelle 1: Instruktionen und Merkmale, die Diskontinuitäten verursachen, die nicht von der Programmflußeinheit erfaßt werden
- Verzweigung auf Zustandscode Verzweigung auf Registerübereinstimmung
- Verzweigung auf Registerzustand Verzweigung nicht-null; postmodifizieren
- Verzweigung auf Bit- Kippschaltung (toggle) und Falle direkt konditional Tabelle 3: Instruktionen/Merkmale, die das Erfassen von Programmflußadressen bewirken
- Man beachte zuerst die den drei Tabellen zugewiesenen Titel und betrachte dann die ganz linke Spalte der Tabelle 1. Jede der Instruktionen in Gruppe A der Tabelle 1 bewirkt immer eine Diskontinuität in der Programmadresse, und zwar zur Zieladresse, die in den ausgeführten Verzweigungs-, Sprung-, Aufruf- oder Falleninstruktionen spezifiziert ist. Da die Diskontinuität immer auftritt und die Zieladresse Teil der Verzweigungsinstruktion ist und dem Programm bekannt ist, das die Programmflußdaten für den Benutzer dekomprimiert, werden keine Programmflußdaten erfaßt, wenn irgendeine dieser Instruktionen ausgeführt wird.
- Man betrachte nun das automatische Schleifenrückkehrmerkmal, das in Gruppe B enthalten ist. Wenn die Instruktionen in einer Schleife mit n-Durchgängen durchgeführt sind, so gibt es für die ersten n-1-Durchgänge immer eine Diskontinuität nach der letzten Instruktion in der Schleife; und zwar zurück zum Anfang der Schleife. Für den n-ten Durchgang ist die nächste ausgeführte Instruktion immer die nächste sequentielle Instruktion nach der letzten Instruktion in der Schleife. Auch wenn die nächste Instruktion, die nach der letzten Instruktion in der Schleife ausgeführt wird, immer vorhersagbar ist, haben die Designer des Debug-Anschlusses sich entschieden, die Programmadresse nicht zu erfassen, wenn ein Rückschleifen zum Anfang einer Schleife vorliegt, jedoch haben sie sich dafür entschieden, die Programmadresse während des n-ten Durchgangs zu erfassen, wenn die nächste sequentielle Instruktion am Ende der Schleife erfaßt bzw. erhalten wird (siehe Tabelle 3, den Eintrag: Durchfallen am Ende einer Schleife).
- Man betrachte nun die Starte-Schleife-Instruktion in Gruppe C. Eine Schleifenstartinstruktion wird zur Definition des Anfangs und der Länge einer Schleife verwendet, sowie der Anzahl der Durchgänge bevor durchgefallen wird. Da eine Schleifenstartinstruktion niemals eine Diskontinuität direkt nach ihrer Ausführung bewirkt (sie tritt am Schluß nach der Ausführung der letzten Instruktion der Schleife auf), werden keine Programmflußdaten erfaßt, wenn diese Instruktion ausgeführt wird.
- Die Halt-Instruktion ist in dem RSP aufgenommen, um Leistung zu sparen, wenn die Vorrichtung nicht aktiv sein muß. Auch wenn sie keinen Sprung in der Programmadresse bewirkt, bewirkt sie doch, daß der Programmzähler damit aufhört, fortzuzählen und die Vorrichtung damit aufhört, zu operieren. Programmflußdaten werden nicht erfaßt aufgrund der Ausführung der Halt-Instruktion.
- Die Instruktionen in Tabelle 2 sind alle konditionale Instruktionen. Ausführung irgendeiner dieser Instruktionen kann eine Diskontinuität bewirken (und zwar zu einer spezifizierten Zieladresse), wenn eine bestimmte Bedingung angetroffen wird; oder sie kann die Ausführung der nächsten sequentiellen Instruktion bewirken, wenn die Bedingung nicht angetroffen wird. Für diese Instruktionen kodiert der Debug-Anschluß ein Verzweigungsentscheidungswort mit einer "1", wenn eine Diskontinuität auftritt, und mit einer "0", wenn sie nicht auftritt.
- Die ganz linke Spalte (Gruppe A) der Tabelle 3 listet alle die indirekten Instruktionen der Vorrichtung auf. Wenn irgendeine dieser Instruktionen ausgeführt wird, wird eine berechnete Adresse aus einem spezifizierten Register ausgelesen und zum Erfassen der Instruktion verwendet, die nach einer Verzögerungsschlitzinstruktion ausgeführt wird. Da die Zieladresse berechnet wird, und in den meisten Fällen nicht leicht vorhersagbar ist, erfaßt die Programmflußeinheit immer die Zieladresse für diese Instruktionen, wenn sie auf den Programmadreßbus gegeben wird.
- Die normalen und schnellen Ausnahmen sind in der Gruppe B der Tabelle 3 aufgelistet, treten aufgrund von Signalen auf, die aufgrund von Anfrageservicen von I/O-Einheiten erzeugt werden, und sie treten auf aufgrund von Signalen von arithmetischen Kerneinheiten auf, die das Auftreten von Fehlern signalisieren.
- Wenn die RSP-Vorrichtung auf ein Ausnahmesignal von einer I/O-Einheit antwortet, hält sie die Verarbeitung ihrer gegenwärtigen Aufgabe an und springt zu einer nicht in Beziehung stehender Ausnahmeroutine, um möglicherweise Daten von einem Eingaberegister zu lesen, oder Daten auf ein Ausgaberegister zu schreiben bevor sie zur Beendigung der Aufgabe zurückkehrt. In Signalverarbeitungsanwendungen müssen Eingabe/Ausgabeaufgaben für gewöhnlich periodisch durchgeführt werden, um einen Verlust von Daten zu vermeiden.
- Wenn die Vorrichtung auf ein Ausnahmesignal von ihrem arithmetischen Kern antwortet, hält sie ebenso an und springt zu einer Ausnahmeroutine. Jedoch wird diese Ausnahmeroutine wahrscheinlich dafür verwendet, um eine Aufgabe durchzuführen, die zu der Bedingung in Bezug steht, die den Aufruf der Ausnahmeroutine bewirkte, sowie die Korrektur des Fehlers oder eine Benachrichtigung eines Benutzers über sein Auftreten.
- Da Ausnahmeroutinen in Bezug stehen können oder nicht in Bezug stehen können zu der gegenwärtig durchgeführten Aufgabe, kann der Programmierer die Programmflußdaten als weniger verwirrend finden, wenn er/sie das Erfassen von Ausnahmediskontinuitäten in einigen Situationen ermöglichen kann (im allgemeinen wenn bestimmt werden soll, ob ein arithmetischer Fehler richtig korrigiert ist), und ihre Erfassung in anderen Situationen abgeschaltet werden kann (im allgemeinen, wenn zahlreiche I/O-Ausnahmen auftreten).
- In der zweiten Spalte der Tabelle 3 stehen NEXCE und QEXCE für das Ermöglichen der Erfassung von Programmdiskontinuitäten für normale bzw. schnelle Ausnahmen. Man beachte, daß QEXCE die Erfassung von Programmdiskontinuitäten sowohl beim Eintritt als auch beim Verlassen von Schnellausnahmenroutinen einschaltet/ausschaltet, wogegen NEXCE ihr Erfassung nur dann einschaltet/ausschaltet, wenn in Normalausnahmeroutinen eingetreten wird. In der RSP-Vorrichtung wird eine Instruktion verwendet, um die Rückkehr von sowohl Fallen als auch Normalausnahmen zu befehlen. Aufgrund dieser Tatsache haben die Designer des Debug-Anschlusses sich dafür entschieden, Diskontinuitäten immer zu berichten, die auftreten, wenn Normalausnahmeroutinen verlassen werden, um das Vorhandensein von getrennten Instruktionen zu vermeiden, und zwar eine für die Rückkehr von Fallen und eine zweite für die Rückkehr von Normalausnahmen.
- Als das Merkmal "automatische Schleifenrückkehr zum Anfang einer Schleife" in Bezug auf Tabelle 1 zuvor beschrieben wurde, wurde bemerkt, daß Programmadreßdiskontinuitäten, die auftreten wenn eine Schleifenrückkehr zum Anfang einer Schleife auftritt, nicht berichtet werden, jedoch die Programmadresse berichtet wird am Ende der Schleife, wenn die Verarbeitung der Schleife vervollständigt ist.
- Weder die Warte- noch die Pausenanweisung, und zwar in Gruppe D der Tabelle 3, bewirken eine Veränderung der Programmadresse, wenn sie durchgeführt werden; jedoch bewirken sie, daß der Programmzähler angehalten wird. Eine Warteanweisung ist ähnlich zur Halteanweisung, und zwar in Bezug darauf, daß sie Leistung spart. Die Warteanweisung bewirkt ein Anhalten der Taktgeber des arithmeti schen Kerns (Phase 1 bleibt an); jedoch werden die Taktgeber der I/O-Einheit laufen gelassen. Der Debug-Anschluß wird die Programmadresse erfassen, wenn eine Warteinstruktion ausgeführt ist.
- Eine Pauseninstruktion wird während einer Programmentstörung verwendet, um eine Ausführung anzuhalten, so daß eine Anzahl von Registern/Speicherstellen geprüft werden kann, um ihre Werte/Zustände an diesem Punkt im Programm zu bestimmen. Der Debug-Anschluß erfaßt ebenso die Programmadresse, wenn eine Pauseninstruktion ausgeführt wird.
- Die Programmflußeinheit des Debug-Anschlusses umfaßt 6 wesentliche Register. Dies sind: Das 24-Bit-Programmadresserfassungsregister (PAC = program address capture); das 32-Bit-Zweigentscheidungsverschiebungsregister (BDR = branch decision register); das 8-Bit-Statusregister (STR.); der 24-Bit-Programmadresspuffer (PAB = program address buffer); der 32-Bit-Zweigentscheidungspuffer (BDB = branch decision buffer); und der 8-Bit-Statuspuffer (STB = status buffer).
- Die PAB, BDB und STB sind Pufferregister. Sie halten Daten, die von den PAC-, BDR- bzw. STR-Registern kopiert wurden, und zwar bis die Daten auf den Debug-Anschlußausgabebus multiplext bzw. vervielfacht werden können zur Übertragung an den Ausgabefifo des Debug-Anschlusses.
- Der PAB kopiert immer den gegenwärtigen Inhalt des PAC- Registers, und zwar gerade bevor das PAC-Register die Adresse am Programmadreß-(PA)-Bus der Vorrichtung erfaßt. Das PAC-Register erfaßt die Programmadresse, wenn einer der folgenden Fälle auftritt:
- 1. Eine Anweisung bzw. Instruktion ist ausgeführt oder eine Bedingung tritt ein, die den Pro grammfluß in einer unvorhersehbaren Weise ändert.
- 2. Das Zweigentscheidungsverschiebungsregister (BDR) füllt sich.
- 3. Eine Eingabenachricht spezifiziert, daß die Programmadresse erfaßt werden soll.
- Die Kopier/Erfassungs-Steuerlogik für den PAB und PAC empfängt sieben Eingaben von benachbarten Logiken. Fünf der sieben Eingaben sind von der Instruktionsdekodiereinheit der RSP-Vorrichtung. Diese Eingabe sind in der nachfolgenden Tabelle 4 aufgelistet.
- Signal Anweisung/Bedingung, die dekodiert wurde
- rtn et Rückkehr von Normalausnahme oder Falle
- exc sig Ausnahmesignal
- gexc sig Schnellausnahmesignal
- rt-qk Rückkehr von Schnellausnahme/Rückkehrsignal von Schnellausnahme
- cp pa Indirekter Sprung/
- Indirekter Sprung, ge-oder-te Registeradresse/
- Indirekter Sprung, kombinierte Fahnenadresse/
- Indirekter Sprung, ge-oder-te Registeradresse, konditional/
- Indirekter Sprung, kombinierte Fahnenadresse, konditional/
- Sprung durch Tabelle, ge-oder-te Registeradresse/
- Sprung durch Tabelle, kombinierte Fahnenadresse/
- Sprung durch Tabelle, ge-oder-te Registeradresse, konditional/
- Sprung durch Tabelle, kombinierte Fahnenadresse, konditional/
- Indirekter Aufruf/
- Indirekte Falle/
- Indirektekte Falle, konditional/
- Rückkehr von Subroutinenaufruf/
- Durchfallen am Ende einer Schleife/
- Warten/Pause
- Tabelle 4 zeigt, welche Instruktionen oder Bedingungen, die ein jedes der fünf Signale bewirken, die geltend gemacht werden sollen. Diese Instruktionen/Bedingungen sind auch in der Tabelle 3 aufgelistet und sind jene, die den Programmfluß dazu veranlassen in einer unvorhersehbaren Weise sich zu verändern.
- Die zwei anderen Signale, die in die PAB/PAC-Steuerlogik eingegeben werden, sind später in der Fig. 2 gezeigt.
- Es werden fünf Signale anstatt einem in die PAB/PAC-Kopier/Erfassungs-Steuerlogik eingegeben, weil einige ebenso als Statussignale durch das STR-Register eingegeben werden.
- Das STR-Register enthält Information darüber, warum eine Programmadresse erfaßt wurde, und ob bestimmte Ereignisse seit der letzten Erfassung aufgetreten sind. Tabelle 5 listet die Bedeutung der Bits im STR-Register auf; und Tabelle 6 erstreckt sich über die Bedeutung der PFT-Bits in Tabelle 5. Tabelle 5 Tabelle 6 PFT-Bitdefinitionen
- Das BDR-Register wird durch zwei Eingaben von der Instruktionsdekodiereinheit gesteuert. Das Signal sbr inst (simple branch instruction = einfache Zweigentscheidung) bewirkt, daß das BDR nach links verschiebt, wenn irgendeine einfache Zweigentscheidung ausgeführt wird. Das zweite Signal sbr tkn (simple branch taken = einfacher Zweig genommen) wird durch das letzte signifikante Bit des BDR kopiert, und ist eine "1", wenn der Zweig genommen ist, und eine "0", wenn er nicht genommen wurde.
- Das BDR-Register wird durch den Reset bzw. das Rücksetzen der Vorrichtung bei einem Einschalten der Leistung initialisiert, und zwar mit den Bits 31-1 allen auf "0" und dem Bit 0 gleich "1". Es wird auf den selben Zustand reinitialisiert, wann immer sein Inhalt durch den BDC kopiert wurde. Das BDR ist voll, wenn die einzige "1", welche in das Bit 0 initialisiert wurde, bis zum Bit 31 verschoben wurde.
- Jedesmal, wenn eine Programmflußerfassung eintritt, geschieht das folgende:
- 1. Der vorhergehende Inhalt des PAC wird in den PAB kopiert.
- 2. Der Inhalt des BDR wird in den BDB kopiert.
- 3. Der Inhalt des STR wird in den STB kopiert.
- 4. Das BDR wird reinitialisiert.
- 5. Die RC-(reference counter = Referenzzähler)- Bits im STR werden inkrementiert.
- 6. Einer der Serviceanfragen bd16.sr oder bd32.sr wird gesetzt, um Zeitschlitze am Ausgabebus des Debug-Anschlusses anzufordern, und zwar zur Bewegung der erfaßten Daten zum Ausgabe-FIFO.
- Die 2-Serviceanforderungsausgaben bd16.sr und bd32.sr werden verwendet, um dem Ausgabebusschiedsrichter bzw. Ausgabebusentscheider des Debug-Anschlusses anzuzeigen, ob irgendwelche Zweigentscheidungsbits zuvor in die 16 signifikantesten Bits des BDR verschoben wurden. Wenn keine Bits in die obere Hälfte des BDR verschoben wurden, werden nur die 16 am wenigsten signifikanten Bits des BDB zum Ausgabe-FIFO kopiert.
- Nachdem die Programmflußdaten in den Ausgabe-FIFO geschrieben wurden, werden sie dann zuerst zu einem Schnittstellenmodul geschickt und dann zur Festplatte einer Host-Workstation. Die Workstation dekomprimiert die Daten von ihrer Festplatte und zeigt die resultierenden Programmflußadressen zusammen mit dem Programmquellencode an.
- Die Bitnummern, die in dieser Beschreibung verwendet werden, sind nur beispielhaft. Andere Registerweiten, Busweiten, usw. können leicht designt werden, um verschiedene Konfigurationen handzuhaben.
- Fig. 1 zeigt in Blockform den Debug-Anschluß, der in der RSP-Vorrichtung bzw. dem RSP-Device aufgenommen ist, und zwar mit einer Verbindung, die zu einer Host-Workstation über ein Schnittstellenmodul und zwei Verbindungsbusse führt.
- Fig. 2 zeigt das RSP-Device, und zwar mit bedeutungsvollen Verbindungen zwischen dem Debug-Anschluß, Instruktionserfassungs-, Instruktionsspeicher- und Instruktionsdekodiereinheiten.
- Fig. 3 zeigt den Debug-Anschluß, und zwar mit bezeichneten bzw. bedeutungsvollen Eingängen von externen Einheiten und mit bedeutungsvollen Verbindungen zwischen seinen Kommunikations-, Befehls- und Programmflußeinheiten.
- Fig. 4 zeigt die Programmflußeinheit des Debug-Anschlusses, und zwar mit bedeutungsvollen Verbindungen zwischen ihren 6 Registern, der Steuerlogik, dem Ausgangsdatenmultiplexer und dem Ausgangsdatensequentierer.
- In Fig. 1 ist die RSP-Vorrichtung bzw. das RSP-Device bei 11 gezeigt, und zwar mit dem Debug-Anschluß innerhalb des RSP-Devices bei 13 gezeigt.
- Aufgrund der Hardwareeinschränkungen ist es nicht möglich, jede Programmadresse, die auf dem internen Programmadressenbus des RSP's auftritt, zu erfassen und auszugeben. Daher ist eine Primärfunktion des Debug-Anschlusses das Kodieren und Erfassen nur von den am meisten benötigten Mengen der Programmflußdaten, und zwar zur Übertragung zurück zur host work station des Programmierers.
- In Fig. 1 werden die Programmflußdaten zur Workstation des Programmierers bei 17 über den Debug-Bus bzw. Ent störbus bei 14 durch das Schnittstellenmodul bei 15 und über den SCSI (small computer System interface = Kleincomputersystemschnittstelle)-Bus bei 16 gesendet. Nachdem die Programmflußdaten verarbeitet wurden, versucht die Workstation jede Programmadresse und den Quellencode des Programmierers bei 19 darzustellen, der den dargestellten Adressen entspricht, so daß er/sie feststellen kann, ob das Programm korrekt funktioniert.
- Weil Programme mehrere komplexe Verzweigungsinstruktionen aufweisen können, und zwar eine direkt nach der anderen, ist es möglich, daß die Programmflußeinheit des Debug-Anschlusses nicht in der Lage ist, alle notwendigen Daten für die Workstation zu erfassen, um das Programm komplett zu rekonstruieren. Wenn dies eintritt, wird die Programmflußeinheit ein Überschreibungsbit in einem Ausgabestatusbyte markieren. Wenn das Rekonstruktionsprogramm das Überschreibungsbit sieht bzw. erkennt, wird es eine Diskontinuität in den dargestellten Daten zeigen.
- Fig. 2 ist vorgesehen, um die bedeutungsvollen Schnittstellen zwischen dem Debug-Anschluß und anderen RSP-Einheiten zu zeigen, die verwendet werden, wenn Programmflußdaten kodiert und erfaßt werden. Die Instruktionserfassungseinheit bzw. Instruktionsholeinheit bei 20 erzeugt die Adresse der nächsten Instruktion, die ausgeführt werden soll. Diese Adresse wird auf dem Programmadreßbus bei 23 gegeben und vom Instruktionsspeicher bei 21 verwendet, um die nächste Instruktion zu holen. Der Instruktionsspeicher gibt die Instruktion auf den Programmdatenbus bei 24 aus. Der Instruktionsdekodierer bei 22 dekodiert die Instruktion und steuert ihre Ausführung in anderen Einheiten, die nicht gezeigt sind. Der Instruktionsdekodierer dekodiert ebenfalls bestimmte Instruktionen für den Debug-Anschluß und weist die geeigneten Leitungen zwischen den Einheiten zu, wenn diese Instruktionen auf dem Programmdatenbus vorliegen. Der L-Bus bei 25 wird für Befehle und Datenübertragung zwischen dem Debug-Anschluß und dem RSP-Kern verwendet.
- Fig. 3 ist vorgesehen, um die 3 Einheiten innerhalb des Debug-Anschlusses zu zeigen, die in der Programmflußfunktion involviert sind.
- Von den 3 Einheiten ist die Befehlseinheit bei 31 am wenigsten involviert. Die Befehlseinheit leistet zwei Funktionen. Eine ist das Einschalten/Ausschalten der Programmflußeinheit über die en pfu-(enable program flow unit = Programmflußeinheit einschalten)-Leitung. Die Befehlseinheit empfängt Einschalt- und Ausschalt-PFU-Befehle entweder vom Programmierer über den Debug-Anschlußeingangbus bei 40, dem Eingangsynchronisierer bei 33 und dem Debug-Bus bei 14; oder vom RSP-Kern (als ein Ergebnis einer Instruktionsausführung) auf dem L-Bus bei 25.
- Die Befehlseinheit kann ebenso die Programmflußeinheit dazu anweisen, Programmadressen zu irgendeiner Zeit über die cap pa-Leitung zu erfassen. Sie dekodiert Erfassungsprogrammadreßbefehle (engl.: capture program address commands), die entweder vom Programmierer oder vom L-Bus eingegeben werden, und zwar über die selben Wege wie die Einschalt- und Ausschalt-PFU-Befehle.
- Die Kommunikationseinheit bei 32 wird sowohl für die Eingabe von Befehlen und Daten zum Debug-Anschluß als auch für die Ausgabe von Programmfluß- und anderen Daten verwendet. Da der Debug-Bus bidirektional ist, wird ein Ausgangs-FIFO bei 35 mitaufgenommen, um Ausgangsdaten zu speichern, bis das Schnittstellenmodul bei 15 in Fig. 1 bereit ist, sie zu akzeptieren.
- Weil mehrere Datenquellen möglicherweise Daten auf den Debug-Anschlußausgangsbus bei 41 simultan kopieren wol len, umfaßt die Kommunikationseinheit auch einen Ausgangsbusschiedsrichter bzw. Ausgangsbusentscheider bei 34. Sein Zweck ist es, alle erklärten Serviceanforderungen zu betrachten und jeder einen Zugang zum Bus zu gewähren, und zwar jeweils eine. Die Erlaubnis, Daten auf den Bus zu kopieren, wird über einen 5-Bitcode zugewiesen, der auf den Datenauswahlbus bei 42 geschrieben ist.
- Fig. 4 zeigt die Programmflußeinheit selbst. Das BDR- (Branch Decision shift Register = Zweigentscheidungsverschiebungsregister)-Register bei 50 ist ein 32-Bit-Schieberegister, das nach links verschiebt, und zwar jedes Mal, wenn sein spr instr-Eingang erklärt wird. Wenn es verschiebt, kopiert es den Status des spr tkn-Eingangs. Daher, wenn eine einfache Zweigentscheidung (simple branch instruction, d.h. eine Instruktion in Tabelle 2) ausgeführt wird, wird eine "1" in das Register kodiert, wenn der Zweig genommen wird, und eine "0", wenn er nicht genommen wird.
- Da Daten verloren gehen würden, wenn zu viele Zweigentscheidungen kodiert werden, werden Mittel vorgesehen, und zwar zur Detektion wenn das BDR voll ist. Das BDR wird initialisiert mit seinen 31-Bits ganz links als "0"-en und seinem ganz rechtem Bit bei "1". Wenn die anfängliche "1" detektiert wird, und zwar am bdr full-Ausgang an seinem linken Ende bei 60, weiß die Steuerlogik bei 56 dann, daß 31 Verschiebungen durchgeführt wurden, und seine Inhalte müssen auf den BDB (Branch Decision Buffer = Zweigentscheidungspuffer) bei 51 kopiert werden. Auch wenn das signifikanteste Bit des BDR niemals für die Speicherung von Zweigentscheidungen verwendet wird, schließt die Verwendung dieses Verfahrens eine Verwendung eines Zählers aus, um mit der Zahl der durchgeführten Verschiebungen Schritt zu halten. Und, da der Inhalt des BDR ebenso zu jeder Zeit auf den BDB kopiert werden kann, zeigt die Detektion der Position der anfänglichen "1" in den Ausgangsdaten an, wie viele Zweigentscheidungen umfaßt sind.
- Da der Inhalt des BDR zu jeder Zeit auf den BDB kopiert werden kann, ist eine bdr half full-Anzapfung bzw. -Abzweigung bei 61 ebenso vorgesehen, um anzuzeigen, wenn 15 oder weniger Zweigentscheidungen kodiert wurden. Wenn dies der Fall ist, dann werden nur die 16 am wenigsten signifikanten Bits des BDR zur Workstation gesendet. Botschaften, die 16 Bits mit Zweigentscheidungsdaten enthalten, werden von jenen mit 32 Bits unterschieden, und zwar durch die Kopfzeile bzw. den Header, der der Botschaft durch einen Kopfzeilengenerator bei 36 in Fig. 3 vorangestellt ist. Die Programmflußeinheit signalisiert die Datenlänge an die Kommunikationseinheit bei 32, und zwar indem entweder die bd16 sr- oder die bd32 sr-Serviceanforderungsleitung bei 43 oder 44 erklärt bzw. zugewiesen werden, wenn die BDB, PAB & STB-Puffer Daten für die host work station enthalten.
- Das PAC-(Program Address Capture = Programmadreßerfassung)-Register bei 52 wird zum Kopieren der Programmadresse vom Programmadreßbus bei 45 verwendet, wenn eine unvorhersagbare Diskontinuität im Programm eintritt (d.h. wann immer eine Instruktion oder Bedingung eintritt, die in Tabelle 3 aufgelistet ist).
- Die 5 Eingänge bei 26 von der Instruktionsdekodiereinheit werden verwendet, um das Auftreten einer unvorhersagbaren Diskontinuität zu signalisieren. Wenn irgendeiner dieser Eingänge aktiv bzw. erklärt ist, bewirkt die Steuerlogik zuerst, daß der gegenwärtige Inhalt des PAC in den PAB kopiert wird, sowie der gegenwärtige Inhalt des BDR in den BDB kopiert und der gegenwärtige Inhalt des STR in den STB kopiert wird; dann bewirkt der PAC, daß der Programmadreßbus kopiert wird. Die Steuerlogik weist dann entweder die bd16 sr oder bd32 sr an, um zu signalisie ren, daß Daten bereit für die Ausgabe auf den Debug-Anschlußausgangsbus sind.
- Die PAB-, BDB- und STB-Daten werden auf den Debug-Anschlußausgangsbus unter der Steuerung des Ausgangsdatensequenzierers bei 57 kopiert, wenn einer von zwei Codes auf dem Datenauswahlbus detektiert wird. Ein Code bewirkt, daß der Sequenzierer den PAB, STB und beide Hälften des BDB auf den Ausgangsbus kopiert, wogegen der zweite Code bewirkt, daß der PAB, STB und nur die untere Hälfte des BDB auf den Bus kopiert werden.
- Da Daten von der Programmflußeinheit ausgegeben werden, entweder weil das BDR-Register voll wird, oder weil eine unvorhersagbare Diskontinuität eintritt, wird das 8-Bit- Statusbyte vom STR bei 55 immer mit den BDB- und PAC-Daten ausgegeben, um anzuzeigen, warum die Nachricht ausgegeben wird.
- Die STR-Registerbits (die in den Tabellen 5 & 6 beschrieben wurden) umfassen auch ein Überschreibungsbit, das anzeigt, ob der PAB-Puffer überschrieben wurde, bevor seine Daten auf den Debug-Anschlußausgangsbus kopiert werden konnten, und weiter umfassen sie einen 2-Bitzähler, der inkrementiert wird, und zwar jedes Mal, wenn das PAC-Register eine Programmadresse kopiert. Der Zähler zeigt an, wie viele Überschreibungen aufgetreten sein können.
- Während ein besonderes Ausführungsbeispiel in einigem Detail beschrieben wurde, ist der Umfang der vorliegenden Erfindung nicht darauf beschränkt, sondern er ist nur durch die angefügten Ansprüche umgrenzt.
Claims (6)
1. Verfahren zum Erfassen und Kodieren von
Programmflußdaten in einem Prozessor (11) über einen
"debug"- oder Entstör-Anschluß (13) integriert in
dem Prozessorchip (11) und verbunden mit seinem
internen Programmadressenbus (23) und seinem
Befehls- oder Instruktionsdekoder (22);
wobei der "debug"-Anschluß (13) nur diejenigen
Programmflußdaten einfängt oder erfaßt, die zur
Rekonstruktion des kompletten Programmflußes des
Prozessors (11) an einer entfernt gelegenen
Arbeitsstation (17) notwendig sind; wobei das
Verfahren die folgenden Schritte vorsieht:
- wenn der Instrukionsdekoder (22) einen
einfachen konditionellen Zweig der nur eine
mögliche Zweigadresse besitzt signalisiert, so
kodiert der "debug"-Anschluß (13) einen
logischen Pegel in einer freien Bitposition
eines Zweigentscheidungsregisters (50) wenn
eine Diskontinuität auftritt, und den
entgegengesetzten logischen Pegel, wenn dies
nicht auftritt, wobei der Inhalt des
Zweigentscheidungsregisters (50) zu der
Arbeitsstation (17) übertragen wird, bevor alle
Bit-Positionen gefüllt sind;
- wenn der Instruktionsdekoder (22) einen
indirekten konditionalen Zweig oder eine
Ausnahme signalisiert, dann erfaßt der "debug"-
Anschluß (13) die entsprechenden Adressendaten
von dem Programmadressenbus (45) und überträgt
diese zu der Arbeitsstation (17);
- Ignorieren der nicht-konditionellen Zweige für
eine feste Ziel- oder Targetadresse; und
- Akkummulieren der Zeigentscheidungsdaten und
der Programmadressendaten an der Arbeitsstation
(17) als komprimierte Programmadressendaten.
2. Verfahren nach Anspruch 1, wobei ferner der Schritt
des Akkumulierens einer absolut neuen Adresse in
einem weiteren Register (52) vorgesehen ist, immer
dann, wenn ein Signal für das Erfassen oder
Einfangen der Programmadressendaten empfangen wird.
3. Vorrichtung zum Erfassen oder Einfangen und Kodieren
von Programmflußdaten in einem Prozessor (11), wobei
die Vorrichtung folgendes aufweist:
einen "debug"- oder Entstörungsanschluß (13)
integriert in dem Prozessorchip (11) und verbunden
mit seinem internen Programmadressenbus (23) und
seinem Befehls- oder Instruktionsdekoder (22);
wobei der "debug"-Anschluß (13) nur diejenigen
Programmflußdaten erfaßt, die notwendig sind für die
Rekonstruktion des kompletten Programmflußes des
Prozessors (11) an einer entfernt gelegenen
Arbeitsstation (17), wobei der "debug"-Anschluß
folgendes aufweist:
- Mittel, wenn der Instrukionsdekoder (22)
signalisiert, daß ein einfacher konditioneller
Zweig nur eine mögliche Zweitadresse besitzt,
zum kodieren eines logischen Pegels in einer
freien Bitposition eines
Zweigentscheidungsregisters (50) wenn eine
Diskontinuität auftritt, und des
entgegengesetzten logischen Pegels, wenn diese
nicht auftritt, und zum Übertragen des Inhalts
des Zweigentscheidungsregisters (50) zu der
Arbeitsstation (17), bevor alle Bit-Positionen
gefüllt sind;
- Mittel, wenn der Instruktionsdekoder (22) einen
indirekten konditionalen Zweig oder eine
Ausnahme signalisiert, zum Einfangen der
entsprechenden Adressendaten von dem
Programmadressenbus (45) und Transfer derselben
zur Arbeitsstation (17);
- wobei die Mittel die nicht-konditionellen
Zweige zu einer feste Zieldresse ignorieren;
und wobei die Vorrichtung ferner folgendes
aufweist:
- Mittel zum Akkumulieren der
Zweigentscheidungsdaten und der
Programmadressendaten an der Arbeitsstation
(17) als komprimierte Programmadressendaten.
4. Vorrichtung nach Anspruch 3, wobei ferner ein
Programmzählerreferenzregister zum Empfang einer neuen
Adresse als Bit-Formdaten angeschaltet ist, wenn ein
Signal zum Einfangen oder Erfassen einer Adresse
auftritt.
5. Vorrichtung nach Anspruch 4, wobei ferner Mittel
(35) vorgesehen sind zum Akkumulieren der Bit-Formdaten
zur Aufzeichnung.
6. Vorrichtung nach Anspruch 5, wobei ferner
Registermittel (52), zum Akkumulieren einer absoluten
neuen Adresse vorgesehen sind, wenn ein Befehl oder eine
Instruktion zum Erfassen einer Adresse zum Einschluß in
die komprimierten Adressendaten abgefühlt wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/155,891 US5473754A (en) | 1993-11-23 | 1993-11-23 | Branch decision encoding scheme |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69414985D1 DE69414985D1 (de) | 1999-01-14 |
DE69414985T2 true DE69414985T2 (de) | 1999-07-08 |
Family
ID=22557192
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69414985T Expired - Fee Related DE69414985T2 (de) | 1993-11-23 | 1994-09-09 | Verzweigungsentscheidungskodierung |
Country Status (4)
Country | Link |
---|---|
US (1) | US5473754A (de) |
EP (1) | EP0655684B1 (de) |
JP (1) | JP2824828B2 (de) |
DE (1) | DE69414985T2 (de) |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5875294A (en) | 1995-06-30 | 1999-02-23 | International Business Machines Corporation | Method and system for halting processor execution in response to an enumerated occurrence of a selected combination of internal states |
US5544311A (en) * | 1995-09-11 | 1996-08-06 | Rockwell International Corporation | On-chip debug port |
US5949971A (en) * | 1995-10-02 | 1999-09-07 | International Business Machines Corporation | Method and system for performance monitoring through identification of frequency and length of time of execution of serialization instructions in a processing system |
US5797019A (en) * | 1995-10-02 | 1998-08-18 | International Business Machines Corporation | Method and system for performance monitoring time lengths of disabled interrupts in a processing system |
US5751945A (en) * | 1995-10-02 | 1998-05-12 | International Business Machines Corporation | Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system |
US5752062A (en) * | 1995-10-02 | 1998-05-12 | International Business Machines Corporation | Method and system for performance monitoring through monitoring an order of processor events during execution in a processing system |
US5729726A (en) * | 1995-10-02 | 1998-03-17 | International Business Machines Corporation | Method and system for performance monitoring efficiency of branch unit operation in a processing system |
US5691920A (en) * | 1995-10-02 | 1997-11-25 | International Business Machines Corporation | Method and system for performance monitoring of dispatch unit efficiency in a processing system |
US5748855A (en) * | 1995-10-02 | 1998-05-05 | Iinternational Business Machines Corporation | Method and system for performance monitoring of misaligned memory accesses in a processing system |
US5862161A (en) * | 1996-08-28 | 1999-01-19 | Cirrus Logic, Inc. | Sampled amplitude read channel with simplified sequence detector matched to partial erasure |
US5881224A (en) * | 1996-09-10 | 1999-03-09 | Hewlett-Packard Company | Apparatus and method for tracking events in a microprocessor that can retire more than one instruction during a clock cycle |
US6003107A (en) * | 1996-09-10 | 1999-12-14 | Hewlett-Packard Company | Circuitry for providing external access to signals that are internal to an integrated circuit chip package |
US5887003A (en) * | 1996-09-10 | 1999-03-23 | Hewlett-Packard Company | Apparatus and method for comparing a group of binary fields with an expected pattern to generate match results |
US5867644A (en) * | 1996-09-10 | 1999-02-02 | Hewlett Packard Company | System and method for on-chip debug support and performance monitoring in a microprocessor |
US5790843A (en) * | 1996-09-19 | 1998-08-04 | International Business Machines Corporation | System for modifying microprocessor operations independently of the execution unit upon detection of preselected opcodes |
US5880671A (en) * | 1996-10-31 | 1999-03-09 | Hewlett-Packard Company | Flexible circuitry and method for detecting signal patterns on a bus |
US5956476A (en) * | 1996-10-31 | 1999-09-21 | Hewlett Packard Company | Circuitry and method for detecting signal patterns on a bus using dynamically changing expected patterns |
US5751735A (en) * | 1996-11-14 | 1998-05-12 | Hewlett-Packard Company | Integrated debug trigger method and apparatus for an integrated circuit |
US5951696A (en) * | 1996-11-14 | 1999-09-14 | Hewlett-Packard Company | Debug system with hardware breakpoint trap |
US5838692A (en) * | 1996-11-14 | 1998-11-17 | Hewlett-Packard Company | System and method for extracting realtime debug signals from an integrated circuit |
US5812830A (en) * | 1996-11-14 | 1998-09-22 | Hewlett-Packard Company | Debug system with raw mode trigger capability |
US5771240A (en) * | 1996-11-14 | 1998-06-23 | Hewlett-Packard Company | Test systems for obtaining a sample-on-the-fly event trace for an integrated circuit with an integrated debug trigger apparatus and an external pulse pin |
US5956477A (en) * | 1996-11-25 | 1999-09-21 | Hewlett-Packard Company | Method for processing information in a microprocessor to facilitate debug and performance monitoring |
US5881217A (en) * | 1996-11-27 | 1999-03-09 | Hewlett-Packard Company | Input comparison circuitry and method for a programmable state machine |
US6009539A (en) * | 1996-11-27 | 1999-12-28 | Hewlett-Packard Company | Cross-triggering CPUs for enhanced test operations in a multi-CPU computer system |
US5892941A (en) | 1997-04-29 | 1999-04-06 | Microsoft Corporation | Multiple user software debugging system |
US6321331B1 (en) * | 1998-04-22 | 2001-11-20 | Transwitch Corporation | Real time debugger interface for embedded systems |
EP0992907B1 (de) * | 1998-10-06 | 2005-09-28 | Texas Instruments Inc. | Verwaltung eines FIFO zur Abalufverfolgung |
US6374370B1 (en) | 1998-10-30 | 2002-04-16 | Hewlett-Packard Company | Method and system for flexible control of BIST registers based upon on-chip events |
JP2000306399A (ja) * | 1999-04-22 | 2000-11-02 | Mitsubishi Electric Corp | 半導体装置 |
US6771250B1 (en) * | 1999-07-27 | 2004-08-03 | Samsung Electronics Co., Ltd. | Portable computer system having application program launcher for low power consumption and method of operating the same |
US20040078690A1 (en) * | 2000-05-30 | 2004-04-22 | Yasuo Kohashi | Program counter trace system, program counter trace method, and semiconductor device |
US6985980B1 (en) * | 2000-11-03 | 2006-01-10 | Xilinx, Inc. | Diagnostic scheme for programmable logic in a system on a chip |
US7237090B1 (en) | 2000-12-29 | 2007-06-26 | Mips Technologies, Inc. | Configurable out-of-order data transfer in a coprocessor interface |
US7287147B1 (en) | 2000-12-29 | 2007-10-23 | Mips Technologies, Inc. | Configurable co-processor interface |
US7181728B1 (en) | 2001-04-30 | 2007-02-20 | Mips Technologies, Inc. | User controlled trace records |
US7178133B1 (en) | 2001-04-30 | 2007-02-13 | Mips Technologies, Inc. | Trace control based on a characteristic of a processor's operating state |
US7134116B1 (en) | 2001-04-30 | 2006-11-07 | Mips Technologies, Inc. | External trace synchronization via periodic sampling |
US7185234B1 (en) | 2001-04-30 | 2007-02-27 | Mips Technologies, Inc. | Trace control from hardware and software |
US7124072B1 (en) | 2001-04-30 | 2006-10-17 | Mips Technologies, Inc. | Program counter and data tracing from a multi-issue processor |
US7069544B1 (en) | 2001-04-30 | 2006-06-27 | Mips Technologies, Inc. | Dynamic selection of a compression algorithm for trace data |
US7065675B1 (en) | 2001-05-08 | 2006-06-20 | Mips Technologies, Inc. | System and method for speeding up EJTAG block data transfers |
US7231551B1 (en) | 2001-06-29 | 2007-06-12 | Mips Technologies, Inc. | Distributed tap controller |
US7043668B1 (en) | 2001-06-29 | 2006-05-09 | Mips Technologies, Inc. | Optimized external trace formats |
CA2704252C (en) * | 2001-07-26 | 2011-09-27 | Irise | System and process for interacting with a user to define a behavior of a portion of an interactive presentation |
US7184763B2 (en) * | 2002-01-22 | 2007-02-27 | Honeywell International, Inc. | VHF ground station selection algorithm |
US7159101B1 (en) | 2003-05-28 | 2007-01-02 | Mips Technologies, Inc. | System and method to trace high performance multi-issue processors |
US7644322B2 (en) * | 2006-11-21 | 2010-01-05 | Atmel Corporation | Hardware flow control monitor |
JP2009059005A (ja) * | 2007-08-29 | 2009-03-19 | Panasonic Corp | デバッグシステム、デバッグ装置および方法 |
GB2459652B (en) * | 2008-04-28 | 2010-09-22 | Imagination Tech Ltd | Controlling instruction scheduling based on the space in a trace buffer |
US8489866B2 (en) * | 2010-06-30 | 2013-07-16 | International Business Machines Corporation | Branch trace history compression |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3673573A (en) * | 1970-09-11 | 1972-06-27 | Rca Corp | Computer with program tracing facility |
US4205370A (en) * | 1975-04-16 | 1980-05-27 | Honeywell Information Systems Inc. | Trace method and apparatus for use in a data processing system |
JPS57144148U (de) * | 1981-03-02 | 1982-09-10 | ||
US4453093A (en) * | 1982-04-02 | 1984-06-05 | Honeywell Information Systems Inc. | Multiple comparison circuitry for providing a software error trace signal |
JPS59161746A (ja) * | 1983-03-04 | 1984-09-12 | Omron Tateisi Electronics Co | プログラムアナライザ |
JPS59191661A (ja) * | 1983-04-15 | 1984-10-30 | Omron Tateisi Electronics Co | デバツグ装置 |
JPS59205652A (ja) * | 1983-05-06 | 1984-11-21 | Fuji Electric Co Ltd | プログラムトレ−ス・システム |
US4598364A (en) * | 1983-06-29 | 1986-07-01 | International Business Machines Corporation | Efficient trace method adaptable to multiprocessors |
JPS61131136A (ja) * | 1984-11-30 | 1986-06-18 | Fujitsu Ltd | 履歴蓄積方式 |
US4821178A (en) * | 1986-08-15 | 1989-04-11 | International Business Machines Corporation | Internal performance monitoring by event sampling |
JPS6391750A (ja) * | 1986-10-06 | 1988-04-22 | Matsushita Electric Ind Co Ltd | ブランチアドレストレ−ス装置 |
JPS63129432A (ja) * | 1986-11-19 | 1988-06-01 | Nec Corp | プログラム・アドレス・トレ−ス装置 |
DE3740762A1 (de) * | 1987-01-22 | 1988-08-04 | Nat Semiconductor Corp | Datenverarbeitungssystem mit einer externen schnittstelle |
JPH01297747A (ja) * | 1988-05-26 | 1989-11-30 | Nec Ibaraki Ltd | バストレーサ |
US5121489A (en) * | 1988-08-02 | 1992-06-09 | International Business Machines Corporation | Tracing method for identifying program execution paths using a trace points bit map with one-to-one correspondence with embedded trace points |
JPH0264828A (ja) * | 1988-08-31 | 1990-03-05 | Nec Corp | アドレストレース回路 |
JPH02148339A (ja) * | 1988-11-30 | 1990-06-07 | Nec Corp | トレーサ制御回路 |
JPH0365737A (ja) * | 1989-08-03 | 1991-03-20 | Nec Corp | 周辺制御装置 |
JPH03266140A (ja) * | 1990-03-16 | 1991-11-27 | Nec Corp | プログラムデバッグ方式 |
JPH0442330A (ja) * | 1990-06-08 | 1992-02-12 | Nec Corp | 分岐ヒストリテーブルを用いたデバッグ方式 |
JPH04130932A (ja) * | 1990-09-21 | 1992-05-01 | Nec Corp | アドレストレースメモリ |
JPH04140852A (ja) * | 1990-10-02 | 1992-05-14 | Nec Corp | 情報処理装置の診断方式 |
JPH04140851A (ja) * | 1990-10-02 | 1992-05-14 | Nec Corp | 情報処理装置の診断方式 |
JPH04167146A (ja) * | 1990-10-31 | 1992-06-15 | Nec Corp | 情報処理装置のアドレストレース方式 |
US5301325A (en) * | 1991-03-07 | 1994-04-05 | Digital Equipment Corporation | Use of stack depth to identify architechture and calling standard dependencies in machine code |
JPH0581085A (ja) * | 1991-04-19 | 1993-04-02 | Internatl Business Mach Corp <Ibm> | トレースデータ捕捉・蓄積方法及び装置 |
JPH0512061A (ja) * | 1991-07-08 | 1993-01-22 | Nec Eng Ltd | アドレストレース記憶装置 |
JPH0561720A (ja) * | 1991-09-04 | 1993-03-12 | Fujitsu Ltd | トレースデータ収集装置 |
JPH05100903A (ja) * | 1991-10-07 | 1993-04-23 | Nec Ibaraki Ltd | アドレストレーサ |
JPH05100900A (ja) * | 1991-10-09 | 1993-04-23 | Nec Corp | 情報処理装置 |
JPH05120080A (ja) * | 1991-10-30 | 1993-05-18 | Nec Ibaraki Ltd | フアームウエア実行履歴記憶方式 |
JPH05224990A (ja) * | 1992-02-13 | 1993-09-03 | Nec Corp | マイクロプログラムトレーサ |
JPH05241892A (ja) * | 1992-02-27 | 1993-09-21 | Nec Corp | リアルタイムトレーサ |
JPH05289908A (ja) * | 1992-04-06 | 1993-11-05 | Nec Corp | プログラムトレーサ |
EP0569987A1 (de) * | 1992-05-13 | 1993-11-18 | Nec Corporation | Mikroprozessor mit Cache-Speicher und Fehlersuchmöglichkeit |
US5359608A (en) * | 1992-11-24 | 1994-10-25 | Amdahl Corporation | Apparatus for activation and deactivation of instruction tracing through use of conditional trace field in branch instructions |
-
1993
- 1993-11-23 US US08/155,891 patent/US5473754A/en not_active Expired - Lifetime
-
1994
- 1994-09-09 DE DE69414985T patent/DE69414985T2/de not_active Expired - Fee Related
- 1994-09-09 EP EP94114205A patent/EP0655684B1/de not_active Expired - Lifetime
- 1994-11-21 JP JP6286417A patent/JP2824828B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2824828B2 (ja) | 1998-11-18 |
DE69414985D1 (de) | 1999-01-14 |
US5473754A (en) | 1995-12-05 |
EP0655684A1 (de) | 1995-05-31 |
JPH07200348A (ja) | 1995-08-04 |
EP0655684B1 (de) | 1998-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69414985T2 (de) | Verzweigungsentscheidungskodierung | |
DE69616708T2 (de) | Datenprozessor mit eingebauter Emulationschaltung | |
DE69523884T2 (de) | Mikroprozessor mit Fehlersuchsystem | |
DE69616462T2 (de) | Datenprozessor mit eingebauter Emulationsschaltung | |
DE69616463T2 (de) | Datenprozessor mit eingebauter Emulationsschaltung | |
DE69801220T2 (de) | Fehlersuchschnittstelle mit kompaktem ablaufdatenspeicher | |
DE69616917T2 (de) | Datenprozessor mit eingebauter Emulationsschaltung | |
DE69622112T2 (de) | Auf-Chip-Schnittstelle zur Fehlerbeseitigung | |
DE69225750T2 (de) | Datenverarbeitungssystem mit internem Befehlspufferspeicher | |
DE60204687T2 (de) | Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird | |
DE69708255T2 (de) | Diagnosesystem und Verfahren bei einer integrierten Schaltung | |
DE69523549T2 (de) | Mikroprozessor mit Fehlersuchsystem | |
DE2722099C2 (de) | ||
DE2953432C1 (de) | Vorrichtung zum Testen eines Mikroprogramms | |
DE69410489T2 (de) | Verfahren und gerät für die synchronisation und den ablauf von mehreren datenströmen und echtzeitaufgaben | |
DE69930614T2 (de) | VERFAHREN UND GERÄT ZUM HANDHABEN VON mehrfachen flanken- und zustandsausgelösten unterbrechungen | |
DE69331448T2 (de) | Dataprozessor mit einem Cachespeicher | |
DE69534148T2 (de) | Rechnersystem zur Ausführung von Verzweigungsbefehlen | |
DE2842548A1 (de) | Programmierbare speicherschutzlogik fuer mikroprozessorsysteme | |
DE2611907A1 (de) | Dv-system mit einer prioritaets- unterbrechungs-anordnung | |
DE60002908T2 (de) | Vorrichtung und verfahren zur verbesserten fehlerortung und diagnose in rechnern | |
DE2611975A1 (de) | Dv-system mit einer einrichtung zur zuordnung von prozessen zu einem prozessor auf einer prioritaetsbasis | |
DE2364323C2 (de) | Verfahren zur Behandlung von Unterbrechungsbedingungen in einer Datenverarbeitungsanlage | |
DE69712587T2 (de) | Mikrorechner mit Zugriff auf einen externen Speicher | |
DE60010847T2 (de) | Verfahren zur Fehlerbeseitigung in einem Thread-Programm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |