IP Library Granted Patent US 8,141,076
Granted Patent B2
US 8,141,076 · App. 11/238,077 · Granted Mar 20, 2012

Cell processor methods and apparatus

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,141,076
App. No.
11/238,077
Granted
Mar 20, 2012
Kind
B2
Abstract

Methods and apparatus for cell processors are disclosed. A policy module is loaded from a main memory of a cell processor into the local memory of a selected synergistic processing unit (SPU) under control of an SPU policy module manager (SPMM) running on the SPU. The policy module loads a work queue from the main memory into the local memory of the SPU. The policy module interprets and process one or more tasks from the work queue on the SPU. The selected SPU performs the task(s) and after completion or upon a pre-emption, returns control of the SPU to the SPMM.

Claims (48)

1. In a processor having one or more central processors and one or more secondary processing elements, each secondary processing element having a processor unit and a local memory, a method for managing code and data on one or more of the secondary processing elements, the method comprising:

under control of a policy module manager located at and running on a selected one of the one or more secondary processing elements, selecting a work queue for processing by determining a contention for a work queue in a main memory, wherein the contention is a number of secondary processing elements working on the work queue, comparing the contention to a predetermined minimum contention for the work queue, wherein the minimum contention represents a minimum number of secondary processing elements needed to process the work queue, and preferentially loading a policy module from the main memory into the local memory of the selected secondary processing element if the contention for the work queue is greater than zero but less than the minimum contention;

under control of the policy module, loading one or more tasks from the work queue in the main memory into the local memory of the selected secondary processing element;

performing the one or more tasks with the selected secondary processing element; and

after completing the one or more tasks or upon a pre-emption, returning control of the selected secondary processing element to the policy module manager.

2. The method of claim 1 wherein loading a policy module from the main memory includes reading a memory address of the policy module in the main memory from a work definition in a work queue array.

3. The method of claim 1 wherein loading the one or more tasks from the main memory includes reading a memory address of the task in the main memory from a work definition in a work queue array.

4. The method of claim 3 wherein the memory address of the task contains both code and data.

5. The method of claim 3 wherein the policy module determines a contents and usage of the work queue.

6. The method of claim 1 wherein performing the one or more tasks includes the step of, under control of the policy module, saving an output of the task to either the main memory or the local memory of another secondary processing element.

7. The method of claim 1 wherein performing the one or more tasks with the selected secondary processing element includes checking for pre-emption events with the policy module.

8. The method of claim 1 , further comprising choosing one or more new tasks upon completion or pre-emption of the one or more tasks.

9. The method of claim 8 wherein choosing the one or more new tasks includes a linear search.

10. The method of claim 1 wherein pre-emption of the one or more tasks includes the step of determining whether a task with a higher priority has become available for processing by the secondary processing element.

11. The method of claim 10 , further comprising loading the task with the higher priority and an associated policy module into the secondary processing element.

12. The method of claim 1 wherein returning control of the selected secondary processing element to the policy module manager includes avoiding a race condition in which the central processor or another secondary processing element chooses a task before the policy module running on the selected secondary processing element changes a state for the task.

13. A processor, comprising:

a main memory;

a central processor coupled to the main memory;

one or more secondary processing elements coupled to the main memory and central processor, wherein each secondary processing element includes a processor unit and a local memory,

a policy module manager located at and running on a particular secondary processing element of the one or more of the secondary processing elements, the policy module manager being configured to select a work queue in the main memory for processing and load a policy module for the selected work queue from the main memory into the local memory of the particular secondary processing element, wherein the policy module manager is configured to select a work queue for processing by determining a contention for a work queue in a main memory, wherein the contention is a number of secondary processing elements working on the work queue, comparing the contention to a predetermined minimum contention for the work queue, wherein the minimum contention represents a minimum number of secondary processing elements needed to process the work queue, and load the policy module for the work queue if the contention for the work queue is greater than zero but less than the minimum contention,

wherein the policy module is configured to load one or more tasks from a work queue from the main memory into the local memory of the particular secondary processing element and wherein the policy module is configured to interpret and process the one or more tasks from the work queue on the particular secondary processing element.

14. The processor of claim 13 wherein the main memory includes one more work queue arrays, wherein each work queue includes one or more work definitions, each work definition being associated with a work queue.

15. The processor of claim 14 wherein each work definition includes a memory address of a work queue and a memory address of a policy definition.

16. The processor of claim 15 wherein each work definition includes a Priority value.

17. The processor of claim 15 wherein each work definition includes a Contention value.

18. The processor of claim 15 wherein each work definition includes Maximum Allowed Contention value.

19. The processor of claim 15 wherein each work definition includes a Minimum Contention value.

20. The processor of claim 15 wherein each work definition includes a State value.

21. The processor of claim 15 wherein the policy definition includes an address of a Policy Module code image.

22. The processor of claim 15 wherein the memory address of the work queue includes both code and data.

23. The processor of claim 13 wherein the policy module is a custom policy.

24. The processor of claim 13 wherein the policy is a Runtime System policy.

25. The processor of claim 13 wherein the policy is a Task Management policy.

26. The processor of claim 13 wherein the policy is a Task and Data Management policy.

27. The processor of claim 13 wherein the policy module manager and/or Policy Module is configured to avoid a race condition in which the central processor or another secondary processing element chooses a task before the policy module running on the selected secondary processing element changes a state for the task.

28. A data processing system, comprising:

one or more processors each processor having a main memory, a central processor, and one or more secondary processing elements, each secondary processing element having a processor unit and a local memory, wherein the main memory, central processor, and secondary processing elements are coupled to each other by a data bus;

wherein the main memory and/or local memory include processor executable instructions for implementing a method for managing code and data on one or more of the secondary processing elements, the method comprising:

under control of a policy module manager located at and running on a selected secondary processing element of the one or more of the secondary processing elements, selecting a work queue for processing by determining a contention for a work queue in a main memory, wherein the contention is a number of secondary processing elements working on the work queue, comparing the contention to a predetermined minimum contention for the work queue, wherein the minimum contention represents a minimum number of secondary processing elements needed to process the work queue, and loading a policy module from the main memory into the local memory of the selected secondary processing element if the contention for the work queue is greater than zero but less than the minimum contention;

under control of the policy module, loading one or more tasks from the work queue in the main memory into the local memory of the selected secondary processing element;

performing the one or more tasks with the selected secondary processing element; and

after completing the one or more tasks or upon a pre-emption, returning control of the secondary processing element to the policy module manager.

29. A non-transitory processor readable medium having embodied therein a set of processor readable instructions for implementing a method for managing code and data on one or more secondary processing elements in a processor having one or more central processor units and one or more secondary processing elements, each secondary processing element having a processor unit and a local memory, the method comprising:

under control of a policy module manager located at and running on a selected secondary processing element of the one or more of the secondary processing elements, selecting a work queue for processing by determining a contention for a work queue in a main memory, wherein the contention is a number of secondary processing elements working on the work queue, comparing the contention to a predetermined minimum contention for the work queue, wherein the minimum contention represents a minimum number of secondary processing elements needed to process the work queue, and loading a policy module from the main memory into the local memory of the selected secondary processing element if the contention for the work queue is less than the minimum contention;

under control of the policy module, loading one or more tasks from the main memory into the local memory of the selected secondary processing element;

performing the one or more tasks with the selected secondary processing element; and

after completing the one or more tasks or upon a pre-emption, returning control of the secondary processing element to the policy module manager.

Assignments (4)
CHANGE OF NAME Recorded Jul 1, 2016
From: SONY COMPUTER ENTERTAINMENT INC.
To: SONY INTERACTIVE ENTERTAINMENT INC.
Reel/Frame 039239/0356 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 27, 2011
From: SONY NETWORK ENTERTAINMENT PLATFORM INC.
To: SONY COMPUTER ENTERTAINMENT INC.
Reel/Frame 027557/0001 →
CHANGE OF NAME Recorded Dec 26, 2011
From: SONY COMPUTER ENTERTAINMENT INC.
To: SONY NETWORK ENTERTAINMENT PLATFORM INC.
Reel/Frame 027446/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 29, 2005
From: BATES, JOHN P.; WHITE, PAYTON R.; VASS, ATTILA
To: SONY COMPUTER ENTERTAINMENT AMERICA INC.
Reel/Frame 017417/0043 →