IP Library Granted Patent US 9,665,466
Granted Patent B2
US 9,665,466 · App. 14/475,507 · Granted May 30, 2017

Debug architecture for multithreaded processors

Inventors: Celso Fernando Veras Brites (Campinas, BR); Alex Rocha Prado (Campinas, BR)
Assignee: NXP USA, Inc.
G06F11/3636
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 9,665,466
App. No.
14/475,507
Granted
May 30, 2017
Kind
B2
Abstract

Debug architecture for multithreaded processors. In some embodiments, a method includes, in response to receiving a halt command, saving a context of a thread being executed by a processor core to a context memory distinct from the processor core; suspending execution of the thread; and initiating a debug of the thread using the context stored in the context memory. In other embodiments, an integrated circuit includes a processor core; a context management circuit coupled to the core; and a debug support circuit coupled to the context management circuit, the debug support circuit configured to send a halt request to the context management circuit and the context management circuit configured to, in response to having received the request, facilitate a debug operation by causing execution of a thread running on the core to be suspended and saving a context of the thread into a context memory distinct from the core.

Claims (46)

1. An integrated circuit, comprising:

a multithreading control circuit including hardware context switch circuitry configured to control multithreading operations within a processor core, wherein the hardware context switch circuitry includes at least two separate sets of context registers and a distinct context memory, wherein each of the two distinct sets of context registers is coupled to the multithreading control circuit, and wherein the context memory is coupled to the multithreading control circuit and to the sets of context registers via a context read/write controller; and

a debug support circuit coupled to the multithreading control circuit via a context access bus, wherein the multithreading control circuit is further configured to facilitate a first debug operation re-using the hardware context switch circuitry by:

in response to having received a halt request from the debug support circuit, causing execution of a first thread running on the processor core to be suspended;

saving a context of the first thread into the context memory distinct from the processor core;

facilitating performance, by the processor core, of a first debug thread upon the context of the first thread stored in the context memory; and

in response to having received a go command from the debug support circuit, saving a context of the first debug thread into the context memory and providing the context of the first debug thread from the context memory to the debug support circuit via the context access bus.

2. The integrated circuit of claim 1 , wherein each of a plurality of pipeline stages of the multithreading control circuit is sequentially switched from the first thread to the first debug thread in a cascaded fashion.

3. The integrated circuit of claim 1 , wherein the halt request is issued in response to a command from debug software under execution by the processor core.

4. The integrated circuit of claim 1 , wherein the processor core is configured to execute a second thread at least in part while the execution of the first thread is suspended.

5. The integrated circuit of claim 1 , wherein the multithreading control circuit is configured to allow the processor core to resume execution of the first thread using the context of the first thread stored in the context memory in response to having received the go request.

6. The integrated circuit of claim 1 , wherein the debug support circuit is configured to issue a second halt request to the multithreading control circuit, and wherein the multithreading control circuit is configured to, in response to having received the second halt request, facilitate a second debug operation by:

causing execution of a second thread running on the processor core to be suspended;

saving a context of the second thread into the context memory;

facilitating performance, by the processor core, of a second debug thread upon the context of the second thread stored in the context memory; and

in response to having received a second go command from the debug support circuit, saving a context of the second debug thread into the context memory and providing the context of the second debug thread from the context memory to the debug support circuit via the context access bus.

7. The integrated circuit of claim 1 , wherein the multithreading control circuit is configured to receive a context switch command after having received the halt request, and wherein the multithreading control circuit is configured to prioritize execution of the context switch command over execution of the halt request.

8. A method, comprising:

in response to receiving a halt command from a debug support circuit and under control of a multithreading control circuit including hardware context switch circuitry responsible for performing multithreading operations within a processor core, wherein the hardware context switch circuitry includes two distinct sets of context registers and a separate context memory, wherein each of the two distinct sets of context registers is coupled to the multithreading control circuit, and wherein the context memory is coupled to the multithreading control circuit and to the sets of context registers via a context read/write controller, saving a context of a thread being executed by the processor core to the context memory distinct from the processor core, wherein the multithreading control circuit is coupled to the debug support circuit via a context access bus;

suspending execution of the thread using the hardware context switch circuitry; and

initiating a debug of the thread by accessing, using the hardware context switch circuitry, the context stored in the context memory.

9. The method of claim 8 , further comprising executing a second thread at least in part while the execution of the thread is suspended.

10. The method of claim 8 , further comprising:

in response to receiving a go command, loading the context of the thread from the context memory onto the processor core; and

resuming execution of the thread.

11. The method of claim 10 , further comprising executing a second thread using a second context stored in the context memory prior to receipt of the go command.

12. The method of claim 11 , further comprising:

in response to receiving a second halt command, saving a second context of a second thread being executed by the processor in the context memory;

suspending execution of the second thread; and

initiating a debug of the second thread at least in part concurrently with the debug of the thread using the second context stored in the context memory.

13. The method of claim 12 , further comprising:

receiving a context switch command after having received the halt command, and prioritizing execution of the context switch command over execution of the halt command.

14. A debug support circuit, comprising:

a logic unit; and

a memory coupled to the logic unit, the memory having program instructions stored thereon that, upon execution by the logic unit, cause the debug support circuit to:

transmit a first command to hardware context switch circuitry of a multithreading control circuit responsible for performing multithreading operations within a processor, wherein the multithreading control circuit is coupled to the processor, wherein the hardware context switch circuitry includes at least two separate sets of context registers and a distinct context memory, wherein each of the two distinct sets of context registers is coupled to the multithreading control circuit, and wherein the context memory is coupled to the multithreading control circuit and to the sets of context registers via a context read/write controller, and wherein the multithreading control circuit is configured to cause execution of a thread running on the processor to be suspended and save a context of the thread into the context memory in response to the first command;

determine that a debug operation has been completed with respect to the thread re-using the hardware context switch circuitry; and

transmit a second command to the hardware context switch circuitry, wherein the hardware context switch circuitry is configured to allow the processor to resume execution of the thread in the context memory in response to the second command and to provide the logic unit with access to the context memory via a context access bus.

15. The debug support circuit of claim 14 , wherein the first and second commands are transmitted in response to a command from a hardware circuit coupled to the multithreading control circuit.

16. The debug support circuit of claim 14 , wherein the first and second commands are transmitted in response to a command from software executed by the processor.

17. The debug support circuit of claim 14 , wherein the processor is configured to execute a second thread at least in part while the execution of the thread is suspended.

18. The debug support circuit of claim 14 , wherein the program instructions, upon execution by the logic unit, cause the debug support circuit to:

transmit a third command to the hardware context switch circuitry, wherein the hardware context switch circuitry is configured to, in response to having received the third command, cause execution of a second thread running on the processor to be suspended and save a context of the second thread into the context memory;

determine that a second debug operation has been completed with respect to the second thread re-using the hardware context switch circuitry; and

transmit a fourth command to the hardware context switch circuitry, wherein the hardware context switch circuitry is configured to allow the processor to resume execution of the second thread in response to the fourth command.

19. The debug support circuit of claim 18 , wherein the third command is transmitted prior to transmission of the second command and while execution of the thread is suspended.

Assignments (15)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040626 FRAME: 0683. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME EFFECTIVE NOVEMBER 7, 2016. Recorded Jan 12, 2017
From: NXP SEMICONDUCTORS USA, INC. (MERGED INTO); FREESCALE SEMICONDUCTOR, INC. (UNDER)
To: NXP USA, INC.
Reel/Frame 041414/0883 →
CHANGE OF NAME Recorded Nov 16, 2016
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 040626/0683 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 7, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037458/0502 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 7, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037458/0460 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0921 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Nov 4, 2014
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 034153/0027 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Nov 4, 2014
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 034160/0351 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Nov 4, 2014
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 034160/0370 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 2, 2014
From: BRITES, CELSO FERNANDO VERAS; PRADO, ALEX ROCHA
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 033654/0156 →
Continuity (1)
Related Publication 20160062874A1 · Mar 3, 2016