도와주세요!!
글 수 15,339
2016.06.02 15:33:43 (*.99.111.165)
14262
현재 S5PV210 1000Mhz, linux 2.6.35 버전을 사용중인데
제가 만든 misc 디바이스 드라이버의 ioctl read 루틴이 너무 느리게 실행됩니다.
read 루틴 안에 대략 이런 부분이 있습니다.
아래 GPIO포트 토글 기능외에 다른 부분도 있었으나 속도에 영향이 없는 관계로 생략 하였습니다.
for (i = 0; i < WIDTH; i++)
__raw_writeb((__raw_readb(S5PV210_GPH0DAT) ^ 0x04), S5PV210_GPH0DAT);
위의 코드가 실행되면 high 또는 low로 유지되는 시간이 1.4us정도 나오는데 이게 이해가 안갑니다.
CPU클럭이 1000Mhz면 CPU에서 1개의 명령 처리하는데 1ns정도가 되야 할거 같은데
위의 코드가 약 1000여개의 명령으로 변경될만큼 느리다고는 전혀 생각이 안됩니다.
고수님들의 조언 부탁드립니다.
클럭 1GHz는 코어의 클럭 속도이고요.
대부분의 입출력장치와 메모리는
코어의 속도를 따라오지 못하기 때문에 느린클럭을 사용합니다.
자세한 설명은 캐쉬와 파이프라인 등등 설명해야 할것이 너무 많아서...^^
메모리나 IO를 작동시키는 클럭속도는
대부분 부트로더에서 초기화 하는 경우가 많습니다.