Read 64-bit value over PLB

May 01, 2007 3 Replies

Hi,



My question is straight'n'simple: what's the *most efficient* way of reading a 64-bit value from a slave PLB peripheral in software? Is there any *weird* behaviour I should be made aware of when I read 32- bit value instead?



In principle, PLB should be able to handle 64-bit transaction but not PPC software of course. Is there anyway to map this transaction to a consecutive pair of PPC software registers?



Thanks in advance,



Regards,



-Manny



ppc always reads 64 bits. It uses the byte enables to mask the upper or lower 32 bits.

The most efficient way is to read it into the cache. This reads a line of four 64 bit words in a burst.

But if you only have one 32 bit word to read, I don't think you can do much except make it zero wait state.

I don't think so.

Alan Nishioka snipped-for-privacy@nishioka.com

Hi Manny,

Others have pointed out already that you can either have each 32bit word read separately, or you can have the PPC do a line read.

A line read means that 256 bits are read, although you will use only

64 of them. If the PLB slave returns "target word first", this will be a low-latency read. Total bandwidth may be sub-optimal though, when you repeatedly discard 3/4 of the data.

Doing two 32-bit transactions (mark memory as non-cachable, possibly guarded, and disable LWL) might be faster in some special scenarios, depending on the slave behaviour.

Regards, Marc

Thanks a lot all. Just got back from Switzerland. I'll dig into this matter further using the suggested pointers.

Cheers,

-Manny

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required