Method for increasing I/O performance in systems having an encryption co-processor
First Claim
Patent Images
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.
1 Assignment
0 Petitions
Accused Products
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.
9 Citations
20 Claims
-
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; andstoring the reassembled block of data at the local host memory. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
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, andreassemble 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; anda local host memory that stores the reassembled block of data. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
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; andstoring the reassembled block of data at the local host memory. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification