IP Library Granted Patent US 9,513,963
Granted Patent B2
US 9,513,963 · App. 14/573,397 · Granted Dec 6, 2016

Task execution in a SIMD processing unit with parallel groups of processing lanes

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,513,963
App. No.
14/573,397
Granted
Dec 6, 2016
Kind
B2
Abstract

A SIMD processing unit processes a plurality of tasks which each include up to a predetermined maximum number of work items. The work items of a task are arranged for executing a common sequence of instructions on respective data items. The data items are arranged into blocks, with some of the blocks including at least one invalid data item. Work items which relate to invalid data items are invalid work items. The SIMD processing unit comprises a group of processing lanes configured to execute instructions of work items of a particular task over a plurality of processing cycles. A control module assembles work items into the tasks based on the validity of the work items, so that invalid work items of the particular task are temporally aligned across the processing lanes. In this way the number of wasted processing slots due to invalid work items may be reduced.

Claims (18)

1. A single instruction multiple data (SIMD) processing unit configured to process a plurality of tasks, which each include up to a predetermined maximum number of work items, wherein some of the tasks comprise fewer than the predetermined maximum number of work items, and wherein the work items of a task are arranged for executing a common sequence of instructions on respective data items, the SIMD processing unit comprising:

a plurality of processing lanes divided into parallel groups, each group being configured to execute instructions of work items of a respective task over a plurality of processing cycles; and a logic module coupled to the groups of processing lanes configured to cause a particular group of processing lanes to skip a particular processing cycle, independently of the other groups of processing lanes, if there are no work items scheduled for execution in any of the processing lanes of the particular group in the particular processing cycle, wherein a condition resulting in having no work items being scheduled for execution in any of the processing lanes of the articular group in the particular processing cycle comprises a task including fewer than said maximum number of work items.

2. The SIMD processing unit of claim 1 wherein the data items are arranged into blocks of data items, the number of data items in each of the blocks of data items being equal to the number of processing lanes in each of the groups of processing lanes, and wherein for each of the groups, in each of the processing cycles, the processing lanes of the group are configured to execute instructions of work items relating to respective data items from a block of data items.

3. The SIMD processing unit of claim 2 wherein the data items are pixel values and wherein the block of data items is a pixel quad.

4. The SIMD processing unit of claim 1 wherein the data items are arranged into blocks of data items, and wherein for each of the groups, each of the processing lanes of the group is configured to execute instructions of work items relating to a respective block of data items over a plurality of consecutive processing cycles.

5. The SIMD processing unit of claim 4 wherein the data items are pixel values and wherein the block of data items is a pixel quad.

6. The SIMD processing unit of claim 1 wherein the data items are pixel values.

7. A method of using a single instruction multiple data (SIMD) processing unit to process a plurality of tasks which each include up to a predetermined maximum number of work items, wherein some of the tasks comprise fewer than the predetermined maximum number of work items, and wherein the work items of a task are arranged for executing a common sequence of instructions on respective data items, wherein the SIMD processing unit comprises a plurality of processing lanes divided into parallel groups, the method comprising:

executing, at each group of processing lanes, instructions of work items of a respective task over a plurality of processing cycles; and

causing a particular group of processing lanes to skip a particular processing cycle, independently of the other groups of processing lanes, if there are no work items scheduled for execution in any of the processing lanes of the particular group in the particular processing cycle, wherein a condition resulting in having no work items being scheduled for execution in any of the processing lanes of the particular group in the particular processing cycle comprises a task including fewer than said maximum number of work items.

8. The method of claim 7 wherein the data items are arranged into blocks of data items, the number of data items in each of the blocks of data items being equal to the number of processing lanes in each of the groups of processing lanes, and wherein for each of the groups, in each of the processing cycles, the processing lanes of the group execute instructions of work items relating to respective data items from a block of data items.

9. The method of claim 8 wherein the data items are pixel values and wherein the block of data items is a pixel quad.

10. The method of claim 7 wherein the data items are arranged into blocks of data items, and wherein for each of the groups, each of the processing lanes of the group executes instructions of work items relating to a respective block of data items over a plurality of consecutive processing cycles.

11. The method of claim 10 wherein the data items are pixel values and wherein the block of data items is a pixel quad.

12. The method of claim 7 wherein the data items are pixel values.

13. A non-transitory computer readable storage medium having stored thereon processor executable instructions that when executed cause at least one processor to generate a single instruction multiple data (SIMD) processing unit which is configured to process a plurality of tasks which each include up to a predetermined maximum number of work items, wherein some of the tasks comprise fewer than the predetermined maximum number of work items, and wherein the work items of a task are arranged for executing a common sequence of instructions on respective data items, the SIMD processing unit comprising:

a plurality of processing lanes divided into parallel groups, each group being configured to execute instructions of work items of a respective task over a plurality of processing cycles; and

a logic module coupled to the groups of processing lanes configured to cause a particular group of processing lanes to skip a particular processing cycle, independently of the other groups of processing lanes, if there are no work items scheduled for execution in any of the processing lanes of the particular group in the particular processing cycle, wherein a condition resulting in having no work items being scheduled for execution in any of the processing lanes of the particular group in the particular processing cycle comprises a task including fewer than said maximum number of work items.

Assignments (2)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 17, 2014
From: HOWSON, JOHN; REDSHAW, JONATHAN; FOO, YOONG CHERT
To: IMAGINATION TECHNOLOGIES LIMITED
Reel/Frame 034529/0595 →