IP Library Granted Patent US 10,025,735
Granted Patent B2
US 10,025,735 · App. 14/161,290 · Granted Jul 17, 2018

Decoupled locking DMA architecture

Inventors: Earl T Cohen (Oakland, CA); Timothy Lawrence Canepa (Los Gatos, CA)
Assignee: Seagate Technology LLC
G06F13/28
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,025,735
App. No.
14/161,290
Granted
Jul 17, 2018
Kind
B2
Abstract

A decoupled Direct Memory Access (DMA) architecture includes at least two DMA controllers, and optionally at least one of the DMA controllers is operable to assert a lock signal operable to selectively inhibit write access to at least a portion of one system data storage element. The DMA controllers are optionally operable to communicate pending task information and to reschedule pending tasks of at least one the DMA controllers. Optionally data is transferred from at least a first one of the DMA controllers to one or more function units, and processed data from the function units is provided to at least a second one of the DMA controllers. Optionally the DMA controllers and one or more memory elements accessible to the DMA controllers are implemented as part of an I/O device.

Claims (44)

1. A system comprising:

a solid state drive (SSD) controller configured to manage flash memory, the SSD controller including:

a read direct memory access (DMA) controller coupled between a first buffer memory and a function unit, the first buffer memory configured to receive data from a host device;

a write DMA controller coupled between the function unit and a second buffer memory, the second buffer memory configured to provide data to the flash memory;

the read DMA controller configured to send to the function unit a header based on a read DMA command followed by data read from the first buffer memory based on the read DMA command, the data read from the first buffer memory being data received from the host device for storage to the flash memory, the header comprising function unit control information that controls the operation of the function unit and a length field specifying a length of the data read from the first buffer memory and sent to the function unit;

the function unit configured to process the header to determine a cryptographic key indicated by the function unit control information of a plurality of cryptographic keys and to perform a cryptographic transform of the data read from the first buffer memory using the cryptographic key indicated by the function unit control information, the cryptographic transform further compressing the data read from the first buffer memory for storage to the flash memory; and

the write DMA controller configured to write the transformed data from the function unit into the second buffer memory.

2. The system of claim 1 , wherein the transformed data from the function unit has a different length than the data read from the first buffer memory.

3. The system of claim 2 , wherein the function unit is further operable to send a modified header to the write DMA controller, the modified header having the length field specifying a length of the transformed data.

4. The system of claim 3 , wherein the write DMA controller is configured to write an amount of data into the second buffer memory corresponding to the length specified by the length field of the modified header.

5. The system of claim 1 , wherein the write DMA controller writes the transformed data in accordance with a write DMA command associated with an operation tag.

6. The system of claim 5 , wherein the operation tag associated with the write DMA command is also associated with the read DMA command.

7. The system of claim 5 , wherein the operation tag associated with the write DMA command is different than an operation tag associated with the read DMA command.

8. The system of claim 6 , wherein the read DMA controller and the write DMA controller are configured to be programmed with the read DMA command and the write DMA command at different times and by different software agents.

9. The system of claim 8 , wherein the read of the data read from the first buffer memory, the transformation of the data transformed by the function unit, and write of the data written to the second buffer memory, are decoupled sub-operations of a same DMA operation.

10. The system of claim 9 , wherein the data read from the first buffer memory, the data transformed by the function unit, and data written to the second buffer memory, selectively according to the data read exceeding a data frame size, are each decomposed into a plurality of data frames that share a same operation tag and are different portions of the same DMA operation.

11. The system of claim 10 , wherein the plurality of data frames sharing the same operation tag are enabled to be processed out-of-order.

12. A method comprising:

reading data from a first buffer memory by a read DMA controller of a solid state drive (SSD) controller configured to manage flash memory based on with a read DMA command, the first buffer memory configured to receive data from a host device;

sending to a function unit of the SSD controller, based on the read DMA command, a header followed by the data, the header comprising function unit control information that controls the operation of the function unit;

processing, by the function unit, the header to determine a cryptographic key indicated by the function unit control information of a plurality of cryptographic keys;

cryptographically transforming the data, by the function unit, using the cryptographic key indicated by the function unit control information comprised in the header, the cryptographic transforming further compressing the data read from the first buffer memory for storage to the flash memory; and

writing the transformed data from the function unit into a second buffer memory by a write DMA controller based on a write DMA command, the second buffer memory configured to provide data to the flash memory.

13. The method of claim 12 , further comprising:

programming the read DMA command independently of programming the write DMA command.

14. The method of claim 12 , further comprising:

associating the read DMA command with a source operation tag;

associating the write DMA command with a receive operation tag; and

wherein the source operation tag and the receive operation tag are different.

15. The method of claim 12 , wherein the read DMA command is associated with a source operation tag, the write DMA command is associated with a receive operation tag, and

the source operation tag and the receive operation tag are identical.

16. The method of claim 12 , further comprising:

respectively performing the reading, sending, transforming, and writing in data frame sized units as different portions of a same DMA operation.

17. The method of claim 16 , further comprising:

processing out-of-order data frame sized units of the same DMA operation.

18. The method of claim 16 , wherein data frame sized units of the same DMA operation all share the same operation tag.

19. The method of claim 12 , wherein the transformed data from the function unit has a different length than the data read from the first buffer memory.

20. An apparatus comprising:

a solid state drive (SSD) controller configured to manage flash memory, the SSD controller including:

a read direct memory access (DMA) controller of the SSD controller coupled between a first buffer memory and a function unit, the first buffer memory configured to receive data from a host device;

a write DMA controller of the SSD controller coupled between the function unit and a second buffer memory, the second buffer memory configured to provide data to the flash memory;

the read DMA controller configured to send to the function unit a header based on a read DMA command followed by data read from the first buffer memory based on the read DMA command, the header comprising function unit control information that controls the operation of the function unit and a length field specifying a length of the data read from the first buffer memory and sent to the function unit;

the function unit configured to perform a cryptographic transform of the data read from the first buffer memory using a cryptographic key indicated by the function unit control information of a plurality of cryptographic keys, the cryptographic transform further compressing the data read from the first buffer memory for storage to the flash memory; and

the write DMA controller configured to write the transformed data from the function unit into the second buffer memory.

Assignments (5)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031) Recorded Feb 2, 2016
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 037684/0039 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 21, 2015
From: LSI CORPORATION
To: SEAGATE TECHNOLOGY LLC
Reel/Frame 034771/0571 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS INCLUDED IN SECURITY INTEREST PREVIOUSLY RECORDED AT REEL/FRAME (032856/0031) Recorded Nov 6, 2014
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 034177/0257 →
PATENT SECURITY AGREEMENT Recorded May 8, 2014
From: LSI CORPORATION; AGERE SYSTEMS LLC
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 032856/0031 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 19, 2014
From: COHEN, EARL T.; CANEPA, TIMOTHY LAWRENCE
To: LSI CORPORATION
Reel/Frame 032478/0867 →
Continuity (2)
Provisional Application 61758770 · Jan 31, 2013
Related Publication 20140215103A1 · Jul 31, 2014