IP Library Granted Patent US 8,996,847
Granted Patent B2
US 8,996,847 · App. 13/780,115 · Granted Mar 31, 2015

Global register protection in a multi-threaded 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 8,996,847
App. No.
13/780,115
Granted
Mar 31, 2015
Kind
B2
Abstract

Global register protection in a multi-threaded processor is described. In an embodiment, global resources within a multi-threaded processor are protected by performing checks, before allowing a thread to write to a global resource, to determine whether the thread has write access to the particular global resource. The check involves accessing one or more local control registers or a global control field within the multi-threaded processor and in an example, a local register associated with each other thread in the multi-threaded processor is accessed and checked to see whether it contains an identifier for the particular global resource. Only if none of the accessed local resources contain such an identifier, is the instruction issued and the thread allowed to write to the global resource. Otherwise, the instruction is blocked and an exception may be raised to alert the program that issued the instruction that the write failed.

Claims (56)

1. A method for managing global resources within a multi-threaded processor, the multi-threaded processor comprising a plurality of threads and the method comprising:

receiving an instruction from a thread to write to a global resource;

checking, using hardware logic, one or more registers in the multi-threaded processor to determine whether the thread has write access to the global resource; and

in response to determining that the thread has write access to the global resource, allowing the instruction to issue, wherein

checking one or more registers in the multi-threaded processor to determine whether the thread has write access to the global resource comprises:

checking one or more local control registers in the multi-threaded processor to determine whether the thread has write access to the global resource, wherein each local control register is associated with one of the plurality of threads.

2. A method according to claim 1 , further comprising:

in response to determining that the thread does not have write access to the global resource, preventing the instruction from issuing and raising an exception.

3. A method according to claim 1 , wherein checking one or more local control registers in the multi-threaded processor to determine whether the thread has write access to the global resource comprises:

accessing a local control register associated with each other thread in the multi-threaded processor; and

determining whether any accessed local control register identifies the global resource, wherein if none of the accessed local control registers identify the global resource, the thread has write access to the global resource.

4. A method according to claim 1 , wherein checking one or more local control registers in the multi-threaded processor to determine whether the thread has write access to the global resource comprises:

accessing a local control register associated with the thread; and

determining whether the accessed local control register identifies the global resource, wherein if the accessed local control register identifies the global resource, the thread has write access to the global resource.

5. A method according to claim 1 , further comprising:

receiving an instruction from a thread to write data identifying a global resource to a local control register associated with the thread;

accessing a local control register associated with each other thread in the multi-threaded processor;

determining whether any accessed local control register comprises data identifying the global resource; and

in response to determining that none of the accessed local control registers comprises data identifying the global resource, allowing the instruction to issue.

6. A method according to claim 5 , further comprising:

in response to determining that one of the accessed local control registers comprises data identifying the global resource, preventing the instruction from issuing and raising an exception.

7. A method according to claim 1 , wherein checking one or more registers in the multi-threaded processor to determine whether the thread has write access to the global resource comprises:

checking a global control field in a global register in the multi-threaded processor to determine whether the thread has write access to the global resource, the global control field being associated with the global resource.

8. A method according to claim 1 , further comprising:

receiving an instruction from a thread to read from a global resource;

checking one or more registers in the multi-threaded processor to determine whether the thread has read access to the global resource; and

in response to determining that the thread has read access to the global resource, allowing the instruction to issue.

9. A method according to claim 8 , further comprising:

in response to determining that the thread does not have read access to the global resource, preventing the instruction from issuing and raising an exception.

10. A method for managing global resources within a multi-threaded processor, the multi-threaded processor comprising a plurality of threads and the method comprising:

receiving an instruction from a thread to write to a global resource;

checking, using hardware logic, one or more registers in the multi-threaded processor to determine whether the thread has write access to the global resource;

in response to determining that the thread has write access to the global resource, allowing the instruction to issue,

receiving an instruction from a thread to read from a global resource;

checking one or more registers in the multi-threaded processor to determine whether the thread has read access to the global resource; and

in response to determining that the thread has read access to the global resource, allowing the instruction to issue,

wherein checking one or more registers in the multi-threaded processor to determine whether the thread has read access to the global resource comprises:

checking one or more local control registers in the multi-threaded processor to determine whether the thread has read access to the global resource, wherein each local control register is associated with one of the plurality of threads.

11. A method according to claim 10 , wherein checking one or more local control registers in the multi-threaded processor to determine whether the thread has read access to the global resource comprises:

accessing a local control register associated with each other thread in the multi-threaded processor; and

determining whether any accessed local control register identifies the global resource, wherein if none of the accessed local control registers identify the global resource, the thread has read access to the global resource.

12. A method according to claim 8 , wherein checking one or more registers in the multi-threaded processor to determine whether the thread has read access to the global resource comprises:

checking a global control field associated with the global resource in the multi-threaded processor to determine whether the thread has read access to the global resource.

13. A method according to claim 1 , wherein the instruction from a thread to write to a global resource comprises an instruction from a thread to write an alternative stack pointer to a global resource.

14. A method according to claim 1 , wherein the global resource comprises a global register.

15. A multi-threaded processor, comprising:

a plurality of threads;

at least one global resource;

hardware logic arranged to:

receive an instruction from one of the plurality of threads to write to a global resource;

check one or more registers in the multi-threaded processor to determine whether the thread has write access to the global resource; and

in response to determining that the thread has write access to the global resource, allow the instruction to issue; and

a plurality of local control registers, each local control register associated with one of the plurality of threads and wherein the hardware logic is further arranged to determine whether the thread has write access to the global resource by checking one or more of the local control registers.

16. A multi-threaded processor according to claim 15 , wherein the hardware logic is further arranged, in response to determining that the thread does not have write access to the global resource, to prevent the instruction from issuing and raise an exception.

17. A multi-threaded processor according to claim 15 , wherein each local control register comprises one or more control fields and each control field is arranged to store data identifying one or more global resources in the multi-threaded processor.

18. A multi-threaded processor according to claim 17 , wherein each control field is associated with a predefined task.

Assignments (8)
RELEASE OF SECURITY INTEREST Recorded Dec 29, 2022
From: CAPITAL FINANCE ADMINISTRATION, LLC, AS ADMINISTRATIVE AGENT
To: MIPS TECH, LLC; WAVE COMPUTING INC.
Reel/Frame 062251/0251 →
SECURITY INTEREST Recorded Jun 14, 2021
From: MIPS TECH, LLC; WAVE COMPUTING, INC.
To: CAPITAL FINANCE ADMINISTRATION, LLC
Reel/Frame 056558/0903 →
RELEASE OF SECURITY INTEREST Recorded Jun 14, 2021
From: WAVE COMPUTING LIQUIDATING TRUST
To: MIPS TECH, INC.; HELLOSOFT, INC.; WAVE COMPUTING (UK) LIMITED; IMAGINATION TECHNOLOGIES, INC.; CAUSTIC GRAPHICS, INC.; MIPS TECH, LLC; WAVE COMPUTING, INC.
Reel/Frame 056589/0606 →
SECURITY INTEREST Recorded Feb 26, 2021
From: WAVE COMPUTING, INC.; MIPS TECH, LLC; MIPS TECH, INC.; HELLOSOFT, INC.; WAVE COMPUTING (UK) LIMITED; IMAGINATION TECHNOLOGIES, INC.; CAUSTIC GRAPHICS, INC.
To: WAVE COMPUTING LIQUIDATING TRUST
Reel/Frame 055429/0532 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 19, 2018
From: MIPS TECH LIMITED
To: MIPS TECH, LLC
Reel/Frame 045593/0166 →
CHANGE OF NAME Recorded Jan 26, 2018
From: HELLOSOFT LIMITED
To: MIPS TECH LIMITED
Reel/Frame 045168/0922 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 24, 2018
From: IMAGINATION TECHNOLOGIES LIMITED
To: HELLOSOFT LIMITED
Reel/Frame 044712/0386 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2013
From: WANG, GUIXIN, MR.; JACKSON, HUGH, MR.; ISHERWOOD, ROBERT GRAHAM, MR.
To: IMAGINATION TECHNOLOGIES, LTD
Reel/Frame 029894/0969 →