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

Programmable DMA controller

Assignee: California Institute of Technology
•
Filing: 1992-02-10
•
Granted: 1993-05-18
•
Expires: 2012-02-10
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract In a data system having a memory, plural input/output (I/O) devices and a bus connecting each of the I/O devices to the memory, a direct memory access (DMA) controller regulating access of each of the I/O devices to the bus, including a priority register storing priorities of bus access requests from the I/O devices, an interrupt register storing bus access requests of the I/O devices, a resolver for selecting one of the I/O devices to have access to the bus, a pointer register storing addresses of locations in the memory for communication with the one I/O device via the bus, a sequence register storing an address of a location in the memory containing a channel program instruction which is to be executed next, an ALU for incrementing and decrementing addresses stored in the pointer register, computing the next address to be stored in the sequence register, computing an initial contents of each of the register. The memory contains a sequence of channel program instructions defining a set up operation wherein the contents of each of the registers in the channel register is initialized in accordance with the initial contents computed by the ALU and an access operation wherein data is transferred on the bus between a location in the memory whose address is currently stored in the pointer register and the one I/O device enabled by the resolver.

Inventors

  • 👤 David F. Hendry

Bibliographic Details

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

Claims Analysis

Total Claims: 16
Claim 1
Independent Claim 376 words
In a data system having a memory, plural input/output (I/O) devices and a bus connecting each of said I/O devices to said memory, a direct memory access (DMA) controller for regulating access of each of said I/O devices to said bus, said DMA controller comprising: global register means comprising: priority register means for storing priority parameters for each of said I/O devices, said parameters corresponding to relative priorities accorded to simultaneously pending requests by at least some of said plural I/O devices for access to said bus, interrupt register means for storing requests for access to said bus from respective ones of said I/O devices, resolver means for determining from said priority register means and said interrupt register means one of said I/O devices to have access to said bus and for transmitting an acknowledgment to said one I/O device enabling said device to communicate with said memory on said bus; channel register means comprising: pointer register means for storing addresses of locations in said memory for communication with said one I/O device via said bus, sequence register means for storing an address of a location in said memory containing a channel program instruction which is to be executed next; arithmetic logic unit (ALU) means comprising: means for one of incrementing and decrementing addresses stored in said pointer register means in accordance with a corresponding channel program instruction, means for computing the next address to be stored in said sequence register means in accordance with a corresponding channel program instruction, means for computing an initial contents of each of said register means in said channel register means in accordance with a corresponding channel program instruction; said memory containing a sequence of channel program instructions for each of said channels at locations in said memory whose addresses are sequentially stored in said sequence register means, said instructions comprising means for defining: a set up operation wherein the contents of each of said registers in said channel register means is initialized in accordance with said initial contents computed by said ALU means, an access operation wherein data is transferred on said bus between a location in said memory whose address is currently stored in said pointer register means and said one I/O device enabled by said resolver means.
Claim 2
Dependent Claim 376 words
In a data system having a memory, plural input/output (I/O) devices and a bus connecting each of said I/O devices to said memory, a direct memory access (DMA) controller for regulating access of each of said I/O devices to said bus, said DMA controller comprising: global register means comprising: priority register means for storing priority parameters for each of said I/O devices, said parameters corresponding to relative priorities accorded to simultaneously pending requests by at least some of said plural I/O devices for access to said bus, interrupt register means for storing requests for access to said bus from respective ones of said I/O devices, resolver means for determining from said priority register means and said interrupt register means one of said I/O devices to have access to said bus and for transmitting an acknowledgment to said one I/O device enabling said device to communicate with said memory on said bus; channel register means comprising: pointer register means for storing addresses of locations in said memory for communication with said one I/O device via said bus, sequence register means for storing an address of a location in said memory containing a channel program instruction which is to be executed next; arithmetic logic unit (ALU) means comprising: means for one of incrementing and decrementing addresses stored in said pointer register means in accordance with a corresponding channel program instruction, means for computing the next address to be stored in said sequence register means in accordance with a corresponding channel program instruction, means for computing an initial contents of each of said register means in said channel register means in accordance with a corresponding channel program instruction; said memory containing a sequence of channel program instructions for each of said channels at locations in said memory whose addresses are sequentially stored in said sequence register means, said instructions comprising means for defining: a set up operation wherein the contents of each of said registers in said channel register means is initialized in accordance with said initial contents computed by said ALU means, an access operation wherein data is transferred on said bus between a location in said memory whose address is currently stored in said pointer register means and said one I/O device enabled by said resolver means.
Claim 3
Dependent Claim 96 words
The DMA controller of claim 1 wherein said channel register means further comprise: channel status register means for storing a data count corresponding to a data block size to be transferred in the corresponding channel, and counter register means for storing a repeat count of the number of times an access operation is to be repeated in a corresponding channel to complete a corresponding channel program, wherein the contents of said channel status register means and said counter register means is initialized in accordance with said sequence of program instructions corresponding to said set up operation.
Claim 4
Dependent Claim 68 words
The DMA controller of claim 2 further comprising means for causing said DMA controller to relinquish access to said bus whenever one of: the amount of data transferred on said bus during said access operation equals the data count stored in said channel status register, and the access instruction has been executed repeatedly a number of times equal to said repeat count stored in said counter register means.
Claim 5
Dependent Claim 74 words
The DMA controller of claim 1 wherein a central processing unit (CPU) is connected to said bus, said DMA controller further comprising: means for asserting a bus hold request to said CPU whenever said resolver means selects one of said I/O devices for access to said bus, and wherein said CPU comprises means for enabling said DMA controller to control access to said bus by transmitting a bus hold acknowledgment to said DMA controller.
Claim 6
Dependent Claim 51 words
The DMA controller of claim 4 further comprising: burst register means for storing a minimum amount of time that said DMA controller controls access to said bus upon being enabled by said CPU; and means for ignoring control signals from said CPU removing access to said bus from said DMA controller.
Claim 7
Dependent Claim 24 words
The DMA controller of claim 1 wherein one of said I/O devices comprises another DMA controller which is a slave to said DMA controller.
Claim 8
Dependent Claim 91 words
The DMA controller of claim 1 wherein said global register means further comprise: bandwidth register means for defining for each I/O device the amount of time that it is permitted to have access to said bus relative to the amount of time that it does not have access to said bus, and means for terminating the access of said one I/O device upon expiration of said amount of time, wherein the contents of said bandwidth register is initialized in accordance with said sequence of instructions corresponding to said set up operation.
Claim 9
Dependent Claim 355 words
In a direct memory access controller for a data system having a memory, plural input/output (I/O) devices and a bus connecting each of said I/O devices to said memory, the direct memory access (DMA) controller for regulating access of each of said I/O devices to said bus, the improvement comprising: global register means comprising: priority register means for storing priority parameters for each of said I/O devices, said parameters corresponding to relative priorities accorded to simultaneously pending requests by at least some of said plural I/O devices for access to said bus, interrupt register means for storing requests for access to said bus from respective ones of said I/O devices, resolver means for determining from said priority register means and said interrupt register means one of said I/O devices to have access to said bus and for transmitting an acknowledgment to said one I/O device enabling said device to communicate data on said bus; channel register means comprising: pointer register means for storing addresses of locations in said memory for communication with said one I/O device via said bus, sequence register means for storing an address of a location in said memory containing a channel program instruction which is to be executed next; arithmetic logic unit (ALU) means comprising: means for one of incrementing and decrementing addresses stored in said pointer register means, means for computing the next address to be stored in said sequence register means, means for computing an initial contents of each of said register means in said channel register means; said memory containing a sequence of channel program instructions for each of said channels at locations in said memory whose addresses are sequentially stored in said sequence register means, said instructions comprising means for defining: a set up operation wherein the contents of each of said registers in said channel register means is initialized in accordance with said initial contents computed by said ALU means, an access operation wherein data is transferred on said bus between a location in said memory whose address is currently stored in said pointer register means and said one I/O device enabled by said resolver means.
Claim 10
Dependent Claim 355 words
In a direct memory access controller for a data system having a memory, plural input/output (I/O) devices and a bus connecting each of said I/O devices to said memory, the direct memory access (DMA) controller for regulating access of each of said I/O devices to said bus, the improvement comprising: global register means comprising: priority register means for storing priority parameters for each of said I/O devices, said parameters corresponding to relative priorities accorded to simultaneously pending requests by at least some of said plural I/O devices for access to said bus, interrupt register means for storing requests for access to said bus from respective ones of said I/O devices, resolver means for determining from said priority register means and said interrupt register means one of said I/O devices to have access to said bus and for transmitting an acknowledgment to said one I/O device enabling said device to communicate data on said bus; channel register means comprising: pointer register means for storing addresses of locations in said memory for communication with said one I/O device via said bus, sequence register means for storing an address of a location in said memory containing a channel program instruction which is to be executed next; arithmetic logic unit (ALU) means comprising: means for one of incrementing and decrementing addresses stored in said pointer register means, means for computing the next address to be stored in said sequence register means, means for computing an initial contents of each of said register means in said channel register means; said memory containing a sequence of channel program instructions for each of said channels at locations in said memory whose addresses are sequentially stored in said sequence register means, said instructions comprising means for defining: a set up operation wherein the contents of each of said registers in said channel register means is initialized in accordance with said initial contents computed by said ALU means, an access operation wherein data is transferred on said bus between a location in said memory whose address is currently stored in said pointer register means and said one I/O device enabled by said resolver means.
Claim 11
Dependent Claim 95 words
The improvement of claim 8 wherein said channel register means further comprise: channel status register means for storing a data count corresponding to a data block size to be transferred in the corresponding channel, and counter register means for storing a repeat count of the number of times an access operation is to be repeated in a corresponding channel to complete a corresponding channel program, wherein the contents of said channel status register means and said counter register means is initialized in accordance with said sequence of program instructions corresponding to said set up operation.
Claim 12
Dependent Claim 67 words
The improvement of claim 9 further comprising means for causing said DMA controller to relinquish access to said bus whenever one of: the amount of data transferred on said bus during said access operation equals the data count stored in said channel status register, and the access instruction has been executed repeatedly a number of times equal to said repeat count stored in said count register means.
Claim 13
Dependent Claim 83 words
The improvement of claim 8 wherein a central processing unit (CPU) is connected to said bus, said DMA controller further comprising: means for asserting a bus hold request to said CPU whenever said resolver means selects one of said I/O devices for access to said bus, and wherein said CPU comprises means for enabling said DMA controller to have access or permit the selected one I/O device to have access to said bus by transmitting a bus hold acknowledgment to said DMA controller.
Claim 14
Dependent Claim 56 words
The improvement of claim 11 further comprising: burst register means for storing a minimum amount of time that said DMA controller maintains access to said bus upon being enabled by said CPU to have access to said bus; and means for ignoring control signals from said CPU removing access to said bus from said DMA controller.
Claim 15
Dependent Claim 23 words
The improvement of claim 8 wherein one of said I/O devices comprises another DMA controller which is a slave to said DMA controller.
Claim 16
Dependent Claim 90 words
The improvement of claim 8 wherein said global register means further comprise: bandwidth register means for defining for each I/O device the amount of time that it is permitted to have access to said bus relative to the amount of time that it does not have access to said bus, and means for terminating the access of said one I/O device upon expiration of said amount of time, wherein the contents of said bandwidth register is initialized in accordance with said sequence of instructions corresponding to said set up operation.

References Cited (Backward Citations)

US4075691A Cited
US4067059A Cited
US4371932A Cited
US4603383A Cited
US4716523A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1996-05-17 1996-11-16 1997-05-18 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2000-05-17 2000-11-16 2001-05-18 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2004-05-17 2004-11-16 2005-05-18 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag