도와주세요!!
글 수 15,339
2010.08.13 09:10:06 (*.122.148.97)
47159
안녕하세요.
pxa270보드로 커널을 올리지 않은 상태에서 부트로더를 개량하여 프로그램을 만들려고 합니다.
우연히 memcpy()함수를 체크하던중 속도가 너무 느리다는 것을 알게 되었습니다.
시험 방법은 다음과 같았습니다.
char Buf1[1024], Buf2[1024];
for(i = 0 ; i < 10240 ; i++) memcpy(Buf1, Buf2, 1024);
부트로더에서 이것을 수행하는 시간은 5945ms가 소요되었는데
커널부팅후 어플리케이션에서 수행하면 95ms밖에 소요되지 않네요.
직접 테스트 해봐도 같은 결과를 얻을 수 있을 것입니다.
무련 60배가 차이가 나는데, 부트로더하고 커널하고 메모리 설정하는것이 차이가 있나요?
혹시 RAM의 설정이 서로 달라서 이러한 결과가 나오는 것인가요 ?
커널부팅후 속도를 만들려면 어느 설정 부분을 바꾸어 줘야 하나요 ?
제가 200MHz 의 다른 CPU에서 테스트 해보았는데,
각각 4700ms, 1920ms가 나오네요. 520MHz인데 200MHz보다 떨어지네요.
물론 커널부팅이후에는 엄청좋아지구요.
혹시 원인을 알 수 있나요 ?
메모리의 차이가 아니라 캐쉬의 활성화 여부에 따라 다를것입니다.
부트로더에서의 I-cache, D-cache 의 활성화 여부를 확인해 보세요..