|Publication number||US7970961 B2|
|Application number||US 12/268,604|
|Publication date||Jun 28, 2011|
|Filing date||Nov 11, 2008|
|Priority date||Sep 8, 2000|
|Also published as||CN1552028A, CN1552028B, DE60217884D1, DE60217884T2, EP1430405A1, EP1430405B1, US6874039, US7155541, US7464197, US8386665, US8719465, US20020038393, US20050125572, US20050216613, US20090070513, US20110320672, US20130138877, WO2003023625A1|
|Publication number||12268604, 268604, US 7970961 B2, US 7970961B2, US-B2-7970961, US7970961 B2, US7970961B2|
|Inventors||Kumar Ganapathy, Ruban Kanapathippillai, Saurin Shah, George Moussa, Earle F. Philhower, III, Ruchir Shah|
|Original Assignee||Intel Corporation|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (59), Non-Patent Citations (13), Referenced by (6), Classifications (19), Legal Events (1)|
|External Links: USPTO, USPTO Assignment, Espacenet|
This patent application is a continuation of U.S. patent application Ser. No. 11/036,828, filed Jan. 14, 2005, which is a continuation of U.S. patent application Ser. No. 09/949,461, filed Sep. 7, 2001, now U.S. Pat. No. 6,874,039, which claimed the benefit of U.S. provisional Patent Application No. 60/231,421, filed Sep. 8, 2000. This application also claims the benefit of U.S. patent application Ser. No. 11/036,827, filed Jan. 14, 2005.
This invention relates generally to direct memory access controllers. More particularly, the invention relates to direct memory access for a system on chip.
Within a computer system there are generally three methods of data transfer between main memory or the registers of a central processing unit (CPU) and input/output (I/O) devices over a system bus. These three methods are programmed I/O, interrupt driven I/O, and direct memory access (DMA). With programmed I/O and interrupt driven I/O, the CPU is responsible for obtaining data from main memory for transfer to the I/O devices and for obtaining data from the I/O devices for transfer to main memory over the system bus. Thus, the programmed I/O and interrupt driven I/O requires the direct involvement of the CPU which ties it up managing the data transfer so that it can not otherwise perform other more important functions.
Direct memory access (DMA) was introduced which required a centralized DMA controller to alleviate the CPU involvement in data transfer. Centralized DMA control is well known. The centralized DMA controller essentially took over the role of transferring data over the system bus between main memory and I/O devices. In DMA accesses, the CPU involvement was reduced to the initial setting up of the DMA transfer and the clean up at the completion of the DMA transfer. While the actual DMA data transfer was being controlled by the DMA controller, the CPU could perform other computations or functions. As a result, DMA data transfer were more efficient than either programmed I/O or interrupt driven I/O methods. In order to avoid collisions on the system bus, the DMA control was centralized into a centralized DMA controller. The centralized DMA controller performed arbitration of the system bus to the attached I/O devices allowing only one at a time to be transferring data between it and the main memory. Furthermore, when multiple I/O devices desired to perform a DMA access simultaneously, the centralized DMA controller had to perform some prioritization method. As a result, the control logic of the centralized DMA controller can be rather complicated which can lead to a rather large block size for the circuitry of a centralized DMA controller.
Improved semiconductor manufacturing techniques have been shrinking the feature sizes in integrated circuits, such as transistor channel lengths. The smaller transistors have allowed more complicated integrated circuit chips to be constructed such that functional systems can now be formed within a single integrated circuit chip and produce satisfactory yields. These functional systems, which are substantially complete systems, are oftentimes referred to as a system on chip (SOC). In an SOC, there may be many functional blocks that require transferring data to or from a memory. Additionally, it is oftentimes desirable when constructing an SOC, to make it flexible so that the number of functional blocks can be expanded to handle more data and/or add other types of functional blocks. As the number of functional blocks increases, the potential arbitration problems may arise in an SOC. A disadvantage to using centralized DMA controller in this case is that the control logic may need to be redesigned to provide for the expansion.
Like reference numbers and designations in the drawings indicate like elements providing similar functionality. A letter after a reference designator number represents an instance of an element having the reference designator number.
In the following detailed description of the present invention, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be obvious to one skilled in the art that the present invention may be practiced without these specific details. In other instances well known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of the present invention.
A distributed direct memory access (DMA) method, apparatus, and system is provided within a system on chip (SOC). DMA controller units are distributed to functional modules which desire direct memory access with a global buffer memory. The DMA controller units arbitrates which functional block has access to the global buffer memory. The functional modules interface to a system bus over which the direct memory access occurs. The global buffer memory, to which the direct memory access is desired, is coupled to the system bus. Bus arbitrators are utilized to arbitrate which functional modules have access to the system bus to perform the direct memory access. Once a functional module is selected by the bus arbitrator to have access to the system bus, it can establish a DMA routine with the global buffer memory.
Referring now to
Referring now to
The address lines are used by the bus to perform DMA transfers. The bus multiplexes a number of DMA transactions concurrently, and only deals with one transaction at a time. So it needs a set of address lines for that transfer (read or write). The address and data lines are distinct. The bus width of the system bus 200 for the data signals has a data system bus width (DSBW) of sixty four bits in one embodiment. A sixty four bit wide data system bus width facilitates high bandwidth data transfers. Access to the central system bus 200 by function modules of the system on a chip 100 is arbitrated by bus arbitrators 201A-201N coupled to the system bus 200 using a uniform programmable arbitration protocol. The standardized system bus 200 and the uniform arbitration protocol supplied by the bus arbitrators 201A-201N simplifies arbitration of the system bus 200. In order to gain access to the global buffer memory 210, the functional modules of the system on a chip 100 must first gain access to the system bus 200 through bus arbitrators 201A-201N. A round-robin arbitration scheme on the system bus 200 assures that each of the distributed DMA master controllers 203A-203N, 207 and 215 have access every so often to the system bus 200 and can access the global memory 210 at that time.
All code, data and state information for the VOP SOC 100 is stored into and read from the global buffer memory 210 which acts as a central depository. Thus, data bandwidth is important and it is desirable to efficiently transfer information into and out of the global buffer memory 210 over the system bus 200 using a distributed direct memory access (DMA) system of the present invention. While the bus arbitrators arbitrate access to the system bus, the distributed DMA system arbitrates access to the global buffer memory 210. The global memory 210 is a slave to the distributed DMA master controllers in the system on chip 100 and includes a slave DMA interface. The global buffer memory 210 responds to the DMA transfer requests over the system bus 200 initiated by the distributed DMA controllers. The distributed DMA system allows the functional modules to generate their own addresses for the global buffer memory and avoids instructions from constantly being sent every cycle to access large blocks of data. A register is set up during a DMA that allows addresses to be automatically generated and multiple data blocks or bytes to be accessed in sequence. The functional modules of the system on a chip 100 desiring direct memory access to the global buffer memory 210 include, one or more core signal processors 202A-202N, a multi-channel full duplex serial port 206 to interface to a telephone network, and a host port 214 to interface to a host and a packet network. The global buffer memory 210 of the SOC 100 is directly coupled to the central system bus 200.
The modules of the system on a chip 100 desiring direct memory access to the global buffer memory 210 have their own direct memory access (DMA) controllers but for the micro controller 223. The microcontroller 223 couples to the system bus 200 through a bus interface 224 and a bus arbitrator 201C. The microcontroller 223 acts as a system or executive manager orchestrating the scheduling of tasks and flow of data from the serial port 206 and the host port 214. It does not require a DMA controller, but does generate cache line misses for instruction and data that are routed to the global memory 210. The microcontroller has a data cache 227 and an instruction cache 228 associated with it that cause the generation of the cache line misses. The microcontroller sets up DMA descriptors and instructs the individual functional units of the SOC 100 to perform the DMA transfers. The bus arbitrator 201C and the bus interface 224 talk to each other for the microcontroller to gain access to the system bus. The microcontroller 223 provides job control and orchestrates the data transfers into and out of the global buffer memory 210 acting like a data traffic cop. The microcontroller 223 sets up a DMA by writing a DMA descriptor list into the global buffer memory regarding the DMA data transfer. It then communicates to the functional unit to perform the DMA of the data by pointing to the starting address of the DMA descriptor list. The functional unit then reads the DMA descriptor list and performs the DMA of the data. The DMA descriptor list includes a starting address for the data and the number of bytes to be transferred. The DMA descriptor list includes other information which is described in greater detail below. The one or more core processors 202A-202N can also form DMA descriptors in the global memory 210 especially for core DMA transfers, in addition to the microcontroller 223. As an example, the microcontroller 223 sets up a DMA with one of the core processors 202A-202N in order to process a frame or block of data for a given communication channel. It communicates with the one core processor the starting address of the descriptor list in the global buffer memory. The one core processor reads through each line in the descriptor list and performs the DMA of the data from the global buffer memory into the core processor's local memory.
The multi-channel serial port 206 interfaces to multiple full duplex time division multiplexed (TDM) telecommunication channels in order for the VOP SOC 100 to support multiple communications channels. The multi-channel serial port 206 acts as a receiver and transmitter for each of multiple communications channels which is on the order of 512 channels. Data received from the telephone network is stored by the multi-channel serial port 206 into the global buffer memory 210 for processing by the core processors 202A-202N. Data to be transmitted onto the telephone network after processing by the core processors 202A-202N, is retrieved by the multi-channel serial port 206 from the global buffer memory 210. To access the global buffer memory directly, the multi-channel serial port 206 includes a serial DMA controller 207 that couples to bus arbitrator 201A.
The host port 214 couples to a host to receive external data upon power up and set up information regarding the communication channels which it will process. Additionally, the host port 214 couples to a packet network to transceive packet payloads of data in full duplex for multiple communication channels. Data received from the packet network is stored by the host port 214 into the global buffer memory 210 for processing by the core processors 202A-202N. Data to be transmitted onto the packet network after processing by the core processors 202A-202N, is retrieved by the host port 214 from the global buffer memory 210. The packet payloads transceived by the host port 214 are packetized prior to transmission over the packet network and are depacketized after being received from the packet network into the packet payload data received through the host port. Alternatively, a packetizer and depacketizer can be included in the VOP SOC 100 to directly interface to a packet network.
In one embodiment, the host port 214 also implements the protocols of an Intel I960 compatible host port. The host port 214 couples to a host such an Intel I960 host processor in order to receive external information because the global buffer memory 210 is internal to the system on a chip 100. The host provides information through the host port 214 regarding a boot up sequence during boot up of the SOC 100 as well as channel set up information regarding the communication channels the SOC 100 is to support and any other external information a user needs to load into the SOC 100. The host port 214 in one embodiment includes a thirty two bit wide parallel data port. That is, the packet payload data and other information can flow from an external source into and out of the host port using a thirty two bit data word width. The host port 214 converts 32 bit data on the external bus into 64 bit data for transmission over the system bus 200 and 64 bit data from the system bus 200 into 32 bit data for transmission out the host port.
The core processors 202A-202N process the received TDM signals from the telephone network and can generate TDM signals in response for communication back over the telephone network or they can generate packet payloads for communication over the packet network. Packet payloads received from the packet network are processed by the core processors 202A-202N into packet payloads for transmission back over the packet network or into TDM data for communication over the telephone network. In any case, the data that needs processing is stored into the global buffer memory 210 first. The one or more core processors 202A-202N then retrieve the data for the given channel for processing. After processing is finished on the data by the one or more core processors 202A-202N it is stored into the global buffer memory 210. To access the global buffer memory directly, the one or more core processors 202A-202N include one or more core DMA controllers 203A-203N to DMA the data into their local memory. The code associated with the functional processing of the channel and the state information for prior processing of the channel and its data samples is also stored in the global buffer memory 210 and DMA transferred into the local memory (program memory and data memory) of the one of the one or more core processors that will process the new data samples.
Referring now to
The core DMA controller 203 and the DSP 300 ping-pong between which of the memory channels each are accessing. The core DMA controller 203 writes data or code into the memory locations of the data memory and program memory corresponding to the channel that is not being processed. While one channel of memory locations is being processed by the DSP 300, the other channel of memory locations is being read out or updated by DMA. For example, the DSP 300 processes the data in channel one 302A of the data memory 302 using the code stored in channel one 304A of the program memory 304B. While the DSP 300 is processing channel one, the core DMA controller 203 is updating channel two 302B of the program memory 304B to process a next channel. The core DMA controller 203 may also read out data from channel two after processing is completed and then update channel two 302B with new data for processing the next channel. The core DMA controller 203 transfers code and data between the global buffer memory 210 and the data memory 302 and program memory 304 using direct memory access.
The transfer of data between the data memory 302 and the core DMA controller 203 is by means of opportunistic reads and writes. That is at every opportunity, data is being transferred between a data memory 302 of the one or more core processors 200A-200N and the core DMA controller 203. If a processor is not using either port of the dual-ported data memory 302, data can be written into either port or read from either port. Whenever a free memory location(s) is available to write data into a bank that is being processed, the DMA process can write into the free memory location(s). After a memory location contains data that has completed processing, the DMA process can read from the memory location(s) in the data memory 302 when available. The core processors 200A-200N have a higher priority to access the memory banks, and the DMA controller cycle steals to get access to the data memory for opportunistic reads and writes. Similarly, the transfer of code between the program memory 304 and the global buffer memory 210 is by means of opportunistic reads and writes.
The instructions for DMA transfer between a data memory 302 and the global buffer memory 210 include start, stop, continue, suspend, and resume. There are DMA descriptor registers in the DMA controllers 203. One or more of these instructions can be written into the DMA descriptor registers while the DMA is in progress and can cause the appropriate action to be performed. A DMA transfer can also be stopped by a user using the stop command or the suspend command. After a DMA transfer is stopped, it can be continued by using the continue instruction. After stopping or suspending, a user may start another DMA transfer process. After suspending, a suspended DMA transfer can be resumed using the resume command. Upon reaching completion of the DMA process, an interrupt signal is coupled back to indicated to the host, the microcontroller, or core processor (DSP) to check the status of the DMA controller.
The bit width of the words of data stored into either channel of the data memory 302 matches that of the data system bus width (DSBW) of the system bus 200. It is desirable that the bit width of the words of code stored into either channel of the program memory 304 matches that of the instruction width of the DSP 300. In one embodiment, the width of words of data stored into either channel of the data memory 302 is sixty four bits wide while the width of words of program code stored into the either channel of the program memory 304 is forty bits wide. Thus, the core DMA controller 203 also converts (i.e. selectively packs) 64 bits of program code received from the global buffer memory 210 into forty bit word widths. The DMA controller presents 40-bits at a time to the DSP. The FIFO included in the core DMA controller 203 performs the 64-to-40 bit conversions. Every five words of sixty four bits (a total of 320 bits) of code read from the global buffer memory 210 is converted into eight words of forty bits (a total of 320 bits) of code. That is the bits are packed into a word which is the least common denominator between the data system bus width and the word width of the program memory 304.
Each of the distributed DMA controllers provide a source address to the global buffer memory when reading and a destination address to the global buffer memory when writing. The core DMA controller 203 also generates a destination address for the data memory 302 and program memory 304 when writing thereto or a source address when reading therefrom. The program memory 304 is 40-bit addressable having an address word that can be 40-bits wide. The data memory 302 is 64 bit addressable having an address word into memory that can be 64-bits wide. Thus, the core DMA controller 203 provides both source and destination address when performing DMA transfers between the global buffer memory 210 and the data memory 302 or program memory 304.
Referring now to
In the exemplary memory map of
Global buffer memory also includes a DMA descriptor table 401. The DMA descriptor table 401 has one or more DMA descriptive lists 402A-402N of information which refer to the direct memory accessible data stored in the global buffer memory 210. One or more DMA descriptive list are used by each of the distributed DMA controllers when DMA transferring information with the global buffer memory 210. Each of the DMA descriptive lists 402A-402N include starting pointers to data, code, status or other information in the global buffer memory. One or more DMA descriptive lists 402A-402N within the DMA descriptive table 401 point to the direct memory accessible data of DMAD 1, DMAD 2 and DMAD 3. After the direct memory accessible data is no longer valid or usable, the DMA descriptive lists are invalidated or cleared.
Referring now to
The serial DMA controller 207 couples to the system bus 200 through the bus arbitrator 201A to receive and transmit parallel bits of data. The serial DMA controller 207 couples to the telephone network to receive and transmit a serial data stream. The serial DMA controller 207 also includes DMA control signals to request and control the direct memory access through the system bus 200. These DMA control signals include DMA request (DMA REQ), DMA acknowledge (DMA ACK), interrupt request (INT), read/write strobe signal (R/W) which couple through the bus arbitrator 201A onto the control lines of the system bus 200. The DMA control signals are coupled to the control logic block 508. The control logic block 508 generates the DMA REQ, the INT, and the R/W strobe signals and receives the DMA ACK signal. The parallel data port of the serial data controller 207 couples to the bus arbitrator 201A. The receive FIFO buffer 502, the transmit FIFO buffer 504, the channel register, the data counter 506 and the status/control register 507 couple through the parallel data port of the serial DMA controller 207 to the bus arbitrator 201A. The receive FIFO buffer 502 and the transmit FIFO buffer 504 in one embodiment are one to two entries (64-bit) deep and provide burst writes and reads with the TDM remapper memory 5210 and the global buffer memory 210. The TDM remapper memory 510 of the serial DMA controller 207 couples through the multi-channel serial data port to the telephone network to transmit and receive a serial data stream thereon.
The TDM remapper memory 510 provides a serial to parallel conversion when receiving a serial data stream from the telephone network. The TDM remapper memory 510 provides a parallel to serial conversion when transmitting a serial data stream onto the telephone network. The TDM remapper memory appropriately interleaves data into time slots of the serial data stream for transmission. The TDM remapper memory appropriately deinterleaves data from time slots of the serial data stream to received data. The TDM remapper memory 510 also remaps the appropriate data into memory locations so that multiple serial communication channels are supported. That is upon receiving serial data, the serial data stream is read into the TDM remapper memory by deinterleaving data from time slots into appropriate memory locations so that an entire frame of data for a given channel is ready for DMA into the global buffer memory. For transmitting serial data, an entire frame of data is stored into the TDM remapper memory so that it can be read out blocks at a time and interleaved into appropriate time slots for a given channel.
The status/control register 507 of the serial DMA controller provides status information regarding the serial port 206 and the serial DMA controller when read. The status/control register 507 maintains a number of flags including a receive FIFO buffer full flag and a transmit FIFO buffer full flag. When the buffer full flag is set, no further data can be stored in the respective buffer until the flag is cleared. The channel register 505 is set to a particular channel number when you want specific status regarding that channel. If a channel number is not selected by the channel register, general status is provided when the status/control register 507 is read. When writing to the status/control register 507, the control of the serial DMA controller 207 and the serial port 206 can be established or updated. The data counter 506 counts the byte count in a DMA transfer to determine when a transfer is completed. The count value of the data counter 506 also facilitates generation of addresses for the global buffer memory 210.
Referring now to
Referring now to
Recall that in one embodiment of the present invention, the width of words of data stored into either channel of the data memory 302 is sixty four bits wide while the width of words of program code stored into the either channel of the program memory 304 is forty bits wide. In which case, the core DMA controller 203 converts 64 bits of program code received from the global buffer memory 210 into forty bit word widths. Program code having a width of 64 bits is stored into eight 8-bit bytes into the receive FIFO. The program code is read from the receive FIFO by a processor such that five 8-bit bytes (i.e. 40 bits) of code are read out at a time and into the program memory 304. Alternatively, this can be viewed as five 64-bit words (320 bits) being stored into the receive FIFO and eight 40 bit words (320 bits) being read out of the receive FIFO.
Additionally, the core DMA controller can decompress data received from the global buffer memory before writing it into the data memory 304 and can compresses data read from the data memory 304 prior to writing it into the global buffer memory 210. The multiplexer 712 selects whether information from the receive FIFO buffer 702 is coupled directly through to the data memory and program memory or one of two decoded outputs from the decoder 711 decoding the information is coupled through. Multiplexer 712 also allows information from the data counter 706, the status/control register 705 and the queue register/counter 707 to be coupled to the processor or the data memory and program memory. Multiplexer 713 selects whether information from the data memory, the program memory or the DSP is coupled directly through to the transmit FIFO buffer 702 or if one or two encoded outputs from the encoder 714 encoding the information is coupled through. In one embodiment, the compressed format can be either A-law or Mu-law non-linear compressed formats while the decompressed format is linear or pulse code modulated data. The compression and decompression is selected by setting bits in the status/control register 705 in response to a DMA descriptor list.
By encoding (compressing) and decoding (decompressing) data within the core DMA controller, the data from the serial port can remain compressed from the serial port over the system bus into the global buffer memory and then into the core DMA controller through the system bus. Keeping the data compressed within the SOC 100 for as long as possible provides increased bandwidth for data transfer.
The status/control register 705 of the core DMA controller provides status information regarding the respective core processor 200 and the core DMA controller when read. The status/control register 705 maintains a number of flags including a receive FIFO buffer full flag and a transmit FIFO buffer full flag. When the buffer full flag is set, no further data can be stored in the respective buffer until the flag is cleared. When writing to the status/control register 705, the control of the core DMA controller 203 can be established or updated. The data counter 706 counts the byte count in a DMA transfer to determine when a transfer is completed. The count value of the data counter 706 also facilitates generation of addresses for the global buffer memory 210.
In the DMA of data between global buffer memory and data memory or program memory of a core processor, each of the core DMA controllers uses the same DMA descriptor list which was used to DMA the data from host port or serial port into the global buffer memory. An additional DMA descriptor list is unnecessary.
Referring now to
The I/O port registers 810 of the host port 214 provides a point for a host processor to write data and to read data.
The status/control register 805 of the host DMA controller 215 provides status information regarding the host port 214 and the host DMA controller 215 when read. The status/control register 805 maintains a number of flags including a receive FIFO buffer full flag and a transmit FIFO buffer full flag. When the buffer full flag is set, no further data can be stored in the respective buffer until the flag is cleared. When writing to the status/control register 805, the control of the host MDA controller 215 and the host port 214 can be established or updated. The data counter 806 counts the byte count in a DMA transfer to determine when a transfer is completed. The count value of the data counter 806 also facilitates generation of addresses for the global buffer memory 210.
The preferred embodiments of the present invention are thus described. As those of ordinary skill will recognize, the present invention has many advantages. One advantage of the present invention is that the bandwidth to the global buffer memory is increased due to the wide system bus, the remapping of serial data, and compression/decompression of data on the fly. Another advantage of the present invention is that arbitration is simplified by using common standards for bus arbitration and is improved due to the distribution of direct memory access controllers.
While the present invention has been described in a particular embodiment of a voice over packet system on a chip, it is equally applicable to other systems on chips. Additionally, the present invention may be implemented in hardware, software, firmware or a combination thereof and utilized in systems, subsystems, components or sub-components thereof. When implemented in software, the elements of the present invention are essentially the code segments to perform the necessary tasks. The program or code segments can be stored in a processor readable medium or transmitted by a computer data signal embodied in a carrier wave over a transmission medium or communication link. The “processor readable medium” may include any medium that can store or transfer information. Examples of the processor readable medium include an electronic circuit, a semiconductor memory device, a ROM, a flash memory, an erasable ROM (EROM), a floppy diskette, a CD-ROM, an optical disk, a hard disk, a fiber optic medium, a radio frequency (RF) link, etc. The computer data signal may include any signal that can propagate over a transmission medium such as electronic network channels, optical fibers, air, electromagnetic, RF links, etc. The code segments may be downloaded via computer networks such as the Internet, Intranet, etc. In any case, the present invention should not be construed as limited by such embodiments, but rather construed according to the claims that follow below.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US4099236||May 20, 1977||Jul 4, 1978||Intel Corporation||Slave microprocessor for operation with a master microprocessor and a direct memory access controller|
|US4490785||May 7, 1982||Dec 25, 1984||Digital Equipment Corporation||Dual path bus structure for computer interconnection|
|US4507732||Sep 7, 1983||Mar 26, 1985||Burroughs Corporation||I/O subsystem using slow devices|
|US4701841||Jul 25, 1984||Oct 20, 1987||Digital Equipment Corporation||System for altering data transmission modes|
|US4779190||Dec 3, 1986||Oct 18, 1988||Ncr Corporation||Communication bus interface|
|US4782439||Feb 17, 1987||Nov 1, 1988||Intel Corporation||Direct memory access system for microcontroller|
|US4853846||Jul 29, 1986||Aug 1, 1989||Intel Corporation||Bus expander with logic for virtualizing single cache control into dual channels with separate directories and prefetch for different processors|
|US4982321||Oct 23, 1987||Jan 1, 1991||Honeywell Inc.||Dual bus system|
|US5109517||Oct 9, 1990||Apr 28, 1992||Ast Research, Inc.||System for selectively controlling slots in an IBM-AT/NEC 9801 dual-compatible computer|
|US5175826||May 26, 1988||Dec 29, 1992||Ibm Corporation||Delayed cache write enable circuit for a dual bus microcomputer system with an 80386 and 82385|
|US5333274||Oct 15, 1991||Jul 26, 1994||International Business Machines Corp.||Error detection and recovery in a DMA controller|
|US5359717||Dec 29, 1993||Oct 25, 1994||Advanced Micro Devices, Inc.||Microprocessor arranged to access a non-multiplexed interface or a multiplexed peripheral interface|
|US5414820||Mar 21, 1994||May 9, 1995||Nexgen, Inc.||Crossing transfers for maximizing the effective bandwidth in a dual-bus architecture|
|US5506973||May 17, 1995||Apr 9, 1996||Hitachi, Ltd.||Bus system for use with information processing apparatus|
|US5619729||Jan 11, 1996||Apr 8, 1997||Intel Corporation||Power management of DMA slaves with DMA traps|
|US5644784||Mar 3, 1995||Jul 1, 1997||Intel Corporation||Linear list based DMA control structure|
|US5664197||Apr 21, 1995||Sep 2, 1997||Intel Corporation||Method and apparatus for handling bus master channel and direct memory access (DMA) channel access requests at an I/O controller|
|US5708849||Jan 27, 1997||Jan 13, 1998||Intel Corporation||Implementing scatter/gather operations in a direct memory access device on a personal computer|
|US5729762||Apr 21, 1995||Mar 17, 1998||Intel Corporation||Input output controller having interface logic coupled to DMA controller and plurality of address lines for carrying control information to DMA agent|
|US5749092||Jan 27, 1997||May 5, 1998||Intel Corporation||Method and apparatus for using a direct memory access unit and a data cache unit in a microprocessor|
|US5751270||Aug 6, 1993||May 12, 1998||Intel Corporation||Method and apparatus for displaying an image using direct memory access|
|US5761532||Dec 29, 1995||Jun 2, 1998||Intel Corporation||Direct memory access controller with interface configured to generate wait states|
|US5794070||Oct 16, 1996||Aug 11, 1998||Intel Corporation||Method and apparatus for fast DMA transfer on an industry standard architecture (ISA) bus|
|US5802269||Jun 28, 1996||Sep 1, 1998||Intel Corporation||Method and apparatus for power management of distributed direct memory access (DDMA) devices|
|US5805842||Sep 26, 1995||Sep 8, 1998||Intel Corporation||Apparatus, system and method for supporting DMA transfers on a multiplexed bus|
|US5828903||Nov 19, 1996||Oct 27, 1998||Intel Corporation||System for performing DMA transfer with a pipeline control switching such that the first storage area contains location of a buffer for subsequent transfer|
|US5838993||Apr 26, 1996||Nov 17, 1998||Compaq Computer Corporation||System for DMA controller sharing control signals in conventional mode and having separate control signals for each number of channels in distributed mode|
|US5862387||Jun 27, 1997||Jan 19, 1999||Intel Corporation||Method and apparatus for handling bus master and direct memory access (DMA) requests at an I/O controller|
|US5870628||Jun 11, 1996||Feb 9, 1999||International Business Machines Corporation||Adaptor for receiving and processing asynchronous transfer mode cells within a computer network|
|US5875351||Jun 9, 1998||Feb 23, 1999||Compaq Computer Corporation||System for requesting access to DMA channel having address not in DMA registers by replacing address of DMA register with address of requested DMA channel|
|US5890012||Apr 25, 1995||Mar 30, 1999||Intel Corporation||System for programming peripheral with address and direction information and sending the information through data bus or control line when DMA controller asserts data knowledge line|
|US5894560||Aug 26, 1996||Apr 13, 1999||Lsi Logic Corporation||Method and apparatus for controlling I/O channels responsive to an availability of a plurality of I/O devices to transfer data|
|US5898694||Dec 30, 1996||Apr 27, 1999||Cabletron Systems, Inc.||Method of round robin bus arbitration|
|US5944800||Sep 12, 1997||Aug 31, 1999||Infineon Technologies Corporation||Direct memory access unit having a definable plurality of transfer channels|
|US6003122||Sep 30, 1996||Dec 14, 1999||Intel Corporation||Direct memory access controller|
|US6041400||Oct 26, 1998||Mar 21, 2000||Sony Corporation||Distributed extensible processing architecture for digital signal processing applications|
|US6081851||Dec 15, 1997||Jun 27, 2000||Intel Corporation||Method and apparatus for programming a remote DMA engine residing on a first bus from a destination residing on a second bus|
|US6108743||Feb 10, 1998||Aug 22, 2000||Intel Corporation||Technique for performing DMA including arbitration between a chained low priority DMA and high priority DMA occurring between two links in the chained low priority|
|US6122679||Mar 13, 1998||Sep 19, 2000||Compaq Computer Corporation||Master DMA controller with re-map engine for only spawning programming cycles to slave DMA controllers which do not match current programming cycle|
|US6151654||Dec 24, 1997||Nov 21, 2000||Intel Corporation||Method and apparatus for encoded DMA acknowledges|
|US6157970||Sep 24, 1997||Dec 5, 2000||Intel Corporation||Direct memory access system using time-multiplexing for transferring address, data, and control and a separate control line for serially transmitting encoded DMA channel number|
|US6182165||Jun 1, 1998||Jan 30, 2001||Advanced Micro Devices, Inc.||Staggered polling of buffer descriptors in a buffer descriptor ring direct memory access system|
|US6192428||Feb 13, 1998||Feb 20, 2001||Intel Corporation||Method/apparatus for dynamically changing FIFO draining priority through asynchronous or isochronous DMA engines in response to packet type and predetermined high watermark being reached|
|US6219583||Mar 31, 1995||Apr 17, 2001||Fanuc Limited||Control system|
|US6260081||Nov 24, 1998||Jul 10, 2001||Advanced Micro Devices, Inc.||Direct memory access engine for supporting multiple virtual direct memory access channels|
|US6275242||Dec 31, 1998||Aug 14, 2001||Intel Corporation||Method and apparatus for terminating direct memory access transfers from system memory to a video device|
|US6317799||Apr 28, 2000||Nov 13, 2001||Intel Corporation||Destination controlled remote DMA engine|
|US6317804||Nov 30, 1998||Nov 13, 2001||Philips Semiconductors Inc.||Concurrent serial interconnect for integrating functional blocks in an integrated circuit device|
|US6385671||Mar 29, 1999||May 7, 2002||Intel Corporation||Method/apparatus for flushing DMA transmit packet in FIFO when self-ID code generated by counter after bus reset is different than FIFO message self-ID field|
|US6418489||Jan 18, 2000||Jul 9, 2002||Motorola, Inc.||Direct memory access controller and method therefor|
|US6430628||Dec 8, 1998||Aug 6, 2002||Intel Corporation||Method and apparatus for reducing direct memory access transfers using smart coalescing|
|US6449259||Jun 30, 1997||Sep 10, 2002||Lucent Technologies Inc.||Communication controller|
|US6622183||Mar 21, 2000||Sep 16, 2003||Lsi Logic Corporation||Data transmission buffer having frame counter feedback for re-transmitting aborted data frames|
|US6782465||Oct 20, 1999||Aug 24, 2004||Infineon Technologies North America Corporation||Linked list DMA descriptor architecture|
|US20060026307||Dec 6, 2002||Feb 2, 2006||Andrea Bragagnini||Method for direct memory access, related architecture and computer program product|
|GB2195038A||Title not available|
|WO2001029656A2||Oct 20, 2000||Apr 26, 2001||Infineon Technologies North America Corp.||Linked list dma descriptor architecture|
|WO2001048976A2||Dec 28, 2000||Jul 5, 2001||Jarno Rajahalme||Method and apparatus for providing efficient application-level switching for multiplexed internet protocol media streams|
|WO2003023625A1||Aug 30, 2002||Mar 20, 2003||Intel Corporation||Method and apparatus for distributed direct memory access for systems on chip|
|1||Akira Kanuma et al., A CMOS 510K-Transistor Single-Chip Token-Ring LAN Controller (TRC) Compatible witih IEEE802.5 MAC Protocol, pp. 132-141, IEEE Journal of Solid-State Circuits, vol. 25, No. 1, Feb. 1990.|
|2||David A. Patterson & John L. Hennessy; Computer Architecture-A Quantitive Approach, pp. 533-538, Morgan Kaufman Pub Inc., San Mateo, CA, 1990.|
|3||David A. Patterson & John L. Hennessy; Computer Architecture—A Quantitive Approach, pp. 533-538, Morgan Kaufman Pub Inc., San Mateo, CA, 1990.|
|4||Encyclopedia of Computer Science and Engineering, 2d Edition, pp. 285-288; Van Nostrand Reinhold Company, Inc., 1983.|
|5||Jean-Loup Baer; Computer Systems Architecture; pp. 386-401; Computer Science Press, Inc., Rockville, Maryland; 1980.|
|6||John Mick & James Brick; Bit-Slice Microprocessor Design, Chapter VII, pp. 239-256, McGraw-Hill Book Company, 1980.|
|7||John P. Hayes; Computer Architecture and Organization, pp. 418-447; McGraw-Hill Book Company, 1978.|
|8||Joseph D. Greenfield; Practical Digital Design Using IC's, pp. 546-553; John Wiley & Sons, 1977.|
|9||Lattice Semiconductor Corporation, "Multi-Channel DMA Controller User's Guide," Aug. 2003.|
|10||M. Morris Mano; Digital Logic and Computer Design, pp. 547-552; Prentice-Hall, Englewood Cliffs, NJ, 1979.|
|11||Richard C. Dorf; The Electrical Engineering Handbook, pp. 1804-1807 & 1868-1869; CRC Press, Boca Raton, FL, 1993.|
|12||Steve Furber, ARM System-on-Chip Architecture, p. 221, Addison-Wesley, Pearson Education Limited, London, 2000.|
|13||Sujaya Srinivasan, High Speed Hardware-Assisted Real-Time Interprocess Communication for Embedded Microcontrollers, pp. 269-279, 2000 IEEE.|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US8358651 *||Feb 16, 2010||Jan 22, 2013||Marvell International Ltd.||Switch device having a plurality of processing cores|
|US8589601 *||Dec 7, 2009||Nov 19, 2013||Fujitsu Limited||I/O controller and descriptor transfer method|
|US9154444||Sep 30, 2013||Oct 6, 2015||Marvell Israel (M.I.S.L) Ltd.||Multi-stage switching system|
|US9185052||Jan 18, 2013||Nov 10, 2015||Marvell International Ltd.||Switch device having a plurality of processing cores|
|US9509639||Nov 9, 2015||Nov 29, 2016||Marvell Israel (M.I.S.L) Ltd.||Switch device having a plurality of processing cores|
|US20100198998 *||Dec 7, 2009||Aug 5, 2010||Fujitsu Limited||I/o controller and descriptor transfer method|
|U.S. Classification||710/22, 711/100, 712/1, 710/28, 710/240, 710/23, 710/27, 710/309, 710/26|
|International Classification||G06F12/00, G06F13/36, G06F13/28, G06F15/00|
|Cooperative Classification||G06F12/08, G06F13/28, G06F2213/0038, H04L49/90, G11C7/1072|