IP Library Granted Patent US 10,997,102
Granted Patent B2
US 10,997,102 · App. 16/991,080 · Granted May 4, 2021

Multidimensional address generation for direct memory access

Inventors: David John Simpson (San Jose, CA); Richard Douglas Trauben (Morgan Hill, CA); Stephen Curtis Johnson (Morgan Hill, CA)
Assignee: Wave Computing, Inc.
G06F13/28
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 10,997,102
App. No.
16/991,080
Granted
May 4, 2021
Kind
B2
Abstract

Techniques for data manipulation using processor cluster address generation are disclosed. One or more processor clusters capable of executing software-initiated work requests are accessed. A direct memory access (DMA) engine, coupled to the one or more processor clusters, is configured, wherein the DMA engine employs address generation across a plurality of tensor dimensions. A work request address field is parsed, where the address field contains unique address space descriptors for each of the plurality of dimensions, along with a common address space descriptor. DMA addresses are generated based on the unique address space descriptors and the common address space descriptor. Memory using two or more of the DMA addresses that were generated is accessed, where the two or more DMA addresses enable processing within the one or more processor clusters.

Claims (40)

1. A processor-implemented method for data manipulation comprising:

accessing one or more processor clusters capable of executing software-initiated work requests;

configuring a direct memory access (DMA) engine coupled to the one or more processor clusters, wherein the DMA engine employs address generation across a plurality of tensor dimensions;

parsing a work request address field, wherein the address field contains unique address space descriptors for each of the plurality of dimensions, along with a common address space descriptor;

generating DMA addresses, based on the unique address space descriptors and the common address space descriptor; and

accessing memory, using two or more of the DMA addresses that were generated, wherein the two or more DMA addresses enable processing within the one or more processor clusters.

2. The method of claim 1 further comprising summing across the plurality of dimensions to generate a single address.

3. The method of claim 1 wherein the plurality of dimensions includes four dimensions.

4. The method of claim 3 wherein the plurality of dimensions does not include channels.

5. The method of claim 4 further comprising summing across channels as part of a convolutional operation.

6. The method of claim 1 wherein the generating comprises establishing five programming loops to accomplish five-dimensional (5-D) address generation.

7. The method of claim 6 wherein the 5-D address is a portion of a larger dimensional address.

8. The method of claim 6 wherein the innermost dimension is defined by hardware.

9. The method of claim 8 wherein the dimensions are ordered by dimension size in the tensor.

10. The method of claim 1 wherein the unique address space descriptors and the common address space descriptor comprise a 256-bit field.

11. The method of claim 1 wherein the common address space descriptor includes a base address field, a dimensions field, and an element size field.

12. The method of claim 11 wherein the common address space descriptor comprises a 69-bit field.

13. The method of claim 1 wherein a first address space descriptor of the unique address space descriptors includes a count field and a stride field.

14. The method of claim 13 wherein the first address space descriptor comprises a 35-bit field.

15. The method of claim 13 wherein second, third, fourth, and fifth address space descriptors of the unique address space descriptors each includes an offset field and a count field.

16. The method of claim 15 wherein the second, third, fourth, and fifth address space descriptors each comprise a 38-bit field.

17. The method of claim 1 wherein DMA memory source and destination addresses comprise a 5-dimensional descriptor.

18. The method of claim 17 wherein the 5-dimensional descriptor enables processing of a flattened tensor.

19. The method of claim 17 wherein the 5-dimensional descriptor includes tensor strides and offsets.

20. The method of claim 1 further comprising flattening a plurality of dimensions from a tensor into a single dimension.

21. The method of claim 20 wherein the DMA engine is further configured to employ address generation across the plurality of dimensions that were flattened into a single dimension.

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

accessing one or more processor clusters capable of executing software-initiated work requests;

configuring a direct memory access (DMA) engine coupled to the one or more processor clusters, wherein the DMA engine employs address generation across a plurality of tensor dimensions;

parsing a work request address field, wherein the address field contains unique address space descriptors for each of the plurality of dimensions, along with a common address space descriptor;

generating DMA addresses, based on the unique address space descriptors and the common address space descriptor; and

accessing memory, using two or more of the DMA addresses that were generated, wherein the two or more DMA addresses enable processing within the one or more processor clusters.

23. A computer system for data manipulation 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 one or more processor clusters capable of executing software-initiated work requests;

configure a direct memory access (DMA) engine coupled to the one or more processor clusters, wherein the DMA engine employs address generation across a plurality of tensor dimensions;

parse a work request address field, wherein the address field contains unique address space descriptors for each of the plurality of dimensions, along with a common address space descriptor;

generate DMA addresses, based on the unique address space descriptors and the common address space descriptor; and

access memory, using two or more of the DMA addresses that were generated, wherein the two or more DMA addresses enable processing within the one or more processor clusters.

Assignments (5)
CHANGE OF NAME Recorded May 8, 2024
From: WAVE COMPUTING, INC.
To: MIPS HOLDING, INC.
Reel/Frame 067355/0324 →
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 →
Continuity (16)
Continuation In Part 16943252 · Jul 30, 2020
Continuation In Part 16835812 · Mar 31, 2020
Provisional Application 62907907 · Sep 30, 2019
Provisional Application 62898770 · Sep 11, 2019
Provisional Application 62898114 · Sep 10, 2019
Provisional Application 62894002 · Aug 30, 2019
Provisional Application 62893970 · Aug 30, 2019
Provisional Application 62887722 · Aug 16, 2019
Provisional Application 62887713 · Aug 16, 2019
Provisional Application 62882175 · Aug 2, 2019
Provisional Application 62874022 · Jul 15, 2019
Provisional Application 62857925 · Jun 6, 2019
Provisional Application 62856490 · Jun 3, 2019
Provisional Application 62850059 · May 20, 2019
Provisional Application 62827333 · Apr 1, 2019
Related Publication 20200371978A1 · Nov 26, 2020