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

Direct memory access apparatus and methods for transferring data between buses having different performance characteristics

Assignee: Advanced Micro Devices Inc
•
Filing: 1987-12-15
•
Granted: 1989-10-31
•
Expires: 2007-12-15
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract Methods and apparatus are disclosed for transferring data to and from a first bus, to which a first set of high performance devices, including at least one central processing unit ("CPU") is attached, and a second bus, to which a second set of relatively lower performance devices is attached. More particularly the invention accomplishes the transfer function in a manner that facilitates communication between the first and second set of devices from the comparatively lower performance of the second set of devices. Direct memory access ("DMA") apparatus and methods are disclosed, including a set of direct memory access channels. The DMA channels may be used to transfer data between the high performance channel (hereinafter referred to as the "Local Bus") coupled to the CPU in a reduced instruction set computer (RISC) system and a typically lower performance, peripheral bus (hereinafter referred to as a "Remote Bus"). The resulting DMA interface between the Local Bus and a Remote Bus permits a wide performance range of standard peripheral devices to be attached to the RISC system in a manner that does not limit system performance. The noval DMA may also be used as part of a data transfer controller (DTC) having other components, such as I/O ports, or may be used independently for transferring data between unmatched buses in, for example, computer systems, data transmission systems and the like.

Inventors

  • 👤 William M. Johnson
  • 👤 Timothy A. Olson
  • 👤 Drew J. Dutton
  • 👤 Sherman Lee
  • 👤 David W. Stoenner

Bibliographic Details

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

Claims Analysis

Total Claims: 46
Claim 1
Independent Claim 284 words
Direct memory access means having a plurality of operating states each indicated by a status signal for transferring data to and from a first bus to which a first set of devices, including at least one central processing unit ("CPU"), is attached, and a second bus to which a second set of devices, having performance characteristics differing from said first set of devices, is attached, wherein the transferring of data to and from said first and second buses facilitates communication between said first and second set of devices without adversely affecting the performance of said first set of devices and said second set of devices, comprising: (a) access means, operating independent of CPU intervention, coupled to said first bus and to said second bus, including at least one direct memory access channel means for determining data transfer addresses, wherein said direct memory access channel means has said plurality of operating states each of which is indicated by a status signal, and further wherein said access means is utilized for channelling direct memory access transfers from said first bus to said second bus and from said second bus to said first bus; (b) means for interconnecting said first bus to said access means; (c) means for interconnecting said second bus to said access means; and (d) a set of internal registers included within said access means, coupled to and receiving inputs from said first bus, wherein said set of internal registers are accessed by said direct memory access channel means for determining said data transfer addresses, where the contents of the set of internal registers are used for controlling and maintaining a given direct memory access channel operating state and the status indication associated therewith.
Claim 2
Dependent Claim 284 words
Direct memory access means having a plurality of operating states each indicated by a status signal for transferring data to and from a first bus to which a first set of devices, including at least one central processing unit ("CPU"), is attached, and a second bus to which a second set of devices, having performance characteristics differing from said first set of devices, is attached, wherein the transferring of data to and from said first and second buses facilitates communication between said first and second set of devices without adversely affecting the performance of said first set of devices and said second set of devices, comprising: (a) access means, operating independent of CPU intervention, coupled to said first bus and to said second bus, including at least one direct memory access channel means for determining data transfer addresses, wherein said direct memory access channel means has said plurality of operating states each of which is indicated by a status signal, and further wherein said access means is utilized for channelling direct memory access transfers from said first bus to said second bus and from said second bus to said first bus; (b) means for interconnecting said first bus to said access means; (c) means for interconnecting said second bus to said access means; and (d) a set of internal registers included within said access means, coupled to and receiving inputs from said first bus, wherein said set of internal registers are accessed by said direct memory access channel means for determining said data transfer addresses, where the contents of the set of internal registers are used for controlling and maintaining a given direct memory access channel operating state and the status indication associated therewith.
Claim 3
Dependent Claim 48 words
Direct memory access means as set forth in claim 1 wherein said means for interconnecting said second bus to said access means further comprises packing and funneling network means, coupled to said access means, for accommodating variable width data transfers between said first bus and said second bus.
Claim 4
Dependent Claim 35 words
Direct memory access means as set forth in claim 2 further comprising means coupled to said second bus, for prioritizing access to said channel means whenever a plurality of direct memory access channel means exists.
Claim 5
Dependent Claim 54 words
Direct memory access means as set forth in claim 2 wherein said access means further, comprises: (a) queue means, coupled to both said first and second buses for buffering data being transferred between said first bus and said second bus; and (b) programmable internal register means for controlling the operation of said queue means.
Claim 6
Dependent Claim 141 words
Direct memory access means as set forth in claim 4 wherein each of said direct memory access channel means further comprises: (a) first multiplexing means for selectively transferring word length data input to said access means from said first bus and for selectively transferring packed data, input to said access means from said packing and funneling network means, into said queue means; (b) first packing/funneling register means, coupled to said first mutiplexing means and said packing and funneling network means, for storing data during packing and funneling operations; (c) second multiplexing means for selectively transferring data output from said queue means, to be funneled to said packing and funneling network means via said first packing/funneling register means, and for selectively transferring packed data input from said packing and funneling network to said first multiplexing means via said first packing/funneling register means.
Claim 7
Dependent Claim 40 words
Direct memory access means as set forth in claim 4 wherein the data buffered in said queue means may be directly manipulated by said CPU to avoid latency associated with data transfers between said first bus and said queue means.
Claim 8
Dependent Claim 26 words
Direct memory access means as set forth in claim 4 further comprising means, coupled to said second bus and said queue means, for performing bus sizing.
Claim 9
Dependent Claim 93 words
Direct memory access means as set forth in claim 2 wherein said packing and funneling network means further comprises: (a) means for packing data on a transfer from said second bus to said first bus, including means for converting a number of byte and half word transfers on said second bus to a smaller number of half words and word transfers on said first bus; and (b) means for buffering data being packed, by said means for packing data, in order to facilitate full word transfers of packed data to said first bus.
Claim 10
Dependent Claim 105 words
Direct memory access means as set forth in claim 2 wherein said packing and funneling network means further comprises: (a) means for funneling data on a transfer from said first bus to said second bus, including means for converting a number of word and half word transfers on said first bus to a larger number of half word and byte transfers on said second bus; and (b) means for buffering data being funneled, by said means for funneling, in order to enable said means for funneling to extract half words and bytes of buffered data one at a time for transfer to said second bus.
Claim 11
Dependent Claim 32 words
Direct memory access means as set forth in claim 1 wherein said means for interconnecting said first bus to said access means further comprises means for initializing said set of internal registers.
Claim 12
Dependent Claim 39 words
Direct memory access means as set forth in claim 10 further comprising a plurality of signal paths used for carrying signals between said CPU and said set of internal registers, in order to initialize and control data transfer operations.
Claim 13
Dependent Claim 24 words
Direct memory access means as set forth in claim 11 wherein said plurality of signal paths comprise the pins of an integrated circuit package.
Claim 14
Dependent Claim 16 words
Direct memory access means as set forth in claim 1 wherein said access means is programmable.
Claim 15
Dependent Claim 33 words
Direct memory access means as set forth in claim 13 wherein said access means is programmed during initialization by said CPU to determine data transfer addresses independent of said CPU during transfer operations.
Claim 16
Dependent Claim 39 words
Direct memory access means as set forth in claim 1 further comprising means for decoupling the operation of said access means from program execution by said CPU to thereby permit said CPU and said access means to operate concurrently.
Claim 17
Dependent Claim 25 words
Direct memory access means as set forth in claim 1 wherein said access means further comprises means for performing nonsequential transfers independent of CPU intervention.
Claim 18
Dependent Claim 35 words
Direct memory access means as set forth in claim 1 wherein said access means further comprises transfer rate control means for controlling the rate of data transfer between said first bus and said second bus.
Claim 19
Dependent Claim 34 words
Direct memory access means as set forth in claim 1 operative to permit direct memory access channel means operation to overlap with the operation of said set of devices attached to said first bus.
Claim 20
Dependent Claim 27 words
Direct memory access means as set forth in claim 1 further comprising means, coupled to both said first and second buses, for performing data packing and unpacking.
Claim 21
Dependent Claim 30 words
Direct memory access means as set forth in claim 1 further comprising means, coupled to both said first and second buses, for swapping data packet location in words being transferred.
Claim 22
Dependent Claim 47 words
Direct memory access means as set forth in claim 1 wherein said access means further comprises means for decoupling the latency and bandwidth of accesses on said first bus from the latency and bandwidth of accesses on said second bus, with concurrency between accesses on both buses.
Claim 23
Dependent Claim 29 words
Direct memory access means as set forth in claim 1 wherein said access means may be configured to support block and pattern transfers between said first and second buses.
Claim 24
Dependent Claim 18 words
Direct memory access means as set forth in claim 1 suitable for transferring data between two synchronous buses.
Claim 25
Dependent Claim 18 words
Direct memory access means as set forth in claim 1 suitable for transferring data between two asynchronous buses.
Claim 26
Dependent Claim 16 words
Direct memory access means as set forth in claim 1 having a test mode of operation.
Claim 27
Dependent Claim 29 words
Direct memory access means as set forth in claim 1 operable in parallel with at least one data transfer controller, to which it is connected, in a master/slave relationship.
Claim 28
Independent Claim 295 words
A method for transferring data to and from a first bus, to which a first set of devices, including at least one central processing unit ("CPU"), is attached, and a second bus to which a second set of devices, having performance characteristics differing from said first set of devices, is attached, comprising the steps of: (a) transferring data between said first bus and said second bus, at a variable transfer rate, utilizing direct memory access means, for performing a CPU independent data transfer, wherein said direct memory access means includes at least one direct memory access channel means, coupled to said buses for determining data transfer addresses, wherein said direct memory access channel means has a plurality of operating states each of which is indicated by a status signal, and further wherein said direct memory access means is utilized for channelling direct memory access transfers from said first bus to said second bus and from said second bus to said first bus; (b) decoupling, via said direct memory access channel means, the latency and bandwidth of accesses on said first bus from the latency and bandwidth of accesses on said second bus, with concurrency between accesses on both buses, so that the performance of said first set of devices and said second set of devices each having differing performance characteristics are not adversely affected when transferring data between said first and second bus via said direct memory access means; and (c) initializing a set of registers included within said direct memory access means, coupled to said first bus, wherein said set of registers are accessed by said direct memory access channel means for determining said data transfer addresses, where the contents of said set of registers are used for controlling said direct memory access means.
Claim 29
Independent Claim 295 words
A method for transferring data to and from a first bus, to which a first set of devices, including at least one central processing unit ("CPU"), is attached, and a second bus to which a second set of devices, having performance characteristics differing from said first set of devices, is attached, comprising the steps of: (a) transferring data between said first bus and said second bus, at a variable transfer rate, utilizing direct memory access means, for performing a CPU independent data transfer, wherein said direct memory access means includes at least one direct memory access channel means, coupled to said buses for determining data transfer addresses, wherein said direct memory access channel means has a plurality of operating states each of which is indicated by a status signal, and further wherein said direct memory access means is utilized for channelling direct memory access transfers from said first bus to said second bus and from said second bus to said first bus; (b) decoupling, via said direct memory access channel means, the latency and bandwidth of accesses on said first bus from the latency and bandwidth of accesses on said second bus, with concurrency between accesses on both buses, so that the performance of said first set of devices and said second set of devices each having differing performance characteristics are not adversely affected when transferring data between said first and second bus via said direct memory access means; and (c) initializing a set of registers included within said direct memory access means, coupled to said first bus, wherein said set of registers are accessed by said direct memory access channel means for determining said data transfer addresses, where the contents of said set of registers are used for controlling said direct memory access means.
Claim 30
Dependent Claim 36 words
A method as set forth in claim 27 wherein said step of transferring further comprises the step of packing data being transferred from said second bus to said first bus to accommodate variable width data transfers.
Claim 31
Dependent Claim 36 words
A method as set forth in claim 28 wherein said step of transferring further comprises the step of funneling data being transferred from said first bus to said second bus to accommodate variable width data transfers.
Claim 32
Dependent Claim 36 words
A method as set forth in claim 29 wherein said step of transferring further comprises the step of multiplexing address signals and data signals being transferred to said second bus by said direct memory access means.
Claim 33
Dependent Claim 61 words
A method as set forth in claim 29 wherein said step of decoupling via said direct memory access channel means further comprises the step of storing data being transferred between said first bus and said second bus, into a storage means, having a queue organization, used for buffering data, under the control of programmed register means used for controlling said buffering.
Claim 34
Dependent Claim 63 words
A method as set forth in claim 31 wherein the step of decoupling via said direct memory access channel means further comprises the step of multiplexing word length data input to said direct memory access means from said first bus with packed word length data being transferred via said direct memory access means from said second bus, for buffering in said storage means.
Claim 35
Dependent Claim 39 words
A method as set forth in claim 31 wherein the data buffered in said storage means may be directly manipulated by said CPU to avoid the latency associated with data transfers between said first bus and said storage means.
Claim 36
Dependent Claim 68 words
A method as set forth in claim 27 wherein the step of transferring further comprises the step of funneling data on a transfer from said first bus to said second bus wherein said step of funneling further includes the step of converting a number of word and half word transfers on said first bus to a larger number of half word and byte transfers on said second bus.
Claim 37
Dependent Claim 43 words
A method as set forth in claim 34 wherein said step of converting further comprises the steps of: (a) buffering data being funneled; and (b) extracting half words and bytes of buffered data, one at a time, for transfer to said second bus.
Claim 38
Dependent Claim 34 words
A method as set forth in claim 27 wherein said step of transferring further comprises the step of prioritizing access to said direct memory access channel means whenever a plurality of channel means exists.
Claim 39
Dependent Claim 26 words
A method as set forth in claim 27 wherein said step of transferring further comprises the step of checking parity for both data and address transfers.
Claim 40
Dependent Claim 39 words
A method as set forth in claim 27 wherein said step of decoupling when transferring via said direct memory access means is accomplished by decoupling the operation of said direct memory access means from program execution by said CPU.
Claim 41
Dependent Claim 46 words
A method as set forth in claim 27 wherein said step of decoupling via said direct memory access channel means further comprises the step of initializing, via said CPU during initialization, said direct memory access means to determine data transfer addresses independent of the CPU operation.
Claim 42
Dependent Claim 22 words
A method as set forth in claim 27 wherein said step of transferring via said direct memory access means is performed nonsequentially.
Claim 43
Dependent Claim 38 words
A method as set forth in claim 27 wherein the step of decoupling via said direct memory access channel means further comprises the step of controlling said variable transfer rate between said first bus and said second bus.
Claim 44
Dependent Claim 21 words
A method as set forth in claim 27 wherein the step of transferring further comprises the step of performing bus sizing.
Claim 45
Dependent Claim 45 words
A method as set forth in claim 27 wherein said step of decoupling via said direct memory access channel means further comprises the step of overlapping direct memory access channel means operation with the operation of said set of devices attached to said first bus.
Claim 46
Dependent Claim 85 words
A method as set forth in claim 27 wherein the step of transferring further comprises the steps of: (a) packing data on a transfer from said second bus wherein said step of packing further includes the step of converting a number of byte and half word transfers on said second bus to a smaller number of half words and word transfers on said first bus; and (b) buffering data being packed in order to facilitate full word transfers of packed data to said first bus.

References Cited (Backward Citations)

US4300194A Cited
US4310879A Cited
US4422142A Cited
US4467447A Cited
US4400772A Cited
US4564900A Cited
US4604683A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1992-10-30 1993-05-01 1993-10-31 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 1996-10-30 1997-05-01 1997-10-31 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2000-10-30 2001-05-01 2001-10-31 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag