IP Library Granted Patent US 9,400,617
Granted Patent B2
US 9,400,617 · App. 14/217,467 · Granted Jul 26, 2016

Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained

Inventors: Cyrill Ponce (Malabon, PH); Marizonne Operio Fuentes (Leyte, PH); Gianico Geonzon Noble (Laguna, PH)
Assignee: BiTMICRO Networks, Inc.
G06F3/0683G06F3/061G06F3/0656G06F12/08
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,400,617
App. No.
14/217,467
Granted
Jul 26, 2016
Kind
B2
Abstract

The invention provides the data flow communication control between the source (flash/IO) and destination (IO/flash) cores. The source and destination cores are started simultaneously instead of serially and get instructions from the descriptors provided and set-up by the processor. Each source and destination core's descriptors 1 are correlated or tied with each other by the processor by providing information to the hardware assist mechanism. The hardware assist mechanism responsible for moderating the data transfer from source to destination. The flow tracker guarantees that data needed by destination exists. 1 Descriptors are set of instructions that is used to activate the DMA controller. By applying the invention to the prior approach/solution, the data latency between the flash & IO bus will be reduced. Processor interrupts will be minimized while data transfer between the flash & IO bus is ongoing.

Claims (42)

1. An apparatus, comprising:

a memory DMA (direct memory access) engine;

an IOC (input/output to cache) DMA engine;

a cache;

a dependency table configured to permit one of the memory DMA engine and IOC DMA engine to transmit data to the cache and to permit, in parallel, another one of the memory DMA engine and IOC DMA engine to drain data from the cache without processor intervention whenever a data buffer in the cache is filled or drained;

wherein the dependency table comprises a plurality of index fields, wherein each of the plurality of index fields comprises a plurality of buffer fields;

wherein the plurality of buffer fields comprises a first buffer field comprising a first plurality of sub-indices assigned to the memory DMA engine;

wherein the plurality of buffer fields comprises a second buffer field comprising a second plurality of sub-indices assigned to the IOC DMA engine;

wherein the cache comprises a first descriptor for the memory DMA engine and a second descriptor for the IOC DMA engine and wherein the first descriptor and the second descriptor point to a first data buffer in the cache.

2. The apparatus of claim 1 , wherein the memory DMA engine can start transferring data between a memory and a first buffer in the cache with one of the plurality of buffer fields having a first value;

wherein the IOC DMA engine can start transferring data between the first buffer in the cache and an IO bus interface with the one of the plurality of buffer fields having a second value.

3. The apparatus of claim 2 , wherein one of the memory DMA engine and IOC DMA engine updates the one of the plurality of buffer fields between being free and being allocated; and wherein another one of the memory DMA engine and the IOC DMA engine monitors the one of the plurality of buffer fields as being free or as being allocated.

4. The apparatus of claim 3 , wherein the memory DMA engine updates the one of the plurality of buffer fields for a read command and wherein the IOC DMA engine updates the one of the plurality of buffer fields for a write command.

5. The apparatus of claim 4 , wherein the one of the plurality of buffer fields is free in response to data being transferred to a data buffer in the cache and the data being available to be drained from the data buffer.

6. The apparatus of claim 5 , wherein the memory DMA engine can start transferring data between the memory and a second buffer in the cache with a second one of the plurality of buffer fields having the first value;

wherein the IOC DMA engine can start transferring data between the second buffer in the cache and the IO bus interface with the second one of the plurality of buffer fields having the second value.

7. The apparatus of claim 1 , further comprising:

an intermediate processing DMA engine configured to process data from the cache.

8. The apparatus of claim 7 , wherein the intermediate processing DMA engine can start transferring data between the cache and the intermediate processing DMA engine with one of the plurality of buffer fields having a second value.

9. A method, comprising:

permitting one of a memory DMA (Direct Memory Access) engine and IOC (input/output to cache) DMA engine to transmit data to a cache and permitting, in parallel, another one of the memory DMA engine and IOC DMA engine to drain data from the cache without processor intervention whenever a data buffer in the cache is filled or drained;

using a dependency table comprising a plurality of index fields, wherein each of the plurality of index fields comprises a plurality of buffer fields;

wherein the plurality of buffer fields comprises a first buffer field comprising a first plurality of sub-indices assigned to the memory DMA engine;

wherein the plurality of buffer fields comprises a second buffer field comprising a second plurality of sub-indices assigned to the IOC DMA engine;

wherein the cache comprises a first descriptor for the memory DMA engine and a second descriptor for the IOC DMA engine and wherein the first descriptor and the second descriptor point to a first data buffer in the cache.

10. The method of claim 9 , wherein the memory DMA engine can start transferring data between a memory and a first buffer in the cache with one of the plurality of buffer fields having a first value;

wherein the IOC DMA engine can start transferring data between the first buffer in the cache and an IO bus interface with the one of the plurality of buffer fields having a second value.

11. The method of claim 10 , wherein one of the memory DMA engine and IOC DMA engine updates the one of the plurality of buffer fields between being free and being allocated; and wherein another one of the memory DMA engine and the IOC DMA engine monitors the one of the plurality of buffer fields as being free or as being allocated.

12. The method of claim 11 , wherein the memory DMA engine updates the one of the plurality of buffer fields for a read command and wherein the IOC DMA engine updates the one of the plurality of buffer fields for a write command.

13. The method of claim 12 , wherein the one of the plurality of buffer fields is free in response to data being transferred to a data buffer in the cache and the data being available to be drained from the data buffer.

14. The method of claim 13 , wherein the memory DMA engine can start transferring data between the memory and a second buffer in the cache with a second one of the plurality of buffer fields having the first value;

wherein the IOC DMA engine can start transferring data between the second buffer in the cache and the IO bus interface with the second one of the plurality of buffer fields having the second value.

15. The method of claim 9 , further comprising:

processing data, by an intermediate processing DMA engine, from the cache.

16. The method of claim 15 , wherein the intermediate processing DMA engine can start transferring data between the cache and the intermediate processing DMA engine with one of the plurality of buffer fields having a second value.

17. An article of manufacture, comprising:

a non-transient computer-readable medium having stored thereon instructions that permit a method comprising:

permitting one of a memory DMA (Direct Memory Access) engine and IOC (input/output to cache) DMA engine to transmit data to a cache and permitting, in parallel, another one of the memory DMA engine and IOC DMA engine to drain data from the cache without processor intervention whenever a data buffer in the cache is filled or drained;

wherein the method further comprises: using a dependency table comprising a plurality of index fields, wherein each of the plurality of index fields comprises a plurality of buffer fields;

wherein the plurality of buffer fields comprises a first buffer field comprising a first plurality of sub-indices assigned to the memory DMA engine;

wherein the plurality of buffer fields comprises a second buffer field comprising a second plurality of sub-indices assigned to the IOC DMA engine;

wherein the cache comprises a first descriptor for the memory DMA engine and a second descriptor for the IOC DMA engine and wherein the first descriptor and the second descriptor point to a first data buffer in the cache.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 8, 2017
From: BITMICRO NETWORKS, INC.
To: BITMICRO LLC
Reel/Frame 043536/0407 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2016
From: PONCE, CYRILL; FUENTES, MARIZONNE OPERIO; NOBLE, GIANICO GEONZON
To: BITMICRO NETWORKS, INC.
Reel/Frame 038907/0734 →
Continuity (2)
Provisional Application 61802367 · Mar 15, 2013
Related Publication 20150006766A1 · Jan 1, 2015