PowerPC Burst PCI access

Peter Dufault dufault at hda.com
Fri Apr 8 08:33:16 UTC 2005

On Apr 8, 2005, at 12:11 AM, gregory.menke at gsfc.nasa.gov wrote:

> Peter Dufault writes:
>> These comments relate to the MVME5500 VME powerPC port and a PCI data
>> acquisition card.
>> In my control application I noticed a while ago that reading back the
>> data from the PCI data acquisition board is extremely slow.  The board
>> (acromag PMC341) collects the data into a pre-fetchable memory buffer
>> that it says will transfer data at 40 MByte/s using burst reads.  I'm
>> seeing about 4 MByte/s using naive reads and I eventually need to 
>> solve
>> this problem.  With a 20KHz control loop I'm losing about 1/4 of the
>> CPU using naive reads.
> I agree with Till, you'll be much better off if you can use DMA.  The
> card may well be capable of burst, but there is no guarantee the PPC
> bus's bridge onto the PCI bus will cooperate.  PCI transactions are
> pretty expensive in general, so the more you can block up into DMA
> transfers the better.  If your card has a DMA controller and can bus
> master, that might be the easiest way to do it.

The Acromag pmc341 does not do DMA.  I don't know if the GT64260 (PCI 
controller on the MVME5500) has a DMA controller I can use since the 
documentation is under NDA. I looked at the Tundra Universe controller 
(VME to PCI controller on the MVME5500) and I only see PCI to VME and 
VME to PCI transfers.

I probably won't be changing the DAQ board, but I will look at the one 
Till mentioned.

> Pre-fetchable isn't really what you want for device memory anyhow, it
> sort of seems like an anachronism from the old days where everything
> hung off a PCI bus instead of the modern scenario where PCI is a
> slower peripheral bus and caching it gets in the way.
> And just like Till says, FP in an interrupt routine is a
> bad-evil-nono.

I know the FP issues, I just didn't know that declaring a "long double" 
and then fetching through it would use the FP unit.  Is there a "long 
long long long" integer type in GCC?  I'm mostly joking, for something 
as specific as this copy ASM is the way to go since it won't change 
from compiler rev to rev.

> Gregm
Peter Dufault
HD Associates, Inc.

More information about the users mailing list