IP Library Patent Application 17526003
Patent Application
App. No. 17/526,003

HIGHLY PARALLEL PROCESSING ARCHITECTURE WITH COMPILER

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 None
App. No.
17/526,003
Abstract

Techniques for task processing using a highly parallel processing architecture with a compiler are disclosed. A two-dimensional array of compute elements is accessed. Each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. A set of directions is provided to the hardware, through a control word generated by the compiler, for compute element operation and memory access precedence. The set of directions enables the hardware to properly sequence compute element results. The set of directions controls data movement for the array of compute elements. A compiled task is executed on the array of compute elements, based on the set of directions. The compute element results are generated in parallel in the array, and the compute element results are ordered independently from control word arrival at each compute element.

Claims (43)

1 . A processor-implemented method for task processing comprising:

accessing a two-dimensional (2D) array of compute elements, wherein each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements;

providing a set of directions to the 2D array of compute elements, through a control word generated by the compiler, for compute element operation and memory access precedence, wherein the set of directions enables the 2D array of compute elements to properly sequence compute element results; and

executing a compiled task on the array of compute elements, based on the set of directions.

2 . The method of claim 1 wherein the compute element results are generated in parallel in the array of compute elements.

3 . The method of claim 1 wherein the compute element results are ordered independently from control word arrival at each compute element within the array of compute elements.

4 . The method of claim 1 wherein the set of directions controls data movement for the array of compute elements.

5 . The method of claim 4 wherein the data movement includes loads and stores with a memory array.

6 . The method of claim 4 wherein the data movement includes intra-array data movement.

7 . The method of claim 1 wherein the memory access precedence enables ordering of memory data.

8 . The method of claim 7 wherein the ordering of memory data enables compute element result sequencing.

9 . The method of claim 1 wherein the set of directions controls the array of compute elements on a cycle-by-cycle basis.

10 . The method of claim 9 wherein the cycle-by-cycle basis is enabled by a stream of wide, variable length, microcode control words generated by the compiler.

11 . The method of claim 9 wherein the cycle-by-cycle basis comprises an architectural cycle.

12 . The method of claim 9 wherein the compiler provides, via the control word, valid bits for each column of the array of compute elements, on the cycle-by-cycle basis.

13 . The method of claim 12 wherein the valid bits indicate a valid memory load access is emerging from the array.

14 . The method of claim 9 wherein the compiler provides, via the control word, operand size information for each column of the array of compute elements.

15 . (canceled)

16 . The method of claim 1 wherein the set of directions controls code conditionality for the array of compute elements.

17 . The method of claim 16 wherein the conditionality determines code jumps.

18 . The method of claim 16 wherein the conditionality is established by a control unit.

19 . (canceled)

20 . The method of claim 1 wherein the set of directions enables simultaneous execution of two or more potential compiled task outcomes.

21 . (canceled)

22 . The method of claim 20 wherein the two or more potential compiled task outcomes are controlled by a same control word.

23 . The method of claim 22 wherein the same control word is executed on a given cycle across the array of compute elements.

24 . The method of claim 23 wherein the two or more potential compiled task outcomes are executed on spatially separate compute elements within the array of compute elements.

25 - 26 . (canceled)

27 . The method of claim 1 wherein the set of directions includes a spatial allocation of subtasks on one or more compute elements within the array of compute elements.

28 . The method of claim 1 wherein the set of directions includes scheduling computation in the array of compute elements.

29 . The method of claim 28 wherein the computation includes compute element placement, results routing, and computation wavefront propagation within the array of compute elements.

30 . The method of claim 1 wherein the set of directions enables multiple programming loop instances circulating within the array of compute elements.

31 - 34 . (canceled)

35 . A computer program product embodied in a non-transitory computer readable medium for task processing, the computer program product comprising code which causes one or more processors to perform operations of:

accessing a two-dimensional (2D) array of compute elements, wherein each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements;

providing a set of directions to the 2D array of compute elements, through a control word generated by the compiler, for compute element operation and memory access precedence, wherein the set of directions enables the 2D array of compute elements to properly sequence compute element results; and

executing a compiled task on the array of compute elements, based on the set of directions.

36 . A computer system for task processing comprising:

a memory which stores instructions;

one or more processors coupled to the memory, wherein the one or more processors, when executing the instructions which are stored, are configured to:

access a two-dimensional (2D) array of compute elements, wherein each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements;

provide a set of directions to the 2D array of compute elements, through a control word generated by the compiler, for compute element operation and memory access precedence, wherein the set of directions enables the 2D array of compute elements to properly sequence compute element results; and

execute a compiled task on the array of compute elements, based on the set of directions.