(toppers-users 4426) Re: TOPPERS/FMP(Cyclone V)の第2コアの処理速度が遅い件について
Shinya Honda
honda @ ertl.jp
2015年 9月 17日 (木) 16:20:43 JST
$B3'MM(B
$BK\ED$G$9!%(B
$B2<5-$NBP1~$r$7$^$7$?!%(BFMP$B%+!<%M%k$N(BSoCFPGA$B4J0W%Q%C%1!<%8$r%j%j!<%9$7$^$7$?!%(B
fmp_socfpga_gcc-20150917.tar.gz
$B$^$?!$(Bi.MX6Q$B8~$1$N(BFMP$B%+!<%M%k$bF1;~$K%j%j!<%9$7$^$7$?!%(B
fmp_imx6_gcc-20150917.tar.gz
$B0J>e(B,$B$h$m$7$/$*4j$$$7$^$9(B.
On 2015/09/02 12:36, y.akiyoshi @ screen.co.jp wrote:
> $BK\EDMM(B
>
> SCREEN$B%[!<%k%G%#%s%0%9$N=)5H$G$9!#(B
>
> $BBP1~$$$?$@$-!"$"$j$,$H$&$4$6$$$^$9!#(B
>
> $BD:$$$?%Q%C%A$G(Barmgcc$BHG$r=$@5$7$?$H$3$m(B2$B%3%"$H$bF1$8<B9T;~4V$GF0:n$9$k$3$H(B
> $B$r3NG'$7$^$7$?!#(B
> $BM}M3$b$O$C$-$j$7$FG<F@$9$k$3$H$,$G$-$^$7$?!#(B
>
> $B:#8e$H$b$I$&$>$h$m$7$/$*4j$$CW$7$^$9!#(B
>
> $B3t<02q<R(BSCREEN$B%[!<%k%G%#%s%0%9(B
> $B=)5HJ]5*(B
>
>
>
> $BAw?.85(B: Shinya Honda <honda @ ertl.jp>
> $B08 @ h(B: users @ toppers.jp
> $BF|IU(B: 2015/09/01 15:21
> $B7oL>(B: (toppers-users 4418) Re: TOPPERS/FMP(Cyclone V)$B$NBh#2%3%"$N=hM}B.(B
> $BEY$,CY$$7o$K$D$$$F(B
> $BAw?.<T(B: users-bounces @ toppers.jp
>
>
>
> $B=)5H$5$s(B
>
> $BK\ED$G$9!%(B
>
> $B$*CN$i$;$"$j$,$H$&$4$6$$$^$9!%(B
>
> $B$3$A$i$G$b0c$&%?!<%2%C%H$G3NG'$7$^$7$?$,!$3N$+$K%3%"(B2$B0J9_$N @ -G=$,Dc$$7k(B
> $B2L$H$J$j$^$7$?!%(B
>
> $BD4::$7$?7k2L!$%3%"(B2$B0J9_$OJ,4tM=B,$,M-8z$K$J$C$F$$$^$;$s$G$7$?!%(B
>
> $B%Q%C%A$rAw$j$^$9$N$G!$$3$A$i$G;n$7$F$b$i$($J$$$G$7$g$&$+!%=$@5$7$?%3!<%I(B
> $B$r6a$$$&$A$K%j%j!<%9$7$^$9!%(B
>
> ===================================================================
> --- arm_armcc/mpcore/mpcore_tool.h ($B%j%S%8%g%s(B 1108)
> +++ arm_armcc/mpcore/mpcore_tool.h ($B:n6H%3%T!<(B)
> @@ -75,6 +75,11 @@
> cp15_icache_invalidate = 0;
> \ } while(false)
>
> +#define CP15_ICACHE_INVALIDATE() do {
> \+ register uint32_t cp15_branchip_invalidate
> __asm("cp15:0:c7:c5:6"); \
> + cp15_branchip_invalidate = 0;
> \+} while(false)
> +
> #if __TARGET_ARCH_ARM == 6
>
> #define CP15_DCACHE_INVALIDATE() do {
> \Index: arm_gcc/mpcore/mpcore.c
> ===================================================================
> --- arm_gcc/mpcore/mpcore.c (a?aa??a?$B8c(B?$B'c(B?3 1122)
> +++ arm_gcc/mpcore/mpcore.c ($Bd=(B?$Bf%-c(B?$B3c(B??a??)
> @@ -477,6 +477,9 @@
>
> mpcore_dcache_invalidate();
>
> + CP15_DATA_SYNC_BARRIER();
> + CP15_PBUFFER_FLUSH();
> +
> bits |= CP15_CONTROL_C_BIT;
> CP15_CONTROL_WRITE(bits);
> }
> @@ -501,6 +504,9 @@
> else{
> mpcore_dcache_invalidate();
> }
> +
> + CP15_DATA_SYNC_BARRIER();
> + CP15_PBUFFER_FLUSH();
> }
>
> /*
> @@ -515,13 +521,18 @@
> /*
> * $B$9$G$KM-8z$J$i%j%?!<%s(B
> */
> - if(bits & CP15_CONTROL_I_BIT){
> + if((bits & (CP15_CONTROL_I_BIT|CP15_CONTROL_Z_BIT))
> + == (CP15_CONTROL_I_BIT|CP15_CONTROL_Z_BIT)){
> return;
> }
>
> mpcore_icache_invalidate();
> + CP15_BRANCHP_INVALIDATE();
>
> - bits |= CP15_CONTROL_I_BIT;
> + CP15_DATA_SYNC_BARRIER();
> + CP15_PBUFFER_FLUSH();
> +
> + bits |= CP15_CONTROL_I_BIT|CP15_CONTROL_Z_BIT;
> CP15_CONTROL_WRITE(bits);
> }
>
> @@ -538,6 +549,9 @@
> CP15_CONTROL_WRITE(bits);
>
> mpcore_icache_invalidate();
> +
> + CP15_DATA_SYNC_BARRIER();
> + CP15_PBUFFER_FLUSH();
> }
>
> /*
> @@ -658,7 +672,7 @@
> mpcore_pbuffer_flash();
>
> /*
> - * TTBR0$B$rMQ$$$kMQ$K;XDj(B
> + * TTBR0$B$rMQ$$$kMM$K;XDj(B
> */
> CP15_TTBCR_WRITE(0);
>
> Index: arm_gcc/mpcore/mpcore.h
> ===================================================================
> --- arm_gcc/mpcore/mpcore.h ($B%j%S%8%g%s(B 1122)
> +++ arm_gcc/mpcore/mpcore.h ($B:n6H%3%T!<(B)
> @@ -61,6 +61,7 @@
> #define CP15_CONTROL_XP_BIT (1 << 23)
> #define CP15_CONTROL_V_BIT (1 << 13)
> #define CP15_CONTROL_I_BIT (1 << 12)
> +#define CP15_CONTROL_Z_BIT (1 << 11)
> #define CP15_CONTROL_C_BIT (1 << 2)
> #define CP15_CONTROL_M_BIT (1 << 0)
>
> Index: arm_gcc/mpcore/mpcore_tool.h
> ===================================================================
> --- arm_gcc/mpcore/mpcore_tool.h ($B%j%S%8%g%s(B 1122)
> +++ arm_gcc/mpcore/mpcore_tool.h ($B:n6H%3%T!<(B)
> @@ -57,6 +57,8 @@
> #define CP15_AUXILIARY_WRITE(x) Asm("mcr p15, 0, %0, c1, c0, 1"::"r"(x))
>
> #define CP15_ICACHE_INVALIDATE() Asm("mcr p15, 0, %0, c7, c5,
> 0"::"r"(0))
> +#define CP15_BRANCHP_INVALIDATE() Asm("mcr p15, 0, %0, c7, c5,
> 6"::"r"(0))
> +
> #if __TARGET_ARCH_ARM == 6
> #define CP15_DCACHE_INVALIDATE() Asm("mcr p15, 0, %0, c7, c6,
> 0"::"r"(0))
> #define CP15_DCACHE_CLEAN_AND_INVALIDATE() Asm("MCR p15, 0, %0, c7,
> c14, 0"::"r"(0))
>
>
> On 2015/08/31 18:44, y.akiyoshi @ screen.co.jp wrote:
>> TOPPERS$B%W%m%8%'%/%H$N$_$J$5$^(B
>>
>> $B3t<02q<R(BSCREEN$B%[!<%k%G%#%s%0%9$N=)5H$H?=$7$^$9!#(B
>>
>> $B0JA0!"%"%k%F%iHG(BDS-5$B$G$N%3%s%U%#%0%l!<%?8F$S=P$7$K$D$$$F<ALd$5$;$F$$$?$@(B
> $B$$(B
>> $B$?$b$N$G$9$,!"(B
>> MDK-ARM$B$NNc$r;29M$K$7$FF0:n$5$;$k$3$H$,$G$-$^$7$?!#$"$j$,$H$&$4$6$$$^$7(B
> $B$?(B
>> $B!#(B
>>
>>
>> $B:#!"(BCyclone V SoC$BMQ$N(BFMP$B4J0W%Q%C%1!<%8(B(1.3.0/2015-02-17)$B$r;HMQ$7$F$$$k$N(B
> $B$G(B
>> $B$9$,!"(B
>> $B%3%"(B1$B$H%3%"(B2$B$KF1$8=hM}$r$5$;$F<B9T;~4V$rB,$C$F$_$k$HBh#2%3%"$,CY$$$H$$$&(B
> $B7k(B
>> $B2L$K$J$C$F$7$^$$$^$9!#(B
>>
>> $B=hM}$O%P%V%k%=!<%H$rJ#?t2s7+$jJV$9$@$1$N$b$N$G!"<B9T;~4V$O(Bget_tim$B$GB,$k(B
> $B$H(B
>> $B%3%"(B2$B$G=hM}$7$?>l9g$NJ}$,(B
>> 3$B3d$[$ICY$$7k2L$K$J$j$^$7$?!#!JB>$N=hM}$G$O(B2$BG\6a$/CY$$>l9g$b$"$j$^$9!K(B
>>
>> $B$3$l$i$N=hM}$OJBNsF0:n$5$;$F$*$i$:!"%=!<%H%?%9%/$@$1$,F0$$$F$$$k>u67$G$9(B
> $B!#(B
>> $B$^$?!"$=$l$>$l$N(Bget_tim$B$O$[$\F1$8B.EY$GF0$$$F$$$^$9!#(B
>> $B%Z%j%U%'%i%k$N @ _Dj$O4pK\E*$K%5%s%W%k$HF1$8$G!"(Bsample1.c$B$N%?%9%/$rA4$F:o(B
> $B=|(B
>> $B$7$F%3%"#1(B/2$B$K$=$l$>$l%?%9%/$rN)$F$F$$$^$9(B
>>
>> $B860x$O$3$l$+$i @ Z$jJ,$1$F$$$/$H$3$m$G$9$,!"(BTOPPERS/FMP$BB&$G2?$+860x$K$J$j(B
> $B$&(B
>> $B$k$h$&$J=hM}$O$"$k$N$G$7$g$&$+!#(B
>> $B$4B8CN$NJ}$,$$$i$C$7$c$$$^$7$?$i!"$I$&$>$h$m$7$/$*4j$$$7$^$9!#(B
>>
>>
>> $B3t<02q<R(BSCREEN$B%[!<%k%G%#%s%0%9(B
>> $B=)5HJ]5*(B
>>
>
>
>