프리패칭이란, CPU가 메모리에서 데이터를 필요로 하기 전에 미리 데이터를 가져와 캐시에 저장하는 기술이다. 이를 통해 데이터를 실제로 필요로 할 때 메모리 접근 지연을 피하고, CPU가 기다리지 않고 빠르게 작업을 이어갈 수 있게 된다. 즉, 프리패칭은 데이터를 사전에 준비하여 CPU 대기 시간을 줄이는 기법이다.
프리패칭은 보통 순차적인 메모리 접근 패턴이 있을 때 효과적이다.
- 센서 데이터 처리
- 그래픽 렌더링
- 통신 패킷 처리
프리패칭을 사용하면 CPU 대기 시간을 감소시켜 전반적인 성능을 향상시킬 수 있다. 그러나 잘못된 예측으로 불필요한 데이터를 미리 가져오게 되면, 오히려 캐시 오염이 발생하여 성능이 저하될 수 있다. 임베디드 시스템에서는 자원이 한정적이기 때문에, 프리패칭의 예측 정확성을 높이는 것이 중요하다.
C 코드에서 프리패칭 사용하기
프리패칭은__builtin_prefetch()와 같은 컴파일러 내장 함수를 통해 구현할 수 있다.
for (int i = 0; i < N; i++) {
__builtin_prefetch(&array[i + 1], 0, 3); // 다음 데이터를 미리 가져옴
process(array[i]); // 현재 데이터 처리
}
위 코드는 배열을 순차적으로 처리할 때, 다음 데이터를 미리 캐시에 로드하여 데이터 접근 지연을 줄이는 효과가 있다.
728x90
'CS' 카테고리의 다른 글
Keil μVision5 (2) | 2024.11.08 |
---|---|
OSAL(Operating System Abstraction Layer)란? (0) | 2024.11.05 |
부동소수점에 대해서 (0) | 2024.11.01 |
루프 언롤링(Loop Unrolling)이란? (0) | 2024.10.23 |
2의 보수(Two's complement)란? (0) | 2024.10.23 |