IP Library › Granted Patent US 10,372,456
Granted Patent B2
US 10,372,456 · App. 15/604,301 · Granted Aug 6, 2019

Tensor processor instruction set architecture

Inventors: Jeremy Halden Fowers (Seattle, WA); Kalin Ovtcharov (Issaquah, WA); Steven Karl Reinhardt (Vancouver, WA); Eric Sen Chung (Woodinville, WA); Ming Gang Liu (Seattle, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F9/3016G06F9/3012G06F9/30036G06F9/30076G06F9/30098G06F9/30123G06F9/30163G06F9/3828G06F9/3836G06F9/3893G06F17/16G06N3/063
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,372,456
App. No.
15/604,301
Granted
Aug 6, 2019
Kind
B2
Abstract

A hardware accelerator having an efficient instruction set is disclosed. An apparatus may comprise logic configured to access a first and a second machine instruction. The second machine instruction may be missing a tensor operand needed to execute the second machine instruction. The logic may be further configured to execute the first machine instruction, resulting in a tensor. The logic may be further configured to execute the second machine instruction using the resultant tensor as the missing tensor operand.

Claims (63)

1. An apparatus comprising:

a first tensor operation calculator that is configured to execute a first tensor operation;

a second, different tensor operation calculator that is configured to execute a second tensor operation differing from the first tensor operation; and

logic configured to:

access a first machine instruction in a set of machine instructions;

access a second machine instruction in the set of machine instructions, wherein the second machine instruction is missing a tensor operand needed to execute the second machine instruction;

execute the first machine instruction in the first tensor operation calculator, resulting in a tensor;

route, based on the second machine instruction having the missing tensor operand, the resultant tensor from the first tensor operation calculator to the second tensor operation calculator for use as the missing tensor operand; and

execute the second machine instruction using the resultant tensor as the missing tensor operand.

2. The apparatus of claim 1 , wherein the logic is configured to use a resultant tensor of executing the second machine instruction to execute a third machine instruction immediately following the second machine instruction in response to the third machine instruction missing a tensor operand needed to execute the third machine instruction.

3. The apparatus of claim 1 ,

wherein the second machine instruction is for a tensor operation between at least a first tensor and a second tensor, wherein the second machine instruction at least partially specifies the second tensor but does not specify the first tensor;

wherein the logic is configured to route the resultant tensor from executing the first machine instruction in the first tensor operation calculator to the second tensor operation calculator for use as the first tensor and to use the tensor at least partially specified in the second machine instruction as the second tensor.

4. The apparatus of claim 1 , wherein the logic is further configured to:

access a third machine instruction in the set of machine instructions, wherein the third machine instruction is at an end of the set and instructs to store a tensor to memory but does not specify the tensor; and

store to memory a final tensor, resulting from the executing the second machine instruction, as the unspecified tensor.

5. The apparatus of claim 1 , wherein the logic is further configured to:

access a third machine instruction, the third machine instruction being for a first type of tensor operation, of a plurality of types of tensor operations, wherein the third machine instruction does not specify a first tensor operand and only partially specifies a second tensor; and

access a tensor register file that is implied by the first type of tensor operation in order to access the second tensor operand.

6. The apparatus of claim 1 , wherein the logic is further configured to:

decode the second machine instruction to determine a type of tensor operation instructed by the second machine instruction and an index;

select the second tensor operation calculator to perform the type of tensor operation instructed by the second machine instruction; and

based on the index, provide a tensor from a tensor register file that is dedicated to the second tensor operation calculator as a tensor input for executing the second machine instruction.

7. The apparatus of claim 1 , wherein the logic is configured to:

alter a native size of tensor operations executed in the apparatus based on a tiling factor associated with the set of machine instructions.

8. A method of executing machine instructions in a tensor processor, comprising:

accessing a first machine instruction in a chain of machine instructions;

accessing a second machine instruction in the chain of machine instructions, wherein the second machine instruction is missing a tensor operand needed to execute the second machine instruction;

executing the first machine instruction by a first tensor operation calculator in the tensor processor to result in a resultant tensor

routing the resultant tensor from the first tensor operation calculator to a second tensor operation calculator in the tensor processor for use as the missing tensor operand without intermediate storage of the resultant tensor; and

executing the second machine instruction by the second tensor operation calculator in the tensor processor using the resultant tensor as the missing tensor operand.

9. The method of claim 8 , further comprising using logic in the tensor processor, to select, by default, a resultant tensor, from executing one machine instruction in the chain, as an input tensor to execute the next machine instruction in the chain.

10. The method of claim 8 , further comprising:

executing the second machine instruction by the second tensor operation calculator using a tensor at least partially specified in the second machine instruction as a first tensor and the resultant tensor as a second tensor in a tensor operation.

11. The method of claim 8 , wherein executing the first machine instruction by the first tensor operation calculator in the tensor processor to result in the resultant tensor comprises loading an initial tensor into a tensor register file in the tensor processor.

12. The method of claim 11 , further comprising:

routing the tensor from the tensor register file to the second tensor operation calculator in the tensor processor for use as the missing tensor operand without intermediate storage of the resultant tensor.

13. The method of claim 8 , further comprising:

storing a final tensor, resulting from the execution of the second machine instruction, to memory external to the tensor processor.

14. The method of claim 8 , further comprising:

altering a native size of tensor operations in the tensor processor based on a tiling factor specified in the chain of machine instructions.

15. An apparatus comprising:

a tensor register file;

a tensor operation calculator that is configured to execute a tensor operation; and

logic configured to:

access a first machine instruction in a set of machine instructions, the first machine instruction being an instruction to load an initial tensor at a start of the set of machine instructions;

access a second machine instruction in the set of machine instructions, wherein the second machine instruction is missing a tensor operand needed to execute the second machine instruction;

execute the first machine instruction to load the initial tensor into the tensor register file;

route the initial tensor from the tensor register file to the tensor operation calculator for use as the missing tensor operand without intermediate storage of the initial tensor; and

execute the second machine instruction using the initial tensor as the missing tensor operand.

16. The apparatus of claim 15 , wherein the logic is configured to use a resultant tensor of executing the second machine instruction to execute a third machine instruction immediately following the second machine instruction in response to the third machine instruction missing a tensor operand needed to execute the third machine instruction.

17. The apparatus of claim 15 , wherein the logic is further configured to:

access a third machine instruction in the set of machine instructions, wherein the third machine instruction is at an end of the set and instructs to store a tensor to memory but does not specify the tensor; and

store to memory a final tensor, resulting from the executing the second machine instruction, as the unspecified tensor.

18. The apparatus of claim 15 , wherein the logic is further configured to:

access a third machine instruction, the third machine instruction being for a first type of tensor operation, of a plurality of types of tensor operations, wherein the third machine instruction does not specify a first tensor operand and only partially specifies a second tensor; and

access a tensor register file that is implied by the first type of tensor operation in order to access the second tensor operand.

19. The apparatus of claim 15 , wherein the logic is further configured to:

decode the second machine instruction to determine a type of tensor operation instructed by the second machine instruction and an index;

select the second tensor operation calculator to perform the type of tensor operation instructed by the second machine instruction; and

based on the index, provide a tensor from a tensor register file that is dedicated to the second tensor operation calculator as a tensor input for executing the second machine instruction.

20. The apparatus of claim 15 , wherein the logic is configured to:

alter a native size of tensor operations executed in the apparatus based on a tiling factor associated with the set of machine instructions.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 25, 2017
From: FOWERS, JEREMY HALDEN; OVTCHAROV, KALIN; REINHARDT, STEVEN KARL; CHUNG, ERIC SEN; LIU, MING GANG
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 042510/0609 →
Continuity (1)
Related Publication 20180341484A1 · Nov 29, 2018
Cited By (2)
US 12,190,243 US 12,361,268