C
coros
Guest
Hej alle,
Jeg gør billedbehandling projekt på AT91RM9200, så jeg ønsker at øge ydeevnen ved at aktivere cachen og MMU.Her er koden:
void init_TLB () (
uint I, J, A; uint * TLB = (uint *) 0x20000000;
for (i = 0; i <4096; i) (
TLB = 0x12 | (i <<20);
)
for (i = 512; i <528; i) (
TLB | = 0xC; / / aktivere write_back cache til SDRAM
)
i = 0x20000000;
ASM ( "MCR P15, 0, 0%, C2, C2, 0":: "r" (i)); / / sæt TLB base
i = 3;
ASM ( "MCR P15, 0, 0%, C3, C0, 0":: "r" (i)); / / sæt domæne adgang
i = 0;
ASM ( "MCR P15, 0, 0%, C7, C7, 0":: "r" (i)); / / afkræfte ICache & DCache
i = 0xC000107D;
ASM ( "MCR P15, 0, 0%, C1, C0, 0":: "r" (i)); / / enable MMU & ICache & DCache & asyn ur
)
Så jeg måle ved at tælle antallet af SVD decompositions af en 6x6 matrix i 2.5s.
a = AT91C_BASE_ST-> ST_CRTR 5;
i = 0;
while (a> AT91C_BASE_ST-> ST_CRTR) (
Q = V;
SVD (Q, W, E);
i;
)
std:: cout << "\ nsvd af Q \ n" <<W << "\ nCalculated" <<i << "gange i 2.5s";
Jeg får følgende resultater:
Ingen cache 33 gange
kun instruktion cache 270
data og instruktion cache 35
Hvorfor er det så langsomt, når begge cacher er aktiveret?Det så langsomt som med nogen cache.
Er der nogen der har lignende erfaringer?
Tak
Jeg gør billedbehandling projekt på AT91RM9200, så jeg ønsker at øge ydeevnen ved at aktivere cachen og MMU.Her er koden:
void init_TLB () (
uint I, J, A; uint * TLB = (uint *) 0x20000000;
for (i = 0; i <4096; i) (
TLB = 0x12 | (i <<20);
)
for (i = 512; i <528; i) (
TLB | = 0xC; / / aktivere write_back cache til SDRAM
)
i = 0x20000000;
ASM ( "MCR P15, 0, 0%, C2, C2, 0":: "r" (i)); / / sæt TLB base
i = 3;
ASM ( "MCR P15, 0, 0%, C3, C0, 0":: "r" (i)); / / sæt domæne adgang
i = 0;
ASM ( "MCR P15, 0, 0%, C7, C7, 0":: "r" (i)); / / afkræfte ICache & DCache
i = 0xC000107D;
ASM ( "MCR P15, 0, 0%, C1, C0, 0":: "r" (i)); / / enable MMU & ICache & DCache & asyn ur
)
Så jeg måle ved at tælle antallet af SVD decompositions af en 6x6 matrix i 2.5s.
a = AT91C_BASE_ST-> ST_CRTR 5;
i = 0;
while (a> AT91C_BASE_ST-> ST_CRTR) (
Q = V;
SVD (Q, W, E);
i;
)
std:: cout << "\ nsvd af Q \ n" <<W << "\ nCalculated" <<i << "gange i 2.5s";
Jeg får følgende resultater:
Ingen cache 33 gange
kun instruktion cache 270
data og instruktion cache 35
Hvorfor er det så langsomt, når begge cacher er aktiveret?Det så langsomt som med nogen cache.
Er der nogen der har lignende erfaringer?
Tak