Re: DMA transfer speed issues on PCI card with PCI and PCI-X busses
- From: already5chosen@xxxxxxxxx
- Date: 25 Nov 2006 14:08:56 -0800
Oliver wrote:
Hi all,
we're using a PCI card with large on-board memory and a PCI interface chip with DMA busmaster engine
(PCI9656 from PLX but only using 32 bit width). Data transfer is done using Scatter Gather DMA and
is running stable. The card is working in PCI and PCI-X busses with 33 MHz and 66 MHz.
You can't use PCI-X _bus_ with PCI9656. PCI9656 is PCI-only device.
What you use is PCI-X _slot_ in PCI mode.
When measuring the DMA transfer speed I get some strange results:
used in a standard 32 bit PCI slot:
read: card to PC memory: 80-100 MB/s
write: PC memory to card: 80-100 MB/s
used in a 64 bit PCI-X slot with 66 MHz:
read: card to PC memory: 200-220 MB/s
write: PC memory to card: 40-50 MB/s
using an older design with a pure 33 MHz 32 bit interface chip (PCI9080)in a PCI-X slot:
read: card to PC memory: 80-100 MB/s
write: PC memory to card: 40-50 MB/s
Concerning the read direction the speed is as expected but as soon as a PCI-X slot is involved the
bus transfer speed in write direction drops a lot. The Scatter-Gather list is located in PC memory
what should make access easier in write direction as the PCI bus need not to change direction.
We tested at least 20 different PCI-X systems and get these results with ±10%. It can't be a local
bus issue as the card is at least able to stream data with 100 MB/s on a 32 bit PCI slot.
Anybody an idea where to start searching and which setup to change?
When monitoring PCI bus signal I see that in write direction the transfer drops and is restarted
after only a few bytes of transfer. But why? We modified the design to be sure that the local bus is
able to run with even 250 MB/s with no latency.
There're no other card accesses while DMA is running, the driver simply waits for the interrupt.
Any help is appreciated.
Best regards
Oliver
First you seem confused about the naming of PCI transfers.
For bus-master cards:
PCI-to-memory = Write
Memory-to-PCI = Read
Second, in PLX IO accelerators you could program the PCI command used
in DMA transactions (See register 6Ch). The default For Memory-to-PCI
DMA is "memory read line". Some chipsets, e.g. AMD 8132 interpret
"memory read line" command as "read one processor cache line" i.e. in
case of Opteron 64 bytes. Reading just 64 bytes leads to suboptimal
performance.
Program DMA to use "memory read multiple" command and on many systems
you will see immediate increase in performance.
Third, you didn't tell us about your local bus. May be the bottleneck
is on the local side of the bridge?
Fourth, your question doesn't really belong to m.p.d.d.d. You are just
lucky that I am bored.
.
- Follow-Ups:
- Re: DMA transfer speed issues on PCI card with PCI and PCI-X busses
- From: Stephan Wolf [MVP]
- Re: DMA transfer speed issues on PCI card with PCI and PCI-X busses
- From: Oliver
- Re: DMA transfer speed issues on PCI card with PCI and PCI-X busses
- References:
- Prev by Date: Re: how can I disable ctrl+alt + del, and windows key in vista.
- Next by Date: Re: PendingReturned and a subsidiary IRP
- Previous by thread: DMA transfer speed issues on PCI card with PCI and PCI-X busses
- Next by thread: Re: DMA transfer speed issues on PCI card with PCI and PCI-X busses
- Index(es):
Relevant Pages
|