IP Library Granted Patent US 10,531,030
Granted Patent B2
US 10,531,030 · App. 16/448,931 · Granted Jan 7, 2020

Block operations for an image processor having a two-dimensional execution lane array and a two-dimensional shift register

Inventors: Albert Meixner (Mountain View, CA); Daniel Frederic Finchelstein (Redwood City, CA); David Patterson (Kensington, CA); William R. Mark (Mountain View, CA); Jason Rupert Redgrave (Mountain View, CA); Ofer Shacham (Los Altos, CA)
Assignee: Google LLC
H04N5/3742G06F5/015G06F12/0207G06F17/16G06T1/20H04N5/341
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,531,030
App. No.
16/448,931
Granted
Jan 7, 2020
Kind
B2
Abstract

A method is described that includes, on an image processor having a two dimensional execution lane array and a two dimensional shift register array, repeatedly shifting first content of multiple rows or columns of the two dimensional shift register array and repeatedly executing at least one instruction between shifts that operates on the shifted first content and/or second content that is resident in respective locations of the two dimensional shift register array that the shifted first content has been shifted into.

Claims (38)

1. A processor comprising:

multiple shift-register planes, wherein each shift-register plane comprises a respective two-dimensional shift-register array having multiple shift-registers, and

a two-dimensional array of processing elements, wherein each shift-register of each shift-register plane is dedicated to a respective processing element in the two-dimensional array of processing elements, and wherein each processing element is configured to read from and write to multiple dedicated shift-registers belonging to different shift-register planes,

wherein the processor is configured to execute instructions to perform an accumulation operation that sums all values stored in a row or column of a first shift-register plane of the multiple shift-register planes, wherein the instructions cause the processor to perform multiple iterations until a current shift amount reaches a maximum value, wherein each iteration causes the processor to perform operations comprising:

executing, by each processing element of the two-dimensional array of processing elements, one or more first instructions that reference shift-registers belonging to two different shift-register planes that when executed cause the processing element to compute a respective sum of values stored in the different shift-register planes and to store the respective sum of values in respective dedicated shift-registers belonging to two different shift-register planes,

executing, by each processing element of the two-dimensional array of processing elements, one or more second instructions that reference the current shift amount for a current iteration, wherein the one or more second instructions when executed by the two-dimensional array of processing elements cause a first shift-register plane of the two different shift-register planes to shift data by the current shift amount represented in the one or more second instructions, and

doubling the current shift amount.

2. The processor of claim 1 , wherein the one or more second instructions comprise a shift instruction having an operand representing the current shift amount.

3. The processor of claim 2 , wherein the shift instruction comprises direction and magnitude operands.

4. The processor of claim 2 , wherein the one or more first instructions comprise at least one data store instruction having one or more operands representing respective locations of respective shift-registers in the multiple shift-register planes as respective (X,Y) coordinates.

5. The processor of claim 2 , wherein the values stored in the different shift-register planes represent respective pixels of an image.

6. The processor of claim 1 , wherein the one or more first instructions comprise a first instruction that stores data in a second shift-register plane of the two different shift-register planes, and wherein the one or more second instructions comprise a second instruction that shifts data in only the first shift-register plane.

7. The processor of claim 1 , wherein data in a second shift-register plane of the two different shift-register planes remains in place while data in the first shift-register plane is shifted.

8. The processor of claim 1 , wherein the one or more second instructions when executed by the two-dimensional array of processing elements further cause the second shift-register plane to shift data by the current shift amount by shifting the data from a first end of the respective two-dimensional shift-register array of the second shift-register plane, to a second end of the respective two-dimensional shift-register array.

9. The processor of claim 1 , wherein the one or more second instructions comprise multiple shift instructions that collectively shift data by the current shift amount for a particular iteration.

10. The processor of claim 1 , wherein the one or more first instructions comprise at least one data load instruction having one or more operands representing respective locations of respective shift-registers in the multiple shift-register planes as respective (X,Y) coordinates.

11. A method performed by a processor comprising:

multiple shift-register planes, wherein each shift-register plane comprises a respective two-dimensional shift-register array having multiple shift-registers, and

a two-dimensional array of processing elements, wherein each shift-register of each shift-register plane is dedicated to a respective processing element in the two-dimensional array of processing elements, and wherein each processing element is configured to read from and write to multiple dedicated shift-registers belonging to different shift-register planes,

wherein the method, when performed by the processor, causes the processor to execute instructions to perform an accumulation operation that sums all values stored in a row or column of a first shift-register plane of the multiple shift-register planes, wherein the instructions cause the processor to perform multiple iterations until a current shift amount reaches a maximum value, wherein each iteration causes the processor to perform operations comprising:

executing, by each processing element of the two-dimensional array of processing elements, one or more first instructions that reference shift-registers belonging to two different shift-register planes that when executed cause the processing element to compute a respective sum of values stored in the different shift-register planes and to store the respective sum of values in respective dedicated shift-registers belonging to two different shift-register planes,

executing, by each processing element of the two-dimensional array of processing elements, one or more second instructions that reference the current shift amount for a current iteration, wherein the one or more second instructions when executed by the two-dimensional array of processing elements cause a first shift-register plane of the two different shift-register planes to shift data by the current shift amount represented in the one or more second instructions, and

doubling the current shift amount.

12. The processor of claim 11 , wherein the one or more second instructions comprise a shift instruction having an operand representing the current shift amount.

13. The processor of claim 12 , wherein the shift instruction comprises direction and magnitude operands.

14. The processor of claim 12 , wherein the one or more first instructions comprise at least one data store instruction having one or more operands representing respective locations of respective shift-registers in the multiple shift-register planes as respective (X,Y) coordinates.

15. The processor of claim 12 , wherein the values stored in the different shift-register planes represent respective pixels of an image.

16. The processor of claim 11 , wherein the one or more first instructions comprise a first instruction that stores data in a second shift-register plane of the two different shift-register planes, and wherein the one or more second instructions comprise a second instruction that shifts data in only the first shift-register plane.

17. The processor of claim 11 , wherein data in a second shift-register plane of the two different shift-register planes remains in place while data in the first shift-register plane is shifted.

18. The processor of claim 11 , wherein the one or more second instructions when executed by the two-dimensional array of processing elements further cause the second shift-register plane to shift data by the current shift amount by shifting the data from a first end of the respective two-dimensional shift-register array of the second shift-register plane, to a second end of the respective two-dimensional shift-register array.

19. The processor of claim 11 , wherein the one or more second instructions comprise multiple shift instructions that collectively shift data by the current shift amount for a particular iteration.

20. A computer program product encoded on one or more non-transitory computer storage media, comprising instructions that when executed by a processor comprising:

multiple shift-register planes, wherein each shift-register plane comprises a respective two-dimensional shift-register array having multiple shift-registers, and

a two-dimensional array of processing elements, wherein each shift-register of each shift-register plane is dedicated to a respective processing element in the two-dimensional array of processing elements, and wherein each processing element is configured to read from and write to multiple dedicated shift-registers belonging to different shift-register planes,

cause the processor to execute instructions to perform an accumulation operation that sums all values stored in a row or column of a first shift-register plane of the multiple shift-register planes, wherein the instructions cause the processor to perform multiple iterations until a current shift amount reaches a maximum value, wherein each iteration causes the processor to perform operations comprising:

executing, by each processing element of the two-dimensional array of processing elements, one or more first instructions that reference shift-registers belonging to two different shift-register planes that when executed cause the processing element to compute a respective sum of values stored in the different shift-register planes and to store the respective sum of values in respective dedicated shift-registers belonging to two different shift-register planes,

executing, by each processing element of the two-dimensional array of processing elements, one or more second instructions that reference the current shift amount for a current iteration, wherein the one or more second instructions when executed by the two-dimensional array of processing elements cause a first shift-register plane of the two different shift-register planes to shift data by the current shift amount represented in the one or more second instructions, and

doubling the current shift amount.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 12, 2019
From: MEIXNER, ALBERT; FINCHELSTEIN, DANIEL FREDERIC; PATTERSON, DAVID; MARK, WILLIAM R.; REDGRAVE, JASON RUPERT; SHACHAM, OFER
To: GOOGLE LLC
Reel/Frame 050022/0921 →
CHANGE OF NAME Recorded Aug 12, 2019
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 050022/0942 →
Continuity (4)
Continuation 15946095 · Apr 5, 2018
Division 15628527 · Jun 20, 2017
Continuation 15201237 · Jul 1, 2016
Related Publication 20190327437A1 · Oct 24, 2019