[U-Boot] OMAP3 patch to improve performance?
Paulraj, Sandeep
s-paulraj at ti.com
Sat Nov 20 00:12:22 CET 2010
>
> Dear Sandeep,
>
> In message <0554BEF07D437848AF01B9C9B5F0BC5DBD1C11AD at dlee01.ent.ti.com>
> you wrote:
> > I came across this patch that might be useful
> >
> > http://lists.denx.de/pipermail/u-boot/2010-February/067534.html
> >
> > In any case since the u-boot structure has changed this cannot be
> > applied. If anybody is interested please send a new patch.
>
> That's actually prtty straightforward. Here it comes (completely
> untested :-)
Thanks but this now effects both OMAP3 and OMAP4, it needs quite a bit of testing in my opinion.
>
> ----------------------------------------------------------------------
>
> From 0223e42a48417ad18276d2709206b404c8796807 Mon Sep 17 00:00:00 2001
> From: Siarhei Siamashka <siarhei.siamashka at gmail.com>
> Date: Sat, 6 Feb 2010 16:19:46 +0000
> Subject: [PATCH] OMAP3: remove useless ASA bit from AUXCR
>
> Setting ASA bit hurts performance for the code which has lots of I-cache
> misses and there are no Cortex-A8 errata workarounds which would require
> to have it.
>
> A test program which intentionally stresses I-cache misses on conditional
> branches is attached.
>
> ASA bit is not set:
>
> real 0m2.940s
> user 0m2.930s
> sys 0m0.008s
>
> ASA bit is set:
>
> real 0m3.470s
> user 0m3.461s
> sys 0m0.008s
>
> The difference on some real applications is much more modest and is just
> something like ~0.5%, but every little bit helps.
>
> /**** start of bench_ASA.c ****/
> void __attribute__((naked)) f(int count, void *rand)
> {
> asm volatile (
> " push {r4, r5, r6, lr}\n"
> " mov r4, r0\n"
> " mov r5, r1\n"
> "0:\n"
> ".rept 4096\n"
> " blx r5\n"
> " tst r0, #1\n"
> " bne 1f\n"
> " b 2f\n"
> ".balign 64\n"
> "1:\n"
> ".rept 15\n"
> " add r0, r0, #0\n"
> ".endr\n"
> " b 3f\n"
> ".balign 64\n"
> "2:\n"
> ".rept 16\n"
> " add r0, r0, #0\n"
> ".endr\n"
> "3:\n"
> ".endr\n"
> " subs r4, r4, #1\n"
> " bgt 0b\n"
> " pop {r4, r5, r6, pc}\n"
> );
> }
> int main()
> {
> f(1000, rand);
> return 0;
> }
> /**** end of bench_ASA.c ****/
>
> Signed-off-by: Siarhei Siamashka <siarhei.siamashka at gmail.com>
> ---
> arch/arm/cpu/armv7/omap3/cache.S | 1 -
> 1 files changed, 0 insertions(+), 1 deletions(-)
>
> diff --git a/arch/arm/cpu/armv7/omap3/cache.S
> b/arch/arm/cpu/armv7/omap3/cache.S
> index cda87ba..2854771 100644
> --- a/arch/arm/cpu/armv7/omap3/cache.S
> +++ b/arch/arm/cpu/armv7/omap3/cache.S
> @@ -169,7 +169,6 @@ setup_auxcr:
> orr r1, r3, r2, lsr #20-4 @ combine variant and revision
> mov r12, #0x3
> mrc p15, 0, r0, c1, c0, 1
> - orr r0, r0, #0x10 @ Enable ASA
> @ Enable L1NEON on pre-r2p1 (erratum 621766 workaround)
> cmp r1, #0x21
> orrlt r0, r0, #1 << 5
> --
> 1.7.3.2
>
>
> Best regards,
>
> Wolfgang Denk
>
> --
> DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
> Never put off until tomorrow what you can put off indefinitely.
More information about the U-Boot
mailing list