IP Library Granted Patent US 7,360,203
Granted Patent B2
US 7,360,203 · App. 10/774,193 · Granted Apr 15, 2008

Program tracing in a multithreaded processor

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,360,203
App. No.
10/774,193
Granted
Apr 15, 2008
Kind
B2
Abstract

A multithreaded processor includes a thread ID for each set of fetched bits in an instruction fetch and issue unit. The thread ID attaches to the instructions and operands of the set of fetched bits. Pipeline stages in the multithreaded processor stores the thread ID associated with each operand or instruction in the pipeline stage. The thread ID are used to maintain data coherency and to generate program traces that include thread information for the instructions executed by the multithreaded processor.

Claims (68)

1. A method of generating a program trace on a multithreaded processor, the method comprising:

detecting issuance of a first instruction;

generating a first program trace entry for the first instruction, wherein the first program trace entry includes a first thread ID for the first instruction;

detecting issuance of a second instruction;

generating a second program trace entry for the second instruction, wherein the second program trace entry includes a second thread ID for the second instruction, wherein the first thread ID is different than the second thread ID;

detecting the occurrence of a thread switch; and

performing a synchronization operation in response to the thread switch, wherein the synchronization operation comprises inserting a number equal to the number of instructions issued since a previous synchronization operation into the program trace.

2. The method of claim 1 , wherein the synchronization operation further comprises inserting a program counter into the program trace.

3. The method of claim 1 , further comprising compressing the program trace.

4. The method of claim 3 , wherein the compressing the program trace comprises tokenizing the first program trace entry and the second program trace entry.

5. The method of claim 1 , further comprising periodically performing synchronization operations with the program trace.

6. A program trace generator for generating a program trace on a multithreaded processor comprising:

means for detecting issuance of a first instruction;

means for generating a first program trace entry for the first instruction, wherein the first program trace entry includes a first thread ID for the first instruction;

means for detecting issuance of a second instruction;

means for generating a second program trace entry for the second instruction, wherein the second program trace entry includes a second thread ID for the second instruction, wherein the first thread ID is different than the second thread ID;

means for detecting the occurrence of a thread switch; and

means for performing a synchronization operation in response to the thread switch, wherein the means for performing a synchronization operation comprises means for inserting a number equal to the number of instructions issued since a previous synchronization operation into the program trace.

7. The program trace generator of claim 6 , wherein the means for performing a synchronization operation further comprises means for inserting a program counter into the program trace.

8. The program trace generator of claim 6 , further comprising means for compressing the program trace.

9. The program trace generator of claim 8 , wherein the means for compressing the program trace comprises means for tokenizing the first program trace entry and the second program trace entry.

10. The program trace generator of claim 6 , further comprising means for periodically performing synchronization operations with the program trace.

11. A method of generating a program trace on a multithreaded processor, the method comprising:

detecting issuance of a first instruction;

generating a first program trace entry for the first instruction;

detecting a thread switch; and

inserting a thread switch marker into the program trace when a thread switch is detected.

12. The method of claim 11 , further comprising:

detecting issuance of a second instruction; and

generating a second program trace entry for the first instruction.

13. The method of claim 12 , wherein the first instruction is from first thread and the second instruction is from a second thread.

14. The method of claim 11 , further comprising compressing the program trace.

15. The method of claim 14 , wherein the compressing the program trace comprises:

tokenizing the first program trace entry to form a first program trace token; and

tokenizing the thread switch marker into a thread switch token.

16. The method of claim 11 , further comprising periodically performing synchronization operations with the program trace.

17. The method of claim 16 , wherein the synchronization operation further comprises inserting a program counter into the program trace.

18. The method of claim 11 , wherein the thread switch marker contains a first thread ID of the active thread after the thread switch.

19. The method of claim 18 , wherein the thread switch marker contains a second thread ID of the active thread before the thread switch.

20. A program trace generator for generating a program trace on a multithreaded processor, the program trace generator comprising:

means for detecting issuance of a first instruction;

means for generating a first program trace entry for the first instruction;

means for detecting a thread switch; and

means for inserting a thread switch marker into the program trace when a thread switch is detected.

21. The program trace generator of claim 20 , further comprising:

means for detecting issuance of a second instruction; and

means for generating a second program trace entry for the first instruction.

22. The program trace generator of claim 21 , wherein the first instruction is from first thread and the second instruction is from a second thread.

23. The program trace generator of claim 20 , further comprising means for compressing the program trace.

24. The program trace generator of claim 23 , wherein the means for compressing the program trace comprises:

means for tokenizing the first program trace entry to form a first program trace token; and

means for tokenizing the thread switch marker into a thread switch token.

25. The program trace generator of claim 20 , further comprising means for periodically performing synchronization operations with the program trace.

26. The program trace generator of claim 25 , wherein the means for performing a synchronization operation further comprises means for inserting a program counter into the program trace.

27. The program trace generator of claim 20 , wherein the thread switch marker contains a first thread ID of the active thread after the thread switch.

28. The program trace generator of claim 27 , wherein the thread switch marker contains a second thread ID of the active thread before the thread switch.

29. A program trace generator for generating a program trace on a multithreaded processor comprising:

detector configured to detect issuance of a first instruction;

generator configured to generate a first program trace entry for the first instruction, wherein the first program trace entry includes a first thread ID for the first instruction;

detector configured to detect issuance of a second instruction;

generator configured to generate a second program trace entry for the second instruction, wherein the second program trace entry includes a second thread ID for the second instruction, wherein the first thread ID is different than the second thread ID;

detector configured to detect the occurrence of a thread switch; and

performer configured to perform a synchronization operation in response to the thread switch, wherein the performer comprises inserter configured to insert a number equal to the number of instructions issued since a previous synchronization operation into the program trace.

30. A program trace generator for generating a program trace on a multithreaded processor, the program trace generator comprising:

detector configured to detect issuance of a first instruction;

generator configured to generate a first program trace entry for the first instruction;

detector configured to detect a thread switch; and

inserter configured to insert a thread switch marker into the program trace when a thread switch is detected.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2004
From: INFINEON TECHNOLOGIES NORTH AMERICA CORP.
To: INFINEON TECHNOLOGIES AG
Reel/Frame 015197/0238 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 6, 2004
From: OBER, ROBERT E.; MARTIN, DANIEL F.; ARNOLD, ROGER D.; NORDEN, ERIK K.
To: INFINEON TECHNOLOGIES NORTH AMERICA CORP.
Reel/Frame 014984/0161 →