IP Library Granted Patent US 9,384,072
Granted Patent B2
US 9,384,072 · App. 13/721,671 · Granted Jul 5, 2016

Distributed queue pair state on a host channel adapter

Inventors: Brian Edward Manula (Oslo, NO); Magne Vigulf Sandven (Ski, NO)
Assignee: Oracle International Corporation
G06F9/546G06F12/0833G06F12/0837H04L29/06027G06F2209/548G06F2212/6046
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,384,072
App. No.
13/721,671
Granted
Jul 5, 2016
Kind
B2
Abstract

A method for managing a distributed cache of a host channel adapter (HCA) that includes receiving a work request including a QP number, determining that a QP state identified by the QP number is not in the distributed cache, retrieving the QP state from main memory, and identifying a first portion and a second portion of the QP state. The method further includes storing the first portion into a first entry of a first sub-cache block associated with the first module, where the first entry is identified by a QP index number, storing the second portion into a second entry of a second sub-cache block associated with the second module, where the second entry is identified by the QP index number; and returning the QP index number of the QP state to the first module and the second module.

Claims (35)

1. A method for managing a distributed cache of a host channel adapter (HCA), comprising:

receiving a work request comprising a queue pair (QP) number;

determining, by a cache control module of the HCA, that a QP state identified by the QP number is not in the distributed cache of the HCA,

wherein the QP state comprises a plurality of data fields, and

wherein the distributed cache comprises a plurality of sub-cache blocks;

retrieving the QP state from main memory;

identifying a first portion and a second portion of the QP state,

wherein the first portion comprises a first subset of the plurality of data fields required by a first module of the HCA, and

wherein the second portion comprises a second subset of the plurality of data fields required by a second module of the HCA;

storing the first portion into a first entry of a first sub-cache block associated with the first module, wherein the first entry is identified by a QP index number, wherein the first sub-cache block is one of the plurality of sub-cache blocks;

storing the second portion into a second entry of a second sub-cache block associated with the second module, wherein the second entry is identified by the QP index number,

wherein the second sub-cache block is one of the plurality of sub-cache blocks; and

returning the QP index number of the QP state to the first module and the second module.

2. The method of claim 1 , wherein determining that the QP state is not in the distributed cache comprises:

attempting to retrieve, from a QP index table, an index entry associated with the QP state, wherein the index entry comprises the QP index number of each entry in the plurality of sub-cache blocks in which the QP state is located within the distributed cache;

determining that the index entry is not present within the QP index table.

3. The method of claim 2 , wherein retrieving the QP state from main memory further comprises:

obtaining a location of the QP state in the main memory from an address table;

reading the QP state from the main memory.

4. The method of claim 2 , further comprising:

selecting, based on a reference counter in the QP index table, a resident QP state to evict, wherein the reference counter represents a number of pending work requests to evict; and

evicting the resident QP state from the distributed cache.

5. The method of claim 1 , wherein the plurality of data fields of the QP state comprises a private field, configured to be read and written by the first module, and wherein the private field is stored exclusively in the first entry.

6. The method of claim 1 , wherein the plurality of data fields of the QP state comprises a read-only field, configured to be read by both the first module and the second module, and wherein a first copy of the read-only field is stored in the first entry and a second copy of the read-only field is stored in the second entry.

7. The method of claim 1 , wherein the plurality of data fields of the QP state comprises a broadcast field, configured to be read by the second module and written by the first module, and wherein a first copy of the broadcast field is stored in the first entry and a second copy of the broadcast field is stored in the second entry.

8. The method of claim 7 , further comprising:

broadcasting, by the first module, a change made to the first copy of the broadcast field;

receiving, by the second module, the change; and

altering, by the second module, the second copy of the broadcast field to reflect the change.

9. The method of claim 1 , wherein the plurality of data fields of the QP state comprises a public field, configured to be read and written by the first module and the second module, wherein only one module can write the public field at a given time.

10. The method of claim 9 , wherein the public field is stored in a central cache block of the HCA.

11. The method of claim 9 , further comprising:

determining that the public field may be split into a plurality of non-public data fields;

partitioning the public field into the plurality of non-public data fields; and

storing the plurality of non-public data fields in the first entry and the second entry.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 3, 2013
From: MANULA, BRIAN EDWARD; SANDVEN, MAGNE VIGULF
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 029559/0572 →
Continuity (1)
Related Publication 20140181232A1 · Jun 26, 2014