[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: How to achieve a long burst?
Maybe you don't need DMA on the host bridge...
I did some recent measurements of data transfer across the PCI bus
to and from a board with DMA capability. The motherboard is an
Intel CA810E with a 733MHz Pentium III. The target PCI board is
a RAMiX PMC694 which has a 266 MHz Motorola MPC8240 (PPC core with
other goodies including a DMA engine) behind an Intel 21554 bridge.
The PCI bus is 32 bits / 33 MHz. I'm running Linux on the Pentium
and "raw" code on the 8240.
Here's what I measured:
Bus Master Mode Direction MBytes/sec (64-byte chunks)
=========== ==== ========= ===========================
Pentium III memcpy read 3.98
Pentium III memcpy write 68.70
MPC8240 DMA read 22.66
MPC8240 DMA write 34.19
(memcpy is the gcc compiler supplied routine)
The host bridge seems to be doing a good job of write combining.
What this tells me is that for many applications the transfer
speed of a host Pentium may be fast enough. It also confirms
what has been observed before: it is better to push data across
the bus than to pull it. Certainly, if you want more speed, you
can implement a DMA controller on the host side; however, you'll
always be limited by the slower device (master or target) of the
transaction. (DMA also has other advantages: you can overlap DMA
transfers with other computation and you might be able to use a
slower CPU as a result.)
Scott
Ted Firlit writes:
>
> Unfortunately, it appears that the bridge chips on PC motherboards do
> not implement DMA engines. Therefore it falls to the peripherals to
> implement DMA.. which also mandates they must be capable of becoming the
> PCI bus master.
---------------------------------------------------------------------
Scott C. Karlin Princeton University
http://www.cs.princeton.edu/~scott Department of Computer Science
---------------------------------------------------------------------