Virtual memory interface
First Claim
1. Apparatus, comprising:
- a memory comprising data storage locations addressable by physical addresses; and
a virtual memory interface comprising a direct memory access (DMA) controller operable to interface to the memory and operable to receive a virtual address from a bus and to internally translate the virtual address into a physical address, wherein the virtual address is an address in a flat memory linear addressing space and the virtual address is applied as an index into a sequence of the physical addresses that is ordered in accordance with a group of buffers, wherein each buffer is defined by an address pointer which points to a physical reference address and a buffer length, wherein the DMA controller comprises;
an index register configured to store the virtual address;
a descriptor register configured to store a list pointer pointing to a buffer list associated with the virtual address;
a state machine for controlling operations of the DMA controller and configured to directly determine the physical address,wherein under control of said state machine upon receipt of a data transfer request, the state machine stores an associated virtual address in the index register and stores an associated buffer list pointer in the descriptor register and determines one of a plurality of buffers from said buffer list according to the virtual address of the data transfer request by using said list pointer, wherein said state machine loads a physical reference address and buffer length through the selected buffer, determines the physical address by determining an offset within the selected buffer using said index register, and performs said data transfer request using said physical address.
17 Assignments
0 Petitions
Accused Products
Abstract
The embodiments that are described herein provide random access to individual data storage locations of a group of buffers, which may be scattered in the memory. These embodiments provide a virtual memory interface that applies virtual addresses in a flat memory linear addressing space as indices into the physical memory addresses that are ordered into a sequence in accordance with the group of buffers. In this way, these embodiments enable a device (e.g., a processor) to directly and sequentially access all of the scattered physical memory locations of a fragmented data item, such as a packet, without having to perform any memory segmentation or paging processes. In some embodiments, these accesses include both read and write accesses to the scattered data storage locations.
32 Citations
22 Claims
-
1. Apparatus, comprising:
-
a memory comprising data storage locations addressable by physical addresses; and a virtual memory interface comprising a direct memory access (DMA) controller operable to interface to the memory and operable to receive a virtual address from a bus and to internally translate the virtual address into a physical address, wherein the virtual address is an address in a flat memory linear addressing space and the virtual address is applied as an index into a sequence of the physical addresses that is ordered in accordance with a group of buffers, wherein each buffer is defined by an address pointer which points to a physical reference address and a buffer length, wherein the DMA controller comprises; an index register configured to store the virtual address; a descriptor register configured to store a list pointer pointing to a buffer list associated with the virtual address; a state machine for controlling operations of the DMA controller and configured to directly determine the physical address, wherein under control of said state machine upon receipt of a data transfer request, the state machine stores an associated virtual address in the index register and stores an associated buffer list pointer in the descriptor register and determines one of a plurality of buffers from said buffer list according to the virtual address of the data transfer request by using said list pointer, wherein said state machine loads a physical reference address and buffer length through the selected buffer, determines the physical address by determining an offset within the selected buffer using said index register, and performs said data transfer request using said physical address. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. An integrated wireless transceiver device, comprising:
-
a memory comprising data storage locations addressable by physical addresses; a wireless transceiver operable to transmit and receive packets of data; logic operable to store packet data in buffers scattered in the memory and to associate with each of the stored packets a respective list of buffer reference elements each of which comprises (i) a respective buffer pointer to a respective buffer containing data of the packet and (ii) a size of the respective buffer; and a virtual memory interface comprising a direct memory access (DMA) controller operable to interface to the memory and operable to receive a virtual address from a bus and to internally translate the virtual address into a physical address, wherein the virtual address is an address in a flat memory linear addressing space and the virtual address is applied as an index into a sequence of the physical addresses that is ordered in accordance with a group of said buffers, wherein the DMA controller comprises; an index register configured to store the virtual address; a descriptor register configured to store a list pointer pointing to a buffer list associated with the virtual address; a state machine for controlling operations of the DMA controller and configured to directly determine the physical address, wherein under control of said state machine upon receipt of a data transfer request, the state machine stores an associated virtual address in the index register and stores an associated list pointer in the descriptor register and selects one of a plurality of buffers from said buffer list according to the virtual address of the data transfer request by using said list pointer, wherein said state machine loads a physical reference address and buffer length through the selected buffer, determines the physical address by determining an offset within the selected buffer using said index register, and performs said data transfer request using said physical address. - View Dependent Claims (13, 14, 15)
-
-
16. A method, comprising:
-
fetching a list of buffer reference elements each of which comprises (i) a respective buffer pointer corresponding to a respective one of physical addresses of data storage locations in a memory and (ii) a respective buffer size; ordering ones of the physical addresses into a continuous sequence of virtual addresses in accordance with the list of buffer reference elements; receiving a virtual address by a direct memory access (DMA) controller and determining an associated physical address within said DMA controller according to the ordered physical addresses wherein under control of a state machine within said DMA controller the virtual address is stored in an index register and an associated list pointer is stored in a descriptor register, wherein said state machine loads a physical reference address and buffer length through said list pointer and determines a physical address using said index register, said loaded physical reference address; and performing data transfer operations with respect to the target data storage locations from or to said memory by means of said DMA controller using said physical address. - View Dependent Claims (17, 18, 19, 20)
-
-
21. A method, comprising:
-
wirelessly transmitting and receiving packets of data; storing packet data in buffers scattered in a memory that comprises data storage locations addressable by physical addresses; associating with each of the stored packets a respective list of buffer reference elements each of which comprises (i) a respective buffer pointer to a respective buffer containing data of the packet and (ii) a size of the respective buffer; and providing access to individual ones of the data storage locations by means of a direct memory access (DMA) controller based on respective orderings of ones of the physical addresses into respective sequences in accordance with respective ones of the lists of buffer reference elements and on a respective indexing of each the ordered physical address sequences with consecutive virtual addresses in a flat memory linear addressing space, wherein for performing an access to the data storage locations using a virtual address, the DMA controller under control of a state machine within said DMA controller determines the physical address of a virtual address within the DMA controller by storing the virtual address in an index register and an associated list pointer in a descriptor register, wherein said state machine loads a physical reference address and buffer length through a selected buffer reference element and determines a physical address by determining an offset within the selected buffer using said index register, and performs said access using said physical address. - View Dependent Claims (22)
-
Specification