[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Memory prefetch



Thanks to everyone who responsed to my question.  We have identified the
problem as being a PAGEFAULT which occurs at the 4K page boundary.
Inserting a small piece of code which fills the destination buffer prior
to the transfer moves the allocated pages into physical memory and our
test now passes.

We are now attempting to generate burst reads under Win95.  The developer
thought that the "rep movsd" instruction would result in burst transfers,
but it doesn't.  Does anyone have experience writing code to cause burst
transfers under Win95?  With NT we use the "READ_REGISTER_BUFFER_ULONG"
API call, but there doesn't seem to be an equivalent for Win95.

Stuart.

On Mon, 2 Jun 1997, Peter Marek wrote:

> > Date:          Fri, 30 May 1997 11:52:02 -0700 (PDT)
> > From:          Stuart Milton <stuartm@precisionimages.com>
> > Subject:       Memory prefetch
> > To:            Mailing List Recipients <pci-sig-request@znyx.com>
> 
> > We are having problems with a very basic transfer from a FIFO'd PCI
> > interface to host memory.  We are running the following code under Win95:
> > 
> >   mov esi, <address of source - in this case the FIFO>
> >   mov edi, <address of destination>
> >   mov ecx, <number of DWORDS - always even !>
> >   rep movsd  ; this is the instruction that does the transfer
> > 
> > The results we get are that at a 4K page boundary the first word of the
> > new page never makes it into host memory.  We see the transfer occur on
> > the logic analyzer and there is nothing to indicate that there was a
> > problem with the transfer.  The interesting thing is that the next read
> > uses the same address as that used for the lost data word and this word is
> > what shows up in the first word of the page.
> > 
> > The assumption is that the host PCI controller has decided the memory is 
> > prefetchable.  I have checked this using pciview, cfgtest, and pcidump.
> > All return bit 3 of base address 0 as 0.
> > 
> > I'm stuck on how to proceed.  Any suggestions or ideas are appreciated.
> > 
> > thanks,
> > Stuart Milton.
> > 
> > 
> 
> Dear Stuart!
> 
> Which kind of PCI interface chip do you use on the board with the 
> FIFO on it ?
> 
> Maybe this chip is configured to do a target abort (i.e. retry) for 
> the first access and tries to prefetch the data from the local FIFO.
> Maybe there's something wrong with the prefetch logic in the PCI 
> interface chip...
> 
> Maybe I can help you, if you'd give me some further information on 
> your hardware...
> 
> 
> regards,
> 
> Peter
> 
£8(