cpu-cachelocalitycache-line
CPU 캐시와 지역성을 설명해 주세요
- 면접 출제
- 예상 시간
- 8분
30초 답변
꼬리질문
조금 더 깊게 물어본다면
답변 뒤에 이어질 수 있는 질문들을 하나씩 열어볼 수 있어요.
cache line은 무엇인가요?
시간 지역성과 공간 지역성의 차이는 무엇인가요?
배열과 linked list 중 캐시에 더 유리한 구조는 보통 무엇인가요?
cache miss가 많으면 어떤 일이 생기나요?
캐시가 꽉 찼을 때 어떤 데이터를 내보내나요? (교체 정책)
false sharing은 무엇인가요?
부가 설명
코드에서 배열 하나를 읽는 일은 간단해 보이지만, CPU 입장에서는 데이터가 어디에 있느냐가 큰 차이를 만듭니다. L1 cache에 있으면 빠르게 읽지만, RAM까지 가야 하면 훨씬 오래 기다립니다. 그래서 같은 알고리즘이라도 메모리 접근 패턴이 성능을 크게 흔듭니다.
지역성은 이 차이를 설명하는 핵심 단어입니다. 방금 쓴 값을 곧 다시 쓰면 시간 지역성이 좋고, 연속된 배열처럼 가까운 주소를 차례로 쓰면 공간 지역성이 좋습니다. Big-O가 같아도 cache-friendly한 접근은 실제 성능에 영향을 줍니다.
한 줄 정리
CPU 캐시는 지역성을 이용해 느린 메모리 접근을 줄이고, 접근 패턴이 좋을수록 효과가 커집니다.