메모리 계층 구조

2차원 배열의 한 행 크기가 4096바이트(2의 거듭제곱)일 때, 열 방향으로 요소를 따라가면 캐시 용량에 여유가 있어도 미스가 많아질 수 있습니다. 그 대책으로 효과가 있는 것은 무엇입니까?

  1. A각 행의 끝에 패딩을 더해 행 크기를 2의 거듭제곱에서 어긋나게 한다
  2. B배열의 타입을 같은 크기의 다른 타입으로 바꾼다
  3. C배열 전체를 큰 2의 거듭제곱 주소 경계에 정렬하여 다시 배치한다
정답과 해설 보기

정답: A. 각 행의 끝에 패딩을 더해 행 크기를 2의 거듭제곱에서 어긋나게 한다

한 행이 정확히 4096바이트이면 열 방향으로 따라가는 요소의 주소는 모두 4096의 배수만큼씩 떨어져 인덱스 비트가 같아지고, 같은 세트에 집중됩니다. 연관도보다 많은 행을 따라가면 용량에 여유가 있어도 서로 쫓아내는 충돌 미스가 일어납니다. 각 행에 1라인 분량 정도의 패딩(padding)을 더하면 요소마다 대응하는 세트가 어긋나 분산됩니다. 2의 거듭제곱 주소에 정렬해도 문제는 변하지 않고, 같은 크기의 타입으로 바꿔도 효과가 없습니다.

  • A. 올바릅니다. 행 크기를 어긋나게 하면 요소가 서로 다른 세트로 분산됩니다.
  • B. 같은 크기의 타입으로는 주소의 배열이 변하지 않습니다.
  • C. 2의 거듭제곱으로 정렬해도 같은 세트에 집중되는 문제는 남습니다.
이 분야 연습하기 분야로 돌아가기

메모리 계층 구조의 다른 문제

  1. 주기억장치 DRAM에 접근하는 데 걸리는 시간은 L1 캐시의 히트 시간의 대략 몇 배입니까? (일반적인 PC나 서버의 CPU의 경우)
  2. 캐시의 각 라인에 붙는 유효 비트(valid bit)의 역할로 올바른 것은 무엇입니까?
  3. 소용량 완전 연관 버퍼에 L1 캐시에서 쫓겨난 라인을 일시적으로 보관하는 희생 캐시(victim cache)의 주된 효과는 무엇입니까?
  4. L1 캐시 아래에 L2 캐시를 두는 다단계 캐시에서 L2 캐시의 주된 역할은 무엇입니까?
  5. 하위 캐시(L2 등)가 상위 캐시(L1)의 내용을 모두 포함하는 포함(inclusive) 방식의 특징으로 올바른 것은 무엇입니까?

이 분야의 비교