IP Library Granted Patent US 12705092
Granted Patent B2
US 12705092 · App. 18/119,315 · Granted Aug 11, 2026

Highly parallel processing architecture with out-of-order resolution

Inventor: Peter Foley (Los Altos Hills, CA)
Assignee: Ascenium, Inc.
G06F9/4881G06F8/41
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 12705092
App. No.
18/119,315
Granted
Aug 11, 2026
Kind
B2
Abstract

Techniques for task processing based on a highly parallel processing architecture with out-of-order resolution 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. The array of compute elements is coupled to supporting logic and to memory, which, along with the array of compute elements, comprise compute hardware. A set of directions is provided to the hardware, through a control word generated by the compiler, for compute element operation. The set of directions is augmented with data access ordering information. The data access ordering is performed by the hardware. A compiled task is executed on the array of compute elements, based on the set of directions that was augmented.

Claims (36)

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

accessing a two-dimensional 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, and wherein the array of compute elements is coupled to supporting logic and to memory, which together with the array of compute elements comprises compute hardware;

providing a set of directions to the hardware, through a control word generated by the compiler, for compute element operation;

augmenting the set of directions with data access ordering information, wherein data access ordering is performed by the compute hardware, wherein the ordering information includes ordering information for a single architectural cycle, wherein the single architectural cycle contains multiple compute element operations; and

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

2 . The method of claim 1 wherein the ordering information includes ordering information for load and/or store operations.

3 . The method of claim 2 wherein the load and/or store operations read and/or write data to the memory.

4 . The method of claim 2 wherein the load and/or store ordering information enables the hardware to detect data access hazards.

5 . The method of claim 4 wherein the data access hazards include write-after-read, read-after-write, and write-after-write conflicts.

6 . The method of claim 4 further comprising resolving a data access hazard that was detected.

7 . The method of claim 6 wherein the resolving includes delaying loads and/or stores.

8 . The method of claim 7 wherein data for the load and/or store is held in buffers.

9 . The method of claim 8 wherein the data held in buffers is committed after the data access hazard detection and mitigation window has expired.

10 . The method of claim 2 wherein the load and/or store operations involve a temporal distance of more than one architectural cycle.

11 . The method of claim 10 further comprising using local buffers to delay commitment of data for the load and/or store operations.

12 . The method of claim 11 wherein the data for load operations is read from the memory.

13 . The method of claim 11 wherein the data for store operations is written to the memory.

14 . The method of claim 1 wherein the compute hardware ensures semantic correctness of operations to the memory.

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

16 . The method of claim 15 wherein the ordering of memory data enables compute element result sequencing.

17 . The method of claim 1 wherein the control word specifies operations for the array of compute elements.

18 . The method of claim 17 wherein the operations are specified on a physical cycle-by-cycle basis.

19 . The method of claim 18 wherein the physical cycle-by-cycle basis comprises an architectural cycle.

20 . The method of claim 1 wherein the data access ordering information is generated by the hardware during runtime.

21 . 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 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, and wherein the array of compute elements is coupled to supporting logic and to memory, which together with the array of compute elements comprises compute hardware;

providing a set of directions to the hardware, through a control word generated by the compiler, for compute element operation;

augmenting the set of directions with data access ordering information, wherein data access ordering is performed by the compute hardware, wherein the ordering information includes ordering information for a single architectural cycle, wherein the single architectural cycle contains multiple compute element operations; and

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

22 . 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 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, and wherein the array of compute elements is coupled to supporting logic and to memory, which together with the array of compute elements comprises compute hardware;

provide a set of directions to the hardware, through a control word generated by the compiler, for compute element operation;

augment the set of directions with data access ordering information, wherein data access ordering is performed by the compute hardware, wherein the ordering information includes ordering information for a single architectural cycle, wherein the single architectural cycle contains multiple compute element operations; and

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