PowerPC Burst PCI access

Peter Dufault dufault at hda.com
Fri Apr 8 00:30:04 UTC 2005

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.

As I understand it, if the memory region that the PowerPC fetches from 
is cacheable then the PowerPC will attempt to burst cache-line size 
reads.   I think the mapping from PowerPC to DAQ card is first through 
the PowerPC BAT registers and then a PCI window.

Is my understanding about right?  Is there some code I should look at 
as an example?

I also tried fetching the memory as a "long double" but I started 
getting exceptions in my tasks. I assume my ISR started using floating 
point resources during the copy which caused this, so I also need a 
pointer to a method of doing cache-line size memory fetches without 
affecting the floating point state.



Peter Dufault
HD Associates, Inc.

More information about the users mailing list