CS

프리패칭(Prefetching)이란?

_minit 2024. 11. 4. 13:44

프리패칭이란, 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