← Back to Patent Explorer
US5765023A Expired / Lapsed US ⏱️ 0.0 years remaining

DMA controller having multiple channels and buffer pool having plurality of buffers accessible to each channel for buffering data transferred to and from host computer

Assignee: Cirrus Logic Inc
•
Filing: 1995-09-29
•
Granted: 1998-06-09
•
Expires: 2015-09-29
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method and arrangement for performing direct memory access in a computer system having multi-channel direct memory access (DMA) is provided with a host computer having a main memory and a processor that runs software, a system interface bus coupling the host computer and the main memory, and a multi-channel DMA controller arrangement coupled to the system interface bus and having multiple input/output (I/O) channels. A common buffer pool having a plurality of buffers is accessible to each of the multiple channels for buffering data transferred to or from the host computer. A status queue is also provided, with each entry in the status queue indicating whether a corresponding buffer from the common pool of buffers is a free buffer available for use by one of the DMA channels in a DMA transaction. The status queue is searched for an entry in the status queue which indicates whether its corresponding buffer is a free buffer, when a DMA transaction is to occur over one of the DMA channels. When a free buffer is found, the entry in the status queue and the free buffer are claimed by the DMA channel. The starting address of the free buffer is then determined and data is buffered within the free buffer.

Inventors

  • 👤 Geary L. Leger
  • 👤 Bhoopal R. Benjaram
  • 👤 Peter R. Carpenter
  • 👤 Gary L. Schaps
  • 👤 John Andrew Wishneusky

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-01 09:03
CPC Classifications
G; G06; G06F; G06F13/00; G06F13/14; G06F13/20; G06F13/28

Claims Analysis

Total Claims: 34
Claim 1
Independent Claim 79 words
A computer system having multi-channel direct memory access (DMA), comprising: a host computer having a processor that runs software and a main memory; a system interface bus coupling the host computer and the main memory; a multi-channel DMA controller arrangement coupled to the system interface bus and having multiple input/output (I/O) channels; and a common buffer pool having a plurality of buffers accessible to each of the multiple channels for buffering data transferred to or from the host computer.
Claim 2
Dependent Claim 79 words
A computer system having multi-channel direct memory access (DMA), comprising: a host computer having a processor that runs software and a main memory; a system interface bus coupling the host computer and the main memory; a multi-channel DMA controller arrangement coupled to the system interface bus and having multiple input/output (I/O) channels; and a common buffer pool having a plurality of buffers accessible to each of the multiple channels for buffering data transferred to or from the host computer.
Claim 3
Dependent Claim 54 words
The system of claim 1, further comprising a status queue having a plurality of entries, with each entry in the status queue corresponding to a different one of the plurality of buffers and providing an indication as to whether the corresponding buffer is a free buffer available for use by one of the channels.
Claim 4
Dependent Claim 38 words
The system of claim 2, wherein entries for free buffers are non-contiguous entries within the status queue such that free buffer entries embedded in the status queue are identifiable and available for use by one of the channels.
Claim 5
Dependent Claim 70 words
The system of claim 3, wherein the DMA controller arrangement includes a controller mechanism for writing an in-use status in an entry in the status queue when one of the channels has claimed the entry in the status queue and the free buffer corresponding to the claimed entry in the status queue, the in-use status preventing other channels from claiming the entry in the status queue and the corresponding buffer.
Claim 6
Dependent Claim 40 words
The system of claim 4, wherein the DMA controller arrangement further includes a controller mechanism for writing a complete status in an entry in the status queue when the channel has received a packet of data in the corresponding buffer.
Claim 7
Dependent Claim 41 words
The system of claim 5, wherein the host computer includes a controller mechanism for clearing an entry in the status queue to make the entry in the status queue and the corresponding buffer available for use by one of the channels.
Claim 8
Dependent Claim 355 words
A computer system having multi-channel direct memory access (DMA), comprising: a host computer having a processor that runs software and a main memory connected to the processor for storing the software; a system interface bus coupling the host computer and the main memory; a multi-channel DMA controller arrangement coupled to the system interface bus and having multiple input/output (I/O) channels; and a common buffer pool having a plurality of buffers accessible to each of the multiple channels for buffering data transferred to or from the host computer, and further comprising: a status Queue having a plurality of entries, with each entry in the status queue corresponding to a different one of the plurality of buffers and providing an indication as to whether the corresponding buffer is a free buffer available for use by one of the channels, wherein entries for free buffers are non-contiguous entries within the status queue such that embedded free buffer entries in the status queue are identifiable and available for use by one of the channels, and wherein the DMA controller arrangement includes a controller mechanism for writing an in-use status in an entry in the status queue when one of the channels has claimed the entry in the status queue and the free buffer corresponding to the claimed entry in the status queue, the in-use status preventing other channels from claiming the entry in the status queue and the corresponding buffer, and wherein the DMA controller arrangement further includes a controller mechanism for writing a complete status in an entry in the status queue when the channel has received a packet of data in a corresponding buffer, and wherein the host computer includes a process for clearing an entry in the status queue to make the entry in the status queue and the corresponding buffer available for use by one of the channels, further comprising: a counting arrangement that maintains a count of the number of entries in the status queue that have been written with either an in-use status or a complete status and a count of the number of entries in the status queue that have been cleared.
Claim 9
Dependent Claim 23 words
The system of claim 7, further comprising a controller mechanism for determining the number of free buffers as a function of said counts.
Claim 10
Dependent Claim 60 words
The system of claim 4, further comprising a pointer that points to the entry in the status queue of a next likely free buffer, the DMA controller arrangement including a controller mechanism for examining the entry in the status queue pointed to by the pointer when searching for a free buffer; and updating the pointer after claiming a free buffer.
Claim 11
Dependent Claim 39 words
The system of claim 2, further comprising a descriptor queue, with each entry in the descriptor queue in the set corresponding to a different one of the plurality of buffers and providing a starting address of the corresponding buffer.
Claim 12
Dependent Claim 51 words
The system of claim 10, wherein the status queue and the descriptor queue correspond to the same buffers such that the DMA controller arrangement includes a controller mechanism for examining the status queue to identify a free buffer and obtaining the starting address or the free buffer from the descriptor queue.
Claim 13
Independent Claim 140 words
A method of performing direct memory access (DMA) in a system having a DMA controller arrangement with multiple DMA channels and a common pool of buffers, comprising: maintaining a status queue, with each entry in the status queue indicating whether a corresponding buffer from the common pool of buffers is a free buffer available for use by one of the DMA channels in a DMA transaction; searching in the status queue for an entry which indicates its corresponding buffer is a free buffer, when a DMA transaction is to occur over one of the DMA channels; claiming the entry in the status queue and the free buffer with the DMA channel when the entry in the status queue with the corresponding free buffer is found; determining a starting address of the free buffer; and buffering data within the free buffer.
Claim 14
Dependent Claim 25 words
The method of claim 12, further comprising arbitrating among the DMA channels for a right to access the status queue and claim a free buffer.
Claim 15
Dependent Claim 36 words
The method of claim 13, further comprising preventing a DMA channel that has been granted the right from obtaining the right again until after the other DMA channels have had an opportunity to obtain the right.
Claim 16
Dependent Claim 71 words
The method of claim 14, wherein the step of maintaining the status queue includes writing an in-use status in an entry in the status queue when one of the DMA channels has claimed the entry in the status queue and the free buffer corresponding to the claimed entry in the status queue, the in-use status preventing other DMA channels from claiming the entry in the status queue and the corresponding buffer.
Claim 17
Dependent Claim 39 words
The method of claim 15, wherein the step of maintaining the status queue includes writing a complete status in an entry in the status queue when the DMA channel has received a packet of data in the corresponding buffer.
Claim 18
Dependent Claim 39 words
The method of claim 16, wherein the step of maintaining includes clearing an entry in the status queue to make the entry in the status queue and the corresponding buffer available for use by one of the DMA channels.
Claim 19
Independent Claim 363 words
A method of performing direct memory access (DMA) in a system having a DMA controller arrangement with multiple DMA channels and a common pool of buffers, comprising: maintaining a status queue, with each entry in the status queue indicating whether a corresponding buffer from the common pool of buffers is a free buffer available for use by one of the DMA channels in a DMA transaction; searching in the status queue for an entry which indicates its corresponding buffer is a free buffer, when a DMA transaction is to occur over one of the DMA channels; claiming the entry in the status queue and the free buffer with the DMA channel when the entry in the status queue with the corresponding free buffer is found; determining a starting address of the free buffer; and buffering data within the free buffer, arbitrating among the DMA channels for a right to access the status queue and claim a free buffer, preventing a DMA channel that has been granted the right from obtaining the right again until after the other DMA channels have had an opportunity to obtain the right, wherein the step of maintaining the status queue includes writing an in-use status in an entry in the status queue when one of the DMA channels has claimed the entry in the status queue and the free buffer corresponding to the claimed entry in the status queue, the in-use status preventing other DMA channels from claiming the entry in the status queue and the corresponding buffer, wherein the step of maintaining the status queue includes writing a complete status in an entry in the status queue when the DMA channel has received a packet of data in the corresponding buffer, wherein the step of maintaining includes clearing an entry in the status queue to make the entry in the status queue and the corresponding buffer available for use by one of the DMA channels, and maintaining a count of the number of entries in the status queue that have been written with either an in-use status or a complete status and a count of the number of entries in the status queue that have been cleared.
Claim 20
Dependent Claim 19 words
The method of claim 18, further comprising determining the number of free buffers as a function of said counts.
Claim 21
Dependent Claim 52 words
The method of claim 17, further comprising maintaining a pointer that points to the entry in the status queue of a next likely free buffer, examining the entry in the status queue pointed to by the pointer when searching for a free buffer, and updating the pointer after claiming a free buffer.
Claim 22
Dependent Claim 37 words
The method of claim 20, further comprising maintaining a descriptor queue, with each entry in the descriptor queue corresponding to a different one of the plurality of buffers and providing a starting address of the corresponding buffer.
Claim 23
Dependent Claim 49 words
The method of claim 21, wherein the status queue and the descriptor queue correspond to the same buffers, and the step of determining the starting address includes examining the status queue to identify a free buffer and obtaining the starting address of the free buffer from the descriptor queue.
Claim 24
Dependent Claim 53 words
A multi-channel direct memory access (DMA) controller arrangement that controls DMA with a host computer, comprising: a multi-channel DMA controller arrangement having multiple input/output (I/O) channels; and a common buffer pool having a plurality of buffers accessible to each of the multiple channels for buffering data transferred to or from the host computer.
Claim 25
Dependent Claim 53 words
A multi-channel direct memory access (DMA) controller arrangement that controls DMA with a host computer, comprising: a multi-channel DMA controller arrangement having multiple input/output (I/O) channels; and a common buffer pool having a plurality of buffers accessible to each of the multiple channels for buffering data transferred to or from the host computer.
Claim 26
Dependent Claim 51 words
The DMA controller arrangement of claim 23, further comprising a status queue, with each entry in the status queue corresponding to a different one of the plurality of buffers and providing an indication as to whether the corresponding buffer is a free buffer available for use by one of the channels.
Claim 27
Dependent Claim 40 words
The DMA controller arrangement of claim 24, wherein entries for free buffers are non-contiguous entries within the status queue such that embedded free buffer entries in the status queue are identifiable and available for use by one of the channels.
Claim 28
Dependent Claim 72 words
The DMA controller arrangement of claim 25, wherein the DMA controller arrangement includes a controller mechanism for writing an in-use status in an entry in the status queue when one of the channels has claimed the entry in the status queue and the free buffer corresponding to the claimed entry in the status queue, the in-use status preventing other channels from claiming the entry in the status queue and the corresponding buffer.
Claim 29
Dependent Claim 35 words
The DMA controller arrangement of claim 26, wherein the controller mechanism writes a complete status in an entry in the status queue when the channel has received a packet of data in the corresponding buffer.
Claim 30
Dependent Claim 270 words
A multi-channel direct memory access (DMA) controller arrangement that controls DMA with a host computer, comprising: a multi-channel DMA controller arrangement having multiple input/out-out (I/O) channels; and a common buffer pool having a plurality of buffers accessible to each of the multiple channels for buffering data transferred to or from the host computer, further comprising: a status queue, with each entry in the status queue corresponding to a different one of the plurality of buffers and providing an indication as to whether the corresponding buffer is a free buffer available for use by one of the channels, wherein entries for free buffers are non-contiguous entries within the status queue such that embedded free buffer entries in the status queue are identifiable and available for use by one of the channels, wherein the DMA controller arrangement includes a controller mechanism for writing an in-use status in an entry in the status queue when one of the channels has claimed the entry in the status queue and the free buffer corresponding to the claimed entry in the status queue, the in-use status preventing other channels from claiming the entry in the status queue and the corresponding buffer, and wherein the controller mechanism writes a complete status in an entry in the status queue when the channel has received a packet of data in the corresponding buffer, and a counting arrangement that maintains a count of the number of entries in the status queue that have been written with either an in-use status or a complete status and a count of the number of entries in the status queue that have been cleared.
Claim 31
Dependent Claim 24 words
The DMA controller arrangement of claim 28, further comprising the controller mechanism determines the number of free buffers as a function of said counts.
Claim 32
Dependent Claim 58 words
The DMA controller arrangement of claim 29, further comprising a pointer that points to the entry in the status queue of a next likely free buffer, in which the controller mechanism examines the entry in the status queue pointed to by the pointer when searching for a free buffer, and updating the pointer after claiming a free buffer.
Claim 33
Dependent Claim 38 words
The DMA controller arrangement of claim 30, further comprising a descriptor queue, with each entry in the descriptor queue corresponding to a different one of the plurality of buffers and providing a starting address of the corresponding buffer.
Claim 34
Dependent Claim 47 words
The DMA controller arrangement of claim 31, wherein the status queue and the descriptor queue correspond to the same buffers such that the controller mechanism examines the status queue to identify a free buffer and obtaining the starting address of the free buffer from the descriptor queue.

References Cited (Backward Citations)

US4956771A Cited
US5289583A Cited
US5450591A Cited
US5412780A Cited
US5444853A Cited
US5493547A Cited
US5655151A Cited
US5493652A Cited
US5685005A Cited
US5606559A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2001-06-08 2001-12-08 2002-06-09 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2005-06-08 2005-12-08 2006-06-09 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2009-06-08 2009-12-08 2010-06-09 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag