Increase memory operation with NEON

202 views
Skip to first unread message

Jackie Le

unread,
Apr 29, 2012, 6:46:57 AM4/29/12
to 0xlab-...@googlegroups.com
Hi everybody,

I'm a student and quite new with Android OS. I would like to increase the memory operation (memcpy, memset, memmove... and some string operation) with NEON technology on ARM Cortex A8. I got the idea from this paper 

I would like to modified in Linux kernel - arch/arm/lib (kernel 2.6.32) but I see in Android libC (bionic) also have its own memory operation. So does any changes in kernel affect the Android application or I have to modify both places? And even if I did the optimization how can I benchmark the increasing performance? Could I use 0xdroid's benchmark? 

Thank you very much for any help.  

Jim Huang

unread,
Apr 29, 2012, 6:53:11 AM4/29/12
to 0xlab-...@googlegroups.com
2012/4/29 Jackie Le <datd...@gmail.com>:
> I'm a student and quite new with Android OS. I would like to increase the
> memory operation (memcpy, memset, memmove... and some string operation) with
> NEON technology on ARM Cortex A8. I got the idea from this paper
[...]
> I would like to modified in Linux kernel - arch/arm/lib (kernel 2.6.32) but
> I see in Android libC (bionic) also have its own memory operation. So does
> any changes in kernel affect the Android application or I have to modify
> both places? And even if I did the optimization how can I benchmark
> the increasing performance? Could I use 0xdroid's benchmark?

hi Jackie,

Thanks for discussing here. However, if you would like to introduce
NEON in kernel routines, you must be aware of the availability and
initialization of NEON co-proc in advance. Also, the operating mode
of cache is another factor for performance, which might cause slowdown
when you merge existing assembly implementations into kernel.

Sincerely,
Jim Huang a.k.a. "jserv"
http://0xlab.org/
Message has been deleted
Message has been deleted

Jackie Le

unread,
May 8, 2012, 11:16:55 PM5/8/12
to 0xlab-...@googlegroups.com
Thank you for helping me. However I do not understand the interaction between the memcpy function in Android layer and memcpy function in Linux kernel. How could they work together? In my view, I think the application do some memory operation in some ways by Java language, then VM will interpret the source code and call the memcpy function in bionic C library. After that, it will call the actual memcpy function in Linux kernel to deal with memory. Is that right? I am really confused about that. 

Thanks for any help,
Best Regard,
Jackie Le

Jackie Le

unread,
May 20, 2012, 4:16:26 AM5/20/12
to 0xlab-...@googlegroups.com
Hi everyone,

I'm trying to introduce NEON in linux kernel, I have already enable Advance SIMD (NEON) Extension Support in menuconfig but It didnot work, I dont know why. Could anybody give me some advice? 

The attached file is the code that I used. Even with the memcpy.S in bionic C, I couldn't make it work in Linux kernel. 
memcpy.s

Jim Huang

unread,
May 23, 2012, 4:54:04 PM5/23/12
to 0xlab-...@googlegroups.com
2012/5/20 Jackie Le <datd...@gmail.com>:
> Hi everyone,
>
> I'm trying to introduce NEON in linux kernel, I have already enable Advance
> SIMD (NEON) Extension Support in menuconfig but It didnot work, I dont know
> why. Could anybody give me some advice?

hi Jackie,

Please check the discussions in Linaro:
http://lists.linaro.org/pipermail/linaro-dev/2011-May/004304.html

The discussion thread should help you.
Reply all
Reply to author
Forward
0 new messages