IP Library Granted Patent US 9,753,852
Granted Patent B1
US 9,753,852 · App. 14/919,508 · Granted Sep 5, 2017

Methods and systems for managing address list control blocks

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,753,852
App. No.
14/919,508
Granted
Sep 5, 2017
Kind
B1
Abstract

Methods and systems for a device coupled to a computing device are provided. As an example, one method includes receiving a request for processing an address list control block (ALCB) by an ALCB offload engine of an adapter coupled to a computing device; determining by the ALCB offload engine if the ALCB is located at a cache managed by a cache controller of the ALCB engine; forwarding the ALCB to an address computation module that determines an address of a memory location of the computing device, where the ALCB stores the address of the memory location in an address list; generating a direct memory access (DMA) request to retrieve the ALCB from an adapter memory, when the ALCB is not located at the cache; and storing the ALCB at the cache, after the ALCB is received in response to the DMA request.

Claims (37)

1. A machine implemented method, comprising:

receiving a request for processing an address list control block (ALCB) by a hardware based, ALCB offload engine of an adapter coupled to a computing device, where the ALCB is for sending information by the adapter to a processor of the computing device;

determining by the ALCB offload engine that the ALCB associated with the request is located at a cache of the ALCB offload engine that is managed by a cache controller of the ALCB offload engine;

forwarding the ALCB to an address computation module of the ALCB offload engine that uses the ALCB to compute an address of a memory location of the computing device for transferring the information to the processor of the computing device, where the ALCB stores the address of the memory location in an address list;

generating a direct memory access (DMA) request to retrieve the ALCB from an adapter memory location, when the ALCB is not located at the cache; and

storing the ALCB at the cache, after the ALCB is received in response to the DMA request; wherein the ALCB stored at the cache is used for ALCB processing by the ALCB offload engine for another request received after the ALCB is stored at the cache; and

wherein the ALCB offload engine offloads ALCB processing from a receive direct memory access (RxDMA) module of the adapter that transfers the information to the processor of the computing device.

2. The method of claim 1 , wherein the cache controller uses a memory region identifier and a block identifier as an index to determine if the ALCB is stored at the cache.

3. The method of claim 1 , wherein the ALCB offload engine uses a ternary content addressable memory (TCAM) that stores a tag for each cache entry with a valid bit indicating that a cache entry is valid, a dirty bit indicating that a cache entry is to be written to the adapter memory and a transit bit indicating that a cache entry is in use.

4. The method of claim 1 , wherein when the cache does not have space for the ALCB retrieved in response to the DMA request, then the cache controller flushes a least recently used entry to the adapter memory to create space for the ALCB.

5. The method of claim 1 , wherein the adapter is a host bus adapter configured to process input/output requests.

6. The method of claim 3 , wherein the request for the ALCB is generated by processing logic of the adapter.

7. The method of claim 1 , wherein the request is stored at a first in-first out memory device and retrieved by the cache controller for processing.

8. A non-transitory, machine readable storage medium having stored thereon instructions for performing a method, comprising machine executable code which when executed by at least one machine, causes the machine to:

receive a request for processing an address list control block (ALCB) by a hardware based, ALCB offload engine of an adapter coupled to a computing device, where the ALCB is for sending information by the adapter to a processor of the computing device;

determine by the ALCB offload engine that the ALCB associated with the request is located at a cache of the ALCB offload engine that is managed by a cache controller of the ALCB offload engine;

forward the ALCB to an address computation module of the ALCB offload engine that uses the ALCB to compute an address of a memory location of the computing device for transferring the information to the processor of the computing device, where the ALCB stores the address of the memory location in an address list;

generate a direct memory access (DMA) request to retrieve the ALCB from an adapter memory location, when the ALCB is not located at the cache; and

store the ALCB at the cache, after the ALCB is received in response to the DMA request; wherein the ALCB stored at the cache is used for ALCB processing by the ALCB offload engine for another request received after the ALCB is stored at the cache; and wherein the ALCB offload engine offloads ALCB processing from a receive direct memory access (RxDMA) module of the adapter that transfers the information to the processor of the computing device.

9. The non-transitory, storage medium of claim 8 , wherein the cache controller uses a memory region identifier and a block identifier as an index to determine if the ALCB is stored at the cache.

10. The non-transitory, storage medium of claim 8 , wherein the ALCB offload engine uses a ternary content addressable memory (TCAM) that stores a tag for each cache entry with a valid bit indicating that a cache entry is valid, a dirty bit indicating that a cache entry is to be written to the adapter memory and a transit bit indicating that a cache entry is in use.

11. The non-transitory, storage medium of claim 8 , wherein when the cache does not have space for the ALCB retrieved in response to the DMA request, then the cache controller flushes a least recently used entry to the adapter memory to create space for the ALCB.

12. The non-transitory, storage medium of claim 8 , wherein the adapter is a host bus adapter configured to process input/output requests.

13. The non-transitory, storage medium of claim 12 , wherein the request for the ALCB is generated by processing logic of the adapter.

14. The non-transitory, storage medium of claim 8 , wherein the request is stored a first in-first out memory device and retrieved by the cache controller for processing.

15. A device coupled to a computing device, comprising:

processing logic for executing instructions out of a device memory and generating a request for processing an address list control block (ALCB) used for sending information to a processor of the computing device; and

a hardware based ALCB offload engine having:

a cache controller that is configured to receive the request for processing the ALCB; determine that the ALCB is located at a cache of the ALCB offload engine managed by the cache controller;

forward the ALCB to an address computation module of the ALCB offload engine that uses the ALCB to compute an address of a memory location of the computing device, where the ALCB stores the address of the memory location in an address list;

generate a direct memory access (DMA) request to retrieve the ALCB from the device memory, when the ALCB is not located at the cache; and

store the ALCB at the cache, after the ALCB is received in response to the DMA request; wherein the ALCB stored at the cache is used for ALCB processing by the ALCB offload engine for another request received after the ALCB is stored at the cache; and wherein the ALCB offload engine offloads ALCB processing from a receive direct memory access (RxDMA) module of the adapter that transfers the information to the processor of the computing device.

16. The device of claim 15 , wherein the cache controller uses a memory region identifier and a block identifier as an index to determine if the ALCB is stored at the cache.

17. The device of claim 15 , wherein the ALCB offload engine uses a ternary content addressable memory (TCAM) that stores a tag for each cache entry with a valid bit indicating that a cache entry is valid, a dirty bit indicating that a cache entry is to be written to the adapter memory and a transit bit indicating that a cache entry is in use.

18. The device of claim 15 , wherein when the cache does not have space for the ALCB retrieved in response to the DMA request, then the cache controller flushes a least recently used entry to the adapter memory to create space for the ALCB.

19. The device of claim 15 , wherein the adapter is a host bus adapter configured to process input/output requests.

20. The device of claim 15 , wherein the request is a stored at a first in-first out memory device and retrieved by the cache controller for processing.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Oct 8, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047205/0953 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
MERGER Recorded Oct 18, 2017
From: QLOGIC CORPORATION
To: CAVIUM, INC.
Reel/Frame 044812/0504 →
SECURITY AGREEMENT Recorded Mar 1, 2017
From: QLOGIC CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 041854/0119 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 21, 2015
From: KONDA, DHARMA R.; MAGSINO, PAUL R.
To: QLOGIC CORPORATION
Reel/Frame 036920/0690 →