IP Library › Granted Patent US 7,668,841
Granted Patent B2
US 7,668,841 · App. 10/796,273 · Granted Feb 23, 2010

Virtual write buffers for accelerated memory and storage access

Assignee: Brocade Communication Systems, Inc.
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 7,668,841
App. No.
10/796,273
Granted
Feb 23, 2010
Kind
B2
Abstract

A method for accelerating storage access in a network. The method comprises receiving a data record having a plurality of data segments. The data segments are stored in a local memory of a network controller (NC). A virtual write buffer (VWB) entry is assigned for the incoming data record in the NC local memory. The data segments of said data record are reassemble using the VWB. The data record is sent from the network controller directly to an I/O controller of a storage device.

Claims (68)

1. A method comprising:

saving data segments of a data record having a plurality of data segments in a local memory of a network controller (NC);

assigning a virtual write buffer (VWB) entry, in the NC local memory, for the saved data record; and

virtually reassembling the data segments of the saved data record in the NC local memory using the VWB entry to form a reassembled data record.

2. The method of claim 1 , further comprising: correlating a private buffer to a memory address space in a host local memory.

3. The method of claim 1 , wherein the NC is coupled to a storage target system and to a network.

4. The method of claim 1 , further comprising:

sending the reassembled data record from the NC directly to an I/O controller of a storage device.

5. The method of claim 1 , further comprising:

receiving the data record using a sub-process comprising:

performing a transport layer processing on the data segments; and,

assigning a memory object descriptor (MOD) to each of the data segments.

6. The method of claim 5 , wherein each MOD points to a memory location where a corresponding data segment is stored in the NC local memory.

7. The method of claim 5 , wherein the MODS are linked together to form a record structure.

8. The method of claim 2 , wherein an available private buffer is used from a pool of pre-allocated private buffers.

9. The method of claim 2 , wherein the NC maintains a VWB table, wherein the VWB table includes at least a VWB entry.

10. The method of claim 9 , wherein the VWB entry comprises at least two sub-entries, wherein a first sub-entry is an offset field and a second sub-entry is a pointer field.

11. The method of claim 10 , wherein a memory address space utilized by the VWB entry is mapped to the memory address space of the allocated private buffer when the VWB entry is assigned.

12. The method of claim 10 , wherein reassembling the data segments comprises setting the offset field and the pointer field.

13. The method of claim 12 , wherein a memory object descriptor (MOD) is assigned to each of the data segments, and

wherein setting the offset field and the pointer field further comprises:

iteratively, for each MOD, determining a size of a corresponding data segment pointed by each MOD;

setting the offset field to a size of the corresponding data segment pointed by the MOD; and,

setting the pointer field to point to each MOD.

14. The method of claim 13 , wherein a VWB entry is associated with each allocated private buffer.

15. The method of claim 14 , further comprising:

sending the reassembled data record from the NC directly to an I/O controller of a storage device,

wherein the reassembled data record is sent to the I/O controller using a sub-process comprising:

providing the I/O controller with an address space of the private buffer associated with the VWB entry;

translating the address space of the VWB entry to a physical address location of the reassembled data record;

obtaining the reassembled data record from the physical address location; and,

sending the reassembled data record directly to the I/O controller over an I/O bus.

16. The method of claim 15 , wherein the physical address location designates a location of the reassembled data record in the NC local memory.

17. The method of claim 15 , wherein the I/O controller is provided with the address of the private buffer, upon initiating a direct memory access (DMA) request by the I/O controller.

18. The method of claim 15 , wherein the NC sends the reassembled data record upon a reception of a DMA read request initiated by the I/O controller.

19. A method comprising:

correlating a private buffer to a memory address space in a host local memory

saving data segments of a data record having a plurality of data segments in a local memory of a network controller (NC);

assigning a virtual write buffer (VWB) entry, in the NC local memory, for the saved data record, the memory address space utilized by the VWB entry being mapped to the memory address space of the allocated private buffer when the VWB entry is assigned;

maintaining, in the NC, a VWB table, wherein the VWB table includes at least a VWB entry, the VWB entry including at least two sub-entries, wherein a first sub-entry is an offset field and a second sub-entry is a pointer field; and

reassembling the data segments of the saved data record using the VWB entry to form a reassembled data record.

20. The method of claim 19 , wherein the NC is coupled to a storage target system and to a network.

21. The method of claim 19 , further comprising:

sending the reassembled data record from the NC directly to an I/O controller of a storage device.

22. The method of claim 19 , further comprising:

receiving the data record using a sub-process comprising:

performing transport layer processing on the data segments; and,

assigning a memory object descriptor (MOD) to each of the data segments.

23. The method of claim 22 , wherein each the MOD points to a memory location where a corresponding data segment is stored in the NC local memory.

24. The method of claim 22 , wherein the MODS are linked together to form a record structure.

25. The method of claim 19 , wherein an available private buffer is used from a pool of pre-allocated private buffers.

26. The method of claim 19 , wherein reassembling the data segments comprises setting the offset field and the pointer field.

27. The method of claim 26 , wherein a memory object descriptor (MOD) is assigned to each of the data segments, and

wherein setting the offset field and the pointer field further comprises:

iteratively, for each MOD, determining a size of a corresponding data segment pointed by each MOD;

setting the offset field to a size of the corresponding data segment pointed by the MOD; and,

setting the pointer field to point to each MOD.

28. The method of claim 27 , wherein a VWB entry is associated with each allocated private buffer.

29. The method of claim 28 , further comprising:

sending the reassembled data record from the NC directly to an I/O controller of a storage device,

wherein the reassembled data record is sent to the I/O controller using a sub-process comprising:

providing the I/O controller with an address space of the private buffer associated with the VWB entry;

translating the address space of the VWB entry to a physical address location of the reassembled data record;

obtaining the reassembled data record from the physical address location; and

sending the reassembled data record directly to the I/O controller over an I/O bus.

30. The method of claim 29 , wherein the physical address location designates a location of the reassembled data record in the NC local memory.

31. The method of claim 29 , wherein the I/O controller is provided with the address of the private buffer, upon initiating a direct memory access (DMA) request by the I/O controller.

32. The method of claim 29 , wherein the NC sends the reassembled data record upon a reception of a DMA read request initiated by the I/O controller.

Assignments (10)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2018
From: BROCADE COMMUNICATIONS SYSTEMS LLC
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047270/0247 →
CHANGE OF NAME Recorded Dec 13, 2017
From: BROCADE COMMUNICATIONS SYSTEMS, INC.
To: BROCADE COMMUNICATIONS SYSTEMS LLC
Reel/Frame 044891/0536 →
RELEASE OF SECURITY INTEREST Recorded Jan 22, 2015
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: BROCADE COMMUNICATIONS SYSTEMS, INC.; FOUNDRY NETWORKS, LLC
Reel/Frame 034804/0793 →
RELEASE OF SECURITY INTEREST Recorded Jan 21, 2015
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: BROCADE COMMUNICATIONS SYSTEMS, INC.; INRANGE TECHNOLOGIES CORPORATION; FOUNDRY NETWORKS, LLC
Reel/Frame 034792/0540 →
SECURITY AGREEMENT Recorded Jan 20, 2010
From: BROCADE COMMUNICATIONS SYSTEMS, INC.; FOUNDRY NETWORKS, LLC; INRANGE TECHNOLOGIES CORPORATION; MCDATA CORPORATION; MCDATA SERVICES CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 023814/0587 →
SECURITY AGREEMENT Recorded Dec 22, 2008
From: BROCADE COMMUNICATIONS SYSTEMS, INC.; FOUNDRY NETWORKS, INC.; INRANGE TECHNOLOGIES CORPORATION; MCDATA CORPORATION
To: BANK OF AMERICA, N.A. AS ADMINISTRATIVE AGENT
Reel/Frame 022012/0204 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 18, 2007
From: SILVERBACK, INC.
To: BROCADE COMMUNICATIONS SYSTEMS, INC.
Reel/Frame 019440/0455 →
SECURITY AGREEMENT Recorded Aug 8, 2005
From: SILVERBACK SYSTEMS, INC.
To: EXCELSIOR VENTURE PARTNERS III, LLC; GEMINI ISRAEL III L.P.; GEMINI ISRAEL III OVERFLOW FUND L.P.; GEMINI ISRAEL III PARALLEL FUND LP; GEMINI PARTNER INVESTORS LP; NEWBURY VENTURES CAYMAN III, L.P.; NEWBURY VENTURES EXECUTIVES III, L.P.; NEWBURY VENTURES III GMBH & CO. KG; NEWBURY VENTURES III, L.P.; PITANGO PRINCIPALS FUND III (USA) LP; PITANGO VENTURE CAPITAL FUND III (ISRAELI INVESTORS) LP; PITANGO VENTURE CAPITAL FUND III (USA) L.P..; PITANGO VENTURE CAPITAL FUND III (USA) NON-Q L.P.; PITANGO VENTURE CAPITAL FUND III TRUSTS 2000 LTD.; MIDDLEFIELD VENTURES, INC.; SHREM FUDIM KELNER - TRUST COMPANY LTD.
Reel/Frame 016360/0891 →
SECURITY AGREEMENT Recorded Mar 25, 2005
From: SILVERBACK SYSTEMS, INC.
To: EXCELSIOR VENTURE PARTNERS III, LLC; GEMINI ISRAEL III L.P.; GEMINI ISRAEL III OVERFLOW FUND LP; GEMINI ISRAEL III PARALLEL FUND LP; GEMINI PARTNER INVESTORS LP; NEWBURY VENTURES CAYMAN III, L.P.; NEWBURY VENTURES EXECUTIVES III, L.P.; NEWBURY VENTURES III GMBH & CO. KG; NEWBURY VENTURES III, L.P.; PITANGO PRINCIPALS FUND III (USA) LP; PITANGO VENTURE CAPITAL FUND III (ISRAELI INVESTORS) LP; PITANGO VENTURE CAPITAL FUND III (USA) LP; PITANGO VENTURE CAPITAL FUND III (USA) NON-Q L.P.; PITANGO VENTURE CAPITAL FUND III TRUSTS 2000 LTD.; MIDDLEFIELD VENTURES, INC.; SHREM FUDIM KELNER TRUST COMPANY LTD.
Reel/Frame 016038/0657 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 1, 2004
From: UZRAD-NALI, ORAN; SHAFFER, JOHN H.; PLOTZ, KEVIN G.
To: SILVERBACK SYSTEMS, INC.
Reel/Frame 015749/0426 →
Continuity (2)
Provisional Application 6045296900 · Mar 10, 2003
Related Publication 20040268017A1 · Dec 30, 2004