IP Library Granted Patent US 8,255,593
Granted Patent B2
US 8,255,593 · App. 12/569,173 · Granted Aug 28, 2012

Direct memory access with striding across memory

Assignee: Oracle America, 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 8,255,593
App. No.
12/569,173
Granted
Aug 28, 2012
Kind
B2
Abstract

A DMA device may include an offset determination unit configured to determine a first offset for a DMA transfer and a data transfer unit. The data transfer unit may be configured to receive a first buffer starting address identifying a starting location of a first buffer allocated in memory for the DMA transfer and to generate a first buffer offset address by applying the first offset to the first buffer starting address. The data transfer unit may be further configured to use the first buffer offset address as a starting location in the first buffer for data transferred in the DMA transfer. By applying various offsets, such DMA devices may spread memory access workload across multiple memory controllers, thereby achieving better workload balance and performance in the memory system.

Claims (69)

1. A direct memory access (DMA) device comprising:

an offset determination unit configured to determine an offset for a DMA transfer from among a plurality of predetermined offsets; and

a data transfer unit configured to:

receive a buffer starting address identifying a starting location of a buffer allocated in memory for the DMA transfer;

generate a buffer offset address by applying the offset to the buffer starting address; and

use the buffer offset address as a starting location in the buffer for data transferred in the DMA transfer;

wherein:

the offset determination unit comprises one or more programmable registers; and

the plurality of predetermined offsets is stored in the one or more programmable registers.

2. The device of claim 1 , wherein the data transfer unit is configured to write data associated with the DMA transfer at sequential locations of the buffer beginning at the buffer offset address.

3. The device of claim 1 , wherein the data transfer unit is configured to write a data packet into the buffer using the buffer offset address as a starting location.

4. The device of claim 3 , wherein the offset determination unit is configured to determine a second offset from among the plurality of predetermined offsets for a second data packet that is different than the offset, and wherein the data transfer unit is further configured to receive a second buffer starting address identifying a starting location of a second buffer allocated in memory for the second packet and is configured to generate a second buffer offset address by applying the second offset to the second buffer starting address.

5. The device of claim 4 , wherein the data transfer unit is further configured to write a second data packet into the second buffer using the second buffer offset address as a starting location.

6. The device of claim 1 , further comprising:

an offset register programmable to store a plurality of offset values concurrently;

wherein the offset determination unit is configured to determine the offset based on an offset value selected within the offset register, wherein the selected offset value depends upon a result of a hash function.

7. A direct memory access (DMA) device comprising:

an offset determination unit configured to determine an offset for a DMA transfer from among a plurality of predetermined offsets;

a data transfer unit configured to:

receive a buffer starting address identifying a starting location of a buffer allocated in memory for the DMA transfer;

generate a buffer offset address by applying the offset to the buffer starting address;

use the buffer offset address as a starting location in the buffer for data transferred in the DMA transfer;

an offset register programmable to store a plurality of offset values concurrently; and

an offset index register configured to store an index value;

wherein the offset determination unit is configured to determine the offset by selecting an offset value from the offset value register using the index value, and by calculating the offset using the selected offset value.

8. The device of claim 7 , further comprising a programmable stride-length register configured to store a stride value;

wherein the offset determination unit is configured to calculate the offset by multiplying the selected offset value by the stride value.

9. The device of claim 8 , wherein the offset index register comprises a counter, wherein the index value is incremented upon successive packet transfers.

10. A method of operating a DMA device comprising:

receiving a buffer starting address identifying a starting location of a buffer allocated in memory for a DMA transfer;

storing a plurality of predetermined offsets in one or more programmable registers;

determining an offset for the DMA transfer from among the plurality of predetermined offsets;

generating a buffer offset address by applying the offset to the buffer starting address; and

using the buffer offset address as a starting location in the buffer to perform the DMA transfer.

11. The method of claim 10 , wherein the offset is dependent on the starting address.

12. The method of claim 10 , wherein the DMA transfer includes writing a data packet into the buffer using the buffer offset address as a starting location.

13. The method of claim 12 , further comprising:

receiving a second buffer starting address identifying a starting location of a second buffer allocated in memory for a second packet;

determining a second offset for the second data packet that is different than the offset;

generating a second buffer offset address by applying the second offset to the second buffer starting address; and

writing the second data packet into the second buffer using the second buffer offset address as a starting location.

14. A computer system comprising:

one or more processors;

a memory subsystem coupled to the one or more processors though one or more memory controllers, the memory subsystem comprising multiple banks of memory; and

a direct memory access (DMA) device comprising:

an offset determination unit configured to determine a offset for a DMA transfer from among a plurality of predetermined offsets;

a data transfer unit configured to:

receive a buffer starting address identifying a starting location of a buffer allocated in memory for the DMA transfer;

generate a buffer offset address by applying the offset to the buffer starting address; and

use the buffer offset address as a starting location in the buffer for data transferred in the DMA transfer;

an offset register programmable to store a plurality of offset values concurrent; and

an offset index register configured to store an index value;

wherein the offset determination unit is configured to determine the offset by selecting an offset value from the offset value register using the index value, and by calculating the offset using the selected offset value.

15. The system of claim 14 , wherein the DMA device further comprises:

a programmable stride-length register configured to store a stride value;

wherein the offset determination unit is configured to calculate the offset by multiplying the selected offset value by the stride value.

16. The system of claim 15 , wherein the offset index register comprises a counter, wherein the index value is incremented upon successive packet transfers.

17. A computer system comprising:

one or more processors;

a memory subsystem coupled to the one or more processors though one or more memory controllers, the memory subsystem comprising multiple banks of memory; and

a direct memory access (DMA) device comprising:

an offset determination unit configured to determine a offset for a DMA transfer from among a plurality of predetermined offsets;

a data transfer unit configured to:

receive a buffer starting address identifying a starting location of a buffer allocated in memory for the DMA transfer;

generate a buffer offset address by applying the offset to the buffer starting address; and

use the buffer offset address as a starting location in the buffer for data transferred in the DMA transfer; and

an offset register programmable to store a plurality of offset values concurrently;

wherein the offset determination unit is configured to determine the offset based on an offset value selected within the offset register, wherein the selected offset value depends upon a result of a hash function.

18. The system of claim 17 , wherein the data transfer unit is configured to write data associated with the DMA transfer at sequential locations of the buffer beginning at the buffer offset address.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037311/0182 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2009
From: SIDDABATHUNI, AJOY C.; SRINIVASAN, ARVIND
To: SUN MICROSYSTEMS, INC.
Reel/Frame 023298/0317 →
Continuity (1)
Related Publication 20110078342A1 · Mar 31, 2011