[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/