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

Re: [microblaze-uclinux] optimized memcpy() based on DMA transfer



Hi Falk,

Brettschneider Falk wrote:

> has someone implemented a specially optimized version of memcpy() or similar
> that uses DMA to put the data in the SDRAM, probably on sizes > minimum? I
> suppose the current memcpy() just passes DWORD by DWORD by bus... 

I've thought about it, and when I googled it a while ago, it was clear 
that many others had as well :)

For microblaze systems with no ICACHE, it might make sense, but 
otherwise you'd really have to wonder how much improvement would be 
made. The inner loop of the optimised memcpy would be in cache, 
executing at 2 cycles per instruction, it's the OPB latency 
(reading/writing to/from the OPB_SDRAM/DDR) controller that will become 
the limiting factor.

AFAIK EDK's standalone DMA engine has no internal buffering, and does 
not do burst transfers - it's essentially just a programmable 
OPB-talking state machine.  For memory to memory transfers, I don't 
think you'd win.  However, it would still be an interesting experiment, 
and pretty quick to try out.  Another example of experimental computer 
architecture!

John

___________________________
microblaze-uclinux mailing list
microblaze-uclinux@itee.uq.edu.au
Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/