IP Library Granted Patent US 11,640,360
Granted Patent B1
US 11,640,360 · App. 17/584,001 · Granted May 2, 2023

Processing pipeline where fast data passes slow data

Inventors: Thomas E. Tkacik (Phoenix, AZ); Srdjan Coric (Winchester, MA)
Assignee: NXP B.V.
G06F12/1408G06F9/30079G06F9/30189G06F12/0891G06F12/1425G06F12/1466G06F13/1626G06F13/1673G06F15/7807
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 11,640,360
App. No.
17/584,001
Granted
May 2, 2023
Kind
B1
Abstract

Various embodiments relate to an inline encryption engine in a memory controller configured to process data read from a memory, including: a first data pipeline configured to receive data that is plaintext data and a first validity flag; a second data pipeline having the same length as the first data pipeline configured to: receive data that is encrypted data and a second validity flag; decrypt the encrypted data from the memory and output decrypted plaintext data; an output multiplexer configured to select and output data from either the first pipeline or the second pipeline; and control logic configured to control the output multiplexer, wherein the control logic is configured to output valid data from the first pipeline when the second pipeline does not have valid output decrypted plaintext data available.

Claims (60)

1. An inline encryption engine in a memory controller configured to process data read from a memory, comprising:

a first data pipeline configured to:

receive data that is encrypted data, an order tag of the encrypted data, and a first validity flag;

decrypt the encrypted data from the memory; and

output decrypted plaintext data;

a second data pipeline configured to receive data that is plaintext data, an order tag for the data, and a second validity flag, wherein the second data pipeline includes a buffer so that the second data pipeline has the same length as the first data pipeline;

an output multiplexer configured to select and output data from either the first pipeline or the second pipeline; and

control logic configured to control the output multiplexer, wherein the control logic is configured to output valid data from the second pipeline when the first pipeline does not have valid output decrypted plaintext data available.

2. The inline encryption engine of claim 1 , further comprising a key store and region context logic configured to provide a cryptographic key to the first pipeline based upon a region of the memory where the encrypted data is stored.

3. The inline encryption engine of claim 2 , wherein the key store and region context logic are further configured to select whether the first pipeline or the second pipeline receives data read from the memory.

4. The inline encryption engine of claim 1 , further comprising a third pipeline including a buffer so that the third data pipeline has the same length as the first data pipeline and the third pipeline configured to:

receive data that is encrypted data, an order tag for the data and a third validity flag;

decrypt the encrypted data from the memory; and

output decrypted plaintext data,

wherein an output multiplexer configured to select and output data from either the first pipeline, the second pipeline, or the third pipeline.

5. The inline encryption engine of claim 4 , wherein the control logic is configured to output valid data from the third pipeline when the first pipeline does not have valid output decrypted plaintext data available.

6. The inline encryption engine of claim 4 , wherein the control logic is configured to output valid received data from the second pipeline when the first pipeline and the third pipeline do not have valid output decrypted plaintext data available.

7. The inline encryption engine of claim 1 , further comprising:

a memory interface connected to an input of the inline encryption engine; and

a re-order buffer connected to the output of the inline encryption engine wherein the order tag identifies the out of order blocks of output data.

8. The inline encryption engine of claim 1 , wherein the order tag is a memory address.

9. An inline encryption engine in a memory controller configured to process data read from a memory, comprising:

a first-in-first-out buffer (FIFO) configured to receive the data read from the memory, a validity flag associated with the data, an address of the data, and a bypass flag associated with the data, wherein the bypass flag indicates whether the data is plaintext data or encrypted data;

a cryptographic pipeline configured to:

receive the data read from the memory; and

perform a cryptographic function on data from the memory;

a bypass multiplexer connected to each stage of the FIFO configured to output the data and the validity flag, bypass flag, and address associated with the data from a selected stage of the FIFO based upon a stage pointer;

an output multiplexer configured to select and output data from either the bypass multiplexor or the cryptographic pipeline based upon a first control signal; and

control logic configured to control the output multiplexer and the bypass multiplexer and to produce the stage pointer and the first control signal.

10. The inline encryption engine of claim 9 , further comprising a key store and region context logic configured to produce the bypass signal associated with the data based upon the region of the memory where the data is stored.

11. The inline encryption engine of claim 10 , wherein the key store and region context logic are further configured to provide a cryptographic key to the cryptographic pipeline based upon a region of the memory where the data is stored.

12. The inline encryption engine of claim 9 , wherein control logic produces the first control signal that indicates whether the output of the output multiplexer is from the cryptographic pipeline or the bypass multiplexor connected to the FIFO.

13. The inline encryption engine of claim 9 , wherein control logic includes a priority encoder configured to:

receive inputs based upon the bypass flag and validity flag from each stage of the FIFO; and

produce the stage pointer, wherein the stage pointer indicates the stage of the FIFO with received valid input data available to be output.

14. The inline encryption engine of claim 9 , wherein

the control logic is configured to produce a clear enable signal, and

the FIFO is configured to clear the validity flag of a stage indicated by the stage pointer based upon the clear enable signal.

15. The inline encryption engine of claim 9 , wherein the first control signal is based upon a bypass flag and a validity flag from the last stage of the FIFO and a stage pointer validity flag.

16. The inline encryption engine of claim 9 , further comprising:

a memory interface connected to an input of the inline encryption engine; and

a re-order buffer connected to the output of the inline encryption engine, wherein the address of the data is used as a tag to identify the out of order blocks of output data.

17. The inline encryption engine of claim 16 , further comprising a system on chip interface connected to the re-order buffer.

18. An inline encryption engine in a memory controller configured to process data read from a memory, comprising:

a first-in-first-out buffer (FIFO) with an output register configured to receive the data read from the memory, a validity flag associated with the data, an address of the data, and a bypass flag associated with the data, wherein

the bypass flag indicates whether the data is plaintext data or encrypted data, each stage of the FIFO includes:

a register;

a cryptographic logic connected to the register; and

a multiplexer that produces the output of the stage and receives inputs from the register and the cryptographic logic, wherein the output is selected based upon the bypass flag;

a bypass multiplexer connected to each stage of the FIFO configured to output the data and the validity flag, bypass flag, and address associated with the data from a selected stage of the FIFO based upon a stage pointer;

an output multiplexer configured to select and output data from either the bypass multiplexer or the FIFO based upon a first control signal; and

control logic configured to control the output multiplexer and the bypass multiplexer and to produce the stage pointer and the first control signal.

19. The inline encryption engine of claim 18 , further comprising a key store and region context logic configured to produce the bypass signal associated with the data based upon the region of the memory where the data is stored.

20. The inline encryption engine of claim 19 , wherein the key store and region context logic are further configured to provide a cryptographic key to the cryptographic logic based upon a region of the memory where the data is stored.

21. The inline encryption engine of claim 18 , wherein the first control signal that indicates whether the output of the output multiplexer is from the bypass multiplexor or the FIFO.

22. The inline encryption engine of claim 18 , wherein the stage pointer indicates the stage of the FIFO an earliest received valid input data is available to be output.

23. The inline encryption engine of claim 18 , further comprising:

a memory interface connected to an input of the inline encryption engine; and

a re-order buffer connected to the output of the inline encryption engine, wherein the address of the data is used as a tag to identify the out of order blocks of output data.

24. The inline encryption engine of claim 18 further comprising a system on chip interface connected to the re-order buffer.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE TITLE OF THE INVENTION ON ASSIGNMENT AND ASSIGNEE ON THE NOTICE OF RECORDATION PREVIOUSLY RECORDED AT REEL: 058865 FRAME: 0836. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 21, 2022
From: TKACIK, THOMAS; CORIC, SRDJAN
To: NXP B.V.
Reel/Frame 060362/0879 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 2, 2022
From: TKACIK, THOMAS E.; CORIC, SRDJAN
To: NXP SEMICONDUCTORS
Reel/Frame 058865/0836 →