PCI caching question related to mvme5500

gregory.menke at gsfc.nasa.gov gregory.menke at gsfc.nasa.gov
Tue Nov 1 18:20:01 UTC 2005


Peter Dufault writes:
 > 
 > On Nov 1, 2005, at 11:29 AM, gregory.menke at gsfc.nasa.gov wrote:
 > 
 > >
 > > OTOH, maybe the board has an internal buffer that it fills w/ data and
 > > making that part cacheable might expedite copying it off the  
 > > board.  But
 > > I think the OP would be better served by using DMA- my impression  
 > > being
 > > its plain PIO right now, which can cut throughput on the PCI bus by a
 > > factor of 6.
 > >
 > The board has a double-buffered region mapped onto the bus.  When the  
 > data is ready I invalidate the cache every cache line and then memcpy  
 > the data off.  Without reading through a cached region the CPU won't  
 > prefetch and the throughput is terrible.  With it you should be able  
 > to run at PCI memory speed.
 > 
 > There are many situations, e.g. small frame sizes as in this case,  
 > where I'd rather have prefetch (and posted writes for output) than DMA.
 > 
 > Peter
 > 

This is essentially PIO mode, the slowest possible way of getting data
off the PCI bus.  If you're lucky it may burst but you can't confirm
that without a bus analyzer.  This is very likely why you're having
performance issues.  Its cutting your bus throughput by about a factor
of 6.  You should consider using DMA to get your data off the board.



Gregm




More information about the users mailing list