IP Library Granted Patent US 10,171,232
Granted Patent B2
US 10,171,232 · App. 14/984,686 · Granted Jan 1, 2019

Flexible architecture and instruction for advanced encryption standard (AES)

Inventors: Shay Gueron (Haifa, IL); Wajdi K Feghali (Boston, MA); Vinodh Gopal (Westborough, MA); Raghunandan Makaram (Northborough, MA); Martin G Dixon (Portland, OR); Srinivas Chennupaty (Portland, OR); Michael E Kounavis (Portland, OR)
Assignee: Intel Corporation
H04L9/0631G06F3/0623G06F3/0665G06F3/0689G06F9/30007G06F9/30036G06F9/30047G06F9/30145G06F9/30178G06F9/3802G06F9/3818G06F9/3887G06F9/3895G06F12/0862G06F12/0875G06F12/1408G06F21/602G11C7/1072H04L9/0816H04L9/0861G06F2212/1052G06F2212/402G06F2212/452G06F2212/454G06F2212/602H04L2209/12H04L2209/24
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,171,232
App. No.
14/984,686
Granted
Jan 1, 2019
Kind
B2
Abstract

A flexible aes instruction set for a general purpose processor is provided. The instruction set includes instructions to perform a “one round” pass for aes encryption or decryption and also includes instructions to perform key generation. An immediate may be used to indicate round number and key size for key generation for 128/192/256 bit keys. The flexible aes instruction set enables full use of pipelining capabilities because it does not require tracking of implicit registers.

Claims (74)

1. A system comprising:

a processor comprising:

a plurality of cores;

a level 1 (L1) instruction cache to store a plurality of instructions, the plurality of instructions to include a plurality of Advanced Encryption Standard (AES) instructions of an instruction set of the processor that includes a Single Instruction Multiple Data (SIMD) instruction set, wherein the plurality of AES instructions include more than four but less than ten AES instructions including a first AES instruction for a final round of an AES encryption operation, a second AES instruction for a round of the AES encryption operation, a third AES instruction for a round of an AES decryption operation, and a fourth AES instruction for a final round of the AES decryption operation, and wherein the plurality of AES instructions each comprise a different opcode;

an L1 data cache;

instruction fetch logic to fetch instructions from the L1 instruction cache;

decode logic to decode instructions including the first AES instruction;

a microcode memory to store microcode;

a first 128-bit source register to store a round key to be used for the final round of the AES encryption operation;

a second 128-bit source register to store input data to be encrypted by the final round of the AES encryption operation;

a plurality of ports each associated with one or more corresponding execution resources to support parallel execution of integer and floating point operations;

an execution unit including AES execution logic to execute the first AES instruction to perform the final round of the AES encryption operation using microcode determined from the decode of the first AES instruction and obtained from the microcode memory, the final round of the AES encryption operation to use the round key from the first 128-bit source register to encrypt the input data from the second 128-bit source register, and to store a final encrypted result of the final round of the AES encryption operation in a 128-bit destination register,

wherein the final round of the AES encryption operation is to include:

a substitution operation to be performed on the input data, the substitution operation to use a substitution box (S-box) lookup to result in a first array of substituted data;

a Shift Rows transform to shift row data in the first array by a specified amount to generate a shift rows result; and

an Add Round Key transform in which an exclusive OR function is to use data from the round key and the shift rows result; and

a retirement unit

a memory controller to couple the processor to a dynamic random access memory (DRAM); and

an input/output (I/O) controller to couple the processor to one or more devices, the one or more devices to include one or more storage devices, wherein at least one of the one or more storage devices is to be coupled to the processor over at least one Serial Attached Small Computer System Interface (SAS).

2. The system of claim 1 , wherein the memory controller is a graphics memory controller.

3. The system of claim 1 , wherein the I/O controller is a storage I/O controller.

4. The system of claim 1 , the one of more devices to include at least one disk drive.

5. The system of claim 1 , the one or more devices to include at least one Digital Video Disk (DVD) drive.

6. The system of claim 1 , the one or more devices to include at least one network interface.

7. The system of claim 6 , wherein the at least one network interface is to be coupled to the processor to process data packets.

8. The system of claim 1 , the one or more devices to include at least one network interface controller (NIC).

9. The system of claim 8 , wherein the NIC is to be coupled to the processor to process data packets.

10. The system of claim 1 , wherein the one or more storage devices are to be arranged as a Redundant Array of Independent Disks (RAID).

11. The system of claim 1 , wherein the DRAM is Synchronized Dynamic Random Access Memory (SDRAM).

12. The system of claim 1 , wherein the DRAM is Double Data Rate (DDR) Random Access Memory.

13. The system of claim 1 , wherein the DRAM is Double Data Rate 2 (DDR2) Random Access Memory.

14. The system of claim 1 , wherein the DRAM is Rambus Dynamic Random Access Memory (RDRAM).

15. The system of claim 1 , wherein the DRAM is Double Data Rate (DDR) Random Access Memory.

16. A system comprising:

a processor comprising:

a level 1 (L1) instruction cache to store a plurality of instructions, the plurality of instructions to include a plurality of Advanced Encryption Standard (AES) instructions of an instruction set of the processor that includes a Single Instruction Multiple Data (SIMD) instruction set, wherein the plurality of AES instructions include more than four but less than ten AES instructions including a first AES instruction for a final round of an AES encryption operation, a second AES instruction for a round of the AES encryption operation, a third AES instruction for a round of an AES decryption operation, and a fourth AES instruction for a final round of the AES decryption operation, and wherein the plurality of AES instructions each comprise a different opcode;

an L1 data cache;

a decode unit to decode instructions including the first AES instruction;

a microcode memory to store microcode;

a first 128-bit source register to store a round key to be used for the final round of the AES encryption operation;

a second 128-bit source register to store input data to be encrypted by the final round of the AES encryption operation; and

a plurality of ports each associated with one or more corresponding execution resources to support parallel execution of integer and floating point operations;

an execution unit to perform the first AES instruction to perform the final round of the AES encryption operation using microcode determined from the decode of the first AES instruction and obtained from the microcode memory, the final round of the AES encryption operation to use the round key from the first 128-bit source register to encrypt the input data from the second 128-bit source register, and to store a final encrypted result of the final round of the AES encryption operation in a 128-bit destination register,

wherein the final round of the AES encryption operation is to include:

a substitution operation to be performed on the input data, the substitution operation to use a substitution box (S-box) lookup to result in a first array of substituted data;

a Shift Rows transform to shift row data in the first array by a specified amount to generate a shift rows result; and

an Add Round Key transform in which an exclusive OR function is to use data from the round key and the shift rows result; and

a retirement unit

a memory controller to couple the processor to a dynamic random access memory (DRAM); and

an input/output (I/O) controller to couple the processor to one or more devices.

17. The system of claim 16 , wherein the memory controller is a graphics memory controller.

18. The system of claim 16 , wherein the I/O controller is a storage I/O controller.

19. The system of claim 16 , the one of more devices to include at least one disk drive.

20. The system of claim 16 , the one or more devices to include at least one Digital Video Disk (DVD) drive.

21. The system of claim 16 , the one or more devices to include at least one network interface.

22. A system comprising:

a general purpose processor comprising:

a level 1 (L1) instruction cache to store a plurality of instructions, the plurality of instructions to include an Advanced Encryption Standard (AES) instruction of an instruction set of the general purpose processor that includes a Single Instruction Multiple Data (SIMD) instruction set, wherein the AES instruction has a bit with a value of one to indicate that encryption is to be performed instead of a value of zero which would indicate that decryption is to be performed;

an L1 data cache;

a decode unit to decode instructions including the AES instruction;

a microcode memory to store microcode;

a first 128-bit source register to store a round key to be used for a final round of an AES encryption operation;

a second 128-bit source register to store input data to be encrypted by the final round of the AES encryption operation;

a plurality of ports each associated with one or more corresponding execution resources to support parallel execution of integer and floating point operations;

an execution unit to perform the AES instruction to perform the final round of the AES encryption operation using microcode determined from the decode of the AES instruction and obtained from the microcode memory, the final round of the AES encryption operation to use the round key from the first 128-bit source register to encrypt the input data from the second 128-bit source register, and to store a final encrypted result of the final round of the AES encryption operation in a 128-bit destination register,

wherein the final round of the AES encryption operation is to include:

a substitution operation to be performed on the input data, the substitution operation to use a substitution box (S-box) lookup to result in a first array of substituted data;

a Shift Rows transform to shift row data in the first array by a specified amount to generate a shift rows result; and

an Add Round Key transform in which an exclusive OR function is to use data from the round key and the shift rows result; and

a retirement unit;

a memory controller to couple the general purpose processor to a dynamic random access memory (DRAM); and

an input/output (I/O) controller to couple the general purpose processor to one or more devices, the one or more devices to include one or more storage devices, wherein at least one of the one or more storage devices is to be coupled to the processor over at least one Serial Attached Small Computer System Interface (SAS).

23. The processor of claim 16 , wherein the execution unit is to have a different execution port to perform the first AES instruction than one or more other execution ports that are to be used for AES key scheduling operations.

24. The processor of claim 22 , wherein the execution unit is to have a different execution port to perform the first AES instruction than one or more other execution ports that are to be used for AES key scheduling operations.

Continuity (4)
Continuation 14572620 · Dec 16, 2014
Continuation 14014091 · Aug 29, 2013
Continuation 11729199 · Mar 28, 2007
Related Publication 20160119131A1 · Apr 28, 2016