memcpy performance

Joel Sherrill joel at oarcorp.com
Tue Dec 9 18:24:00 UTC 1997


I have forwarded this to the newlib maintainers list for comments.  

I have already been told there is a new and improved set of portable
memory functions in the current newlib source.

And before anyone asks .. no I don't have it either. :)

--joel
Joel Sherrill                    Director of Research & Development
joel at OARcorp.com                 On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
   Support Available             (205) 722-9985


On Tue, 9 Dec 1997, Eric Norum wrote:

> It's even worse than just a byte-by-byte copy!
> 
> On the 971024 snapshot (gen68360 BSP) a call to memcpy produces:
> 	1) A call to bcopy
> 	2) The bcopy routine links a stack frame and calls memmove
> 	3) The memmove routine:
> 		a) links a stack frame
> 		b) checks for overlap
> 		c) does a byte-by-byte copy
> 		   5 instructions/byte on a CPU32 processor!
> 		
> There's a heck a of a lot of unnecessary code here:
> 	Two extra function calls
> 	Two extra stack frames
> 	Extra code to check for overlap
> 	A very inefficient loop
> 
> Processor-independent improvements required:
> 	1) There should be an explicit memcpy routine.
> 	2) The library should be compiled with aggressive optimization.
> 	
> Processor-dependent improvements that would be nice:	
> M68k - The loop in memmove should be done in such a way that  
> processors like the CPU32 can go into loop mode.
> 
> Now all we need is a willing volunteer......
> 
> ---
> Eric Norum                                 eric at skatter.usask.ca
> Saskatchewan Accelerator Laboratory        Phone: (306) 966-6308
> University of Saskatchewan                 FAX:   (306) 966-6058
> Saskatoon, Canada.
> 




More information about the users mailing list