IP Library › Granted Patent US 7,596,678
Granted Patent B2
US 7,596,678 · App. 10/689,257 · Granted Sep 29, 2009

Method of shifting data along diagonals in a group of processing elements to transpose the data

Assignee: Micron Technology, Inc.
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 7,596,678
App. No.
10/689,257
Granted
Sep 29, 2009
Kind
B2
Abstract

A transpose of data appearing in a plurality of processing elements comprises shifting the data along diagonals of the plurality of processing elements until the processing elements in the diagonal have received the data held by every other processing element in that diagonal. Shifting along diagonals can be accomplished by executing pairs of horizontal and vertical shifts in the x-y directions or pairs of shifts in perpendicular directions, e.g., x-z. Each processing element stores data as its final output data as a function of the processing element's position. In one embodiment, an initial count is either loaded into each processing element or calculated locally based on the processing element's location. The initial count may be given by one of the following expressions: (x+y+1)MOD(array size); (C+R+1)MOD(array size); (C+y+1); or MOD(array size); or (x+R+1)MOD(array size). Thereafter, the initial count is modified by a programmable amount at programmable intervals so that when the current count equals a desired or target value, the current data is selected as the final output data.

Claims (37)

1. A method for transposing data in a plurality of processing elements arranged in an NxN array, where N is greater than three, comprising;

shifting the data N-1 times along a plurality of diagonals of length N of the plurality of processing elements until each processing element in each of said plurality of diagonals has received the original data held by every other processing element in that diagonal; and

selecting data as final output data based on a processing element's position.

2. The method of claim 1 additionally comprising one of loading an initial count into each processing element and calculating an initial count locally based on the processing element's location, said selecting being responsive to said initial count.

3. The method of claim 2 wherein said initial count is given by one of the following expressions:

(x+y+1)MOD(N);

(C+R+1)MOD (N);

(C+y+1)MOD (N);or

(x+R+1)MOD (N);

where R and x are numbers indicating a row and a position in the row of a processing element and C and y are numbers indicating a column and a position in the column of a processing element, respectively.

4. The method of claim 2 additionally comprising maintaining a current count in each processing element, said current count being responsive to said initial count and the number of data shifts performed, said selecting being responsive to said current count.

5. The method of claim 4 wherein said maintaining a current count includes altering said initial count at programmable intervals by a programmable amount.

6. The method of claim 4 wherein said initial count is decremented in response to said shifting of data to produce said current count.

7. The method of claim 4 wherein said selecting occurs when said current count is non-positive.

8. The method of claim 1 additionally comprising maintaining a local count including setting a counter to a first known value, and counting up from said first known value based on the number of shifts that have been performed, said selecting occurring when a current count equals a target count.

9. The method of claim 1 wherein said shifting includes a combination of vertical and horizontal shifting.

10. The method of claim 1 wherein said shifting includes a combination of shifting in the x and z directions.

11. A method for transposing data in an array of processing elements, comprising:

shifting the data along a plurality of diagonals of length N in the array a number of times equal to N-1 where N equals the size of an edge of the array and is greater than three until each processing element in each of said plurality of diagonals has received the original data held by every other processing element in that diagonal; and

outputting data from each processing element as a function of that element's position in a diagonal.

12. The method of claim 11 additionally comprising one of loading an initial count into each processing element and calculating an initial count locally based on the processing element's position in a diagonal, said outputting being responsive to said initial count.

13. The method of claim 12 wherein said initial count is given by one of the following expressions:

(x+y+1) MOD (N);

(C+R+1) MOD (N);

(C+y+1) MOD (N); or

(x+R+1) MOD (N);

where R and x are numbers indicating a row and a position in the row of a processing element and C and y are numbers indicating a column and a position in the column of a processing element, respectively.

14. The method of claim 12 additionally comprising maintaining a current count in each processing element, said current count being responsive to said initial count and the number of data shifts performed, said outputting being responsive to said current count.

15. The method of claim 14 wherein said maintaining a current count includes altering said initial count at programmable intervals by a programmable amount.

16. The method of claim 14 wherein said initial count is decremented in response to said shifting of data to produce said current count.

17. The method of claim 16 wherein said outputting occurs when said current count is non-positive.

18. The method of claim 12 additionally comprising maintaining a local count including setting a counter to a first known value, and counting up from said first known value based on the number of shifts that have been performed, said outputting occurring when a current count equals a target count.

19. The method of claim 11 wherein said shifting includes a combination of vertical and horizontal shifting.

20. The method of claim 11 wherein said shifting includes a combination of shifting in perpendicular directions.

21. A computer readable memory device carrying an ordered set of instructions which, when executed, perform a method comprising:

shifting data N-1 times along a plurality of diagonals of length N of a plurality of processing elements in an NxN array where N is greater than three until each processing element in each of said plurality of diagonals has received the original data held by every other processing element in that diagonal; and

selecting data as final output data based on a processing element's position to produce a transposition of the data in the array.

Assignments (8)
RELEASE OF SECURITY INTEREST Recorded Nov 12, 2019
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
Reel/Frame 051028/0001 →
RELEASE OF SECURITY INTEREST Recorded Oct 9, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 050937/0001 →
RELEASE OF SECURITY INTEREST Recorded Aug 23, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 047243/0001 →
SECURITY INTEREST Recorded Jul 13, 2018
From: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 047540/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REPLACE ERRONEOUSLY FILED PATENT #7358718 WITH THE CORRECT PATENT #7358178 PREVIOUSLY RECORDED ON REEL 038669 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Jun 8, 2017
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 043079/0001 →
PATENT SECURITY AGREEMENT Recorded Jun 2, 2016
From: MICRON TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 038954/0001 →
SECURITY INTEREST Recorded May 12, 2016
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038669/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 20, 2003
From: BEAUMONT, MARK
To: MICRON TECHNOLOGY, INC.
Reel/Frame 014623/0873 →
Priority Claims (1)
GB 0309197.2 · Apr 23, 2003 · national
Continuity (1)
Related Publication 20040215683A1 · Oct 28, 2004