IP Library › Granted Patent US 9,325,492
Granted Patent B2
US 9,325,492 · App. 12/660,952 · Granted Apr 26, 2016

Method for increasing I/O performance in systems having an encryption co-processor

Inventor: Kurt Godwin (Loveland, CO)
Assignee: STMICROELECTRONICS, INC.
H04L9/00
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 9,325,492
App. No.
12/660,952
Granted
Apr 26, 2016
Kind
B2
Abstract

A system and method for improving performance while transferring encrypted data in an input/output (I/O) operation are provided. The method includes receiving a block of data. The method also includes dividing the block of data into a plurality of sub-blocks of data. The method further includes performing a first operation on a first sub-block. The method also includes performing a second operation on a second sub-block at substantially the same time as performing the first operation on the first sub-block. The method still further includes reassembling the plurality of sub-blocks into the block of data.

Claims (42)

1. A method for transferring encrypted data in an input/output (I/O) operation, the method comprising:

receiving a block of data to be transferred between a local data storage device and a local host memory;

dividing the block of data within a data splitting engine into an “N” number of interleaved sub-blocks of data based on performance capabilities of the encryption processor and its interrupt processing time;

performing a data transfer operation sequentially on the “N” sub-blocks of data, the data transfer operation comprising operations preceding and including a frame information structure (FIS) being received at the local data storage device;

performing a data encryption or decryption operation at an encryption processor on the “N” sub-blocks of data, at least a portion of the data transfer operation on a sub-block of data being performed concurrently with at least a portion of the data encryption or decryption operation performed on a next sequential sub-block of data within the encryption processor;

changing the value of “N” based on performance metrics of the sub-blocks of data;

reassembling the “N” number of interleaved sub-blocks of data into the block of data; and

storing the reassembled block of data at the local host memory.

2. The method of claim 1 , wherein the data transfer operation further comprises a scatter/gather operation and a FIS construction operation associated with the local data storage device.

3. The method of claim 2 , wherein the data encryption or decryption operation comprises queuing the next sequential sub-block of data to the encryption processor.

4. The method of claim 3 , wherein the local data storage device comprises a hard disk drive coupled to the host memory.

5. The method of claim 1 , wherein the data is transferred to or from a network device.

6. The method of claim 1 , wherein the “N” number of interleaved sub-blocks of data is dynamically adjusted.

7. The method of claim 1 , wherein the encryption processor comprises an encryption co-processor.

8. A system for transferring encrypted data in an input/output (I/O) operation, the system comprising:

a data splitting engine configured to:

receive a block of data to be transferred between a local data storage device and a local host memory,

divide the block of data into an “N” number of interleaved sub-blocks of data, and

reassemble the “N” number of interleaved sub-blocks of data into the block of data;

a processor configured to perform a data transfer operation sequentially on the “N” sub-blocks of data, the data transfer operation comprising operations preceding and including a frame information structure (FIS) being received at the local storage device;

an encryption processor in communication with the processor, the encryption processor configured to perform a data encryption or decryption operation on the “N” sub-blocks of data, wherein at least a portion of the data encryption or decryption operation on a sub-block of data is performed concurrently with at least a portion of the data transfer operation performed on a next sequential sub-block of data in the sequence;

wherein the data splitting engine is configured to change the value of “N” based on performance metrics of the sub-blocks of data and divide the block of data into the “N” number of interleaved sub-blocks of data based on performance capabilities of the encryption processor and its interrupt processing time; and

a local host memory that stores the reassembled block of data.

9. The system of claim 8 , wherein the data transfer operation further comprises a scatter/gather operation and a FIS construction operation associated with the local data storage device.

10. The system of claim 9 , wherein the data encryption or decryption operation comprises queuing the next sequential sub-block of data to the encryption processor.

11. The system of claim 10 , wherein the local data storage device comprises a hard disk drive coupled to the host memory.

12. The system of claim 8 , wherein the data is transferred to or from a network device.

13. The system of claim 8 , wherein the “N” number of interleaved sub-blocks of data is dynamically adjusted.

14. The system of claim 8 , wherein the encryption processor is an encryption co-processor.

15. A computer program product for transferring encrypted data in an input/output (I/O) operation, the computer program product comprising a non-transitory machine-readable medium encoded with computer-executable instructions that when executed cause a data processing system to perform:

receiving a block of data to be transferred between a local data storage device and a local host memory;

dividing the block of data into an “N” number of interleaved sub-blocks of data at a data splitting engine based on performance capabilities of the encryption processor and its interrupt processing time;

performing a data transfer operation sequentially on the “N” sub-blocks of data, the data transfer operation comprising operations preceding and including a frame information structure (FIS) being received at the local data storage device;

performing a data encryption or decryption operation at an encryption processor on the “N” sub-blocks of data, at least a portion of the data encryption or decryption operation on a sub-block of data being performed concurrently with at least a portion of the data transfer operation performed on a next sequential sub-block of data in the sequence;

changing the value of “N” based on performance metrics of the sub-blocks of data,

reassembling the “N” number of interleaved sub-blocks of data into the block of data; and

storing the reassembled block of data at the local host memory.

16. The computer program product of claim 15 , wherein the data transfer operation further comprises a scatter/gather operation and a FIS construction operation associated with the local data storage device.

17. The computer program product of claim 16 , wherein the data encryption or decryption operation comprises queuing the next sequential sub-block of data to the encryption processor.

18. The computer program product of claim 17 , wherein the local data storage device comprises a hard disk drive coupled to the host memory.

19. The computer program product of claim 15 , wherein the data is transferred to or from a network device.

20. The computer program product of claim 15 , wherein the “IN” number of interleaved sub-blocks of data is dynamically adjusted.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 18, 2024
From: STMICROELECTRONICS, INC.
To: STMICROELECTRONICS INTERNATIONAL N.V.
Reel/Frame 068433/0883 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 8, 2010
From: GODWIN, KURT
To: STMICROELECTRONICS, INC.
Reel/Frame 024105/0222 →
Continuity (2)
Provisional Application 61266829 · Dec 4, 2009
Related Publication 20110138194A1 · Jun 9, 2011