메모리 계층 구조
2차원 배열의 한 행 크기가 4096바이트(2의 거듭제곱)일 때, 열 방향으로 요소를 따라가면 캐시 용량에 여유가 있어도 미스가 많아질 수 있습니다. 그 대책으로 효과가 있는 것은 무엇입니까?
- A각 행의 끝에 패딩을 더해 행 크기를 2의 거듭제곱에서 어긋나게 한다
- B배열의 타입을 같은 크기의 다른 타입으로 바꾼다
- C배열 전체를 큰 2의 거듭제곱 주소 경계에 정렬하여 다시 배치한다
정답과 해설 보기
정답: A. 각 행의 끝에 패딩을 더해 행 크기를 2의 거듭제곱에서 어긋나게 한다
한 행이 정확히 4096바이트이면 열 방향으로 따라가는 요소의 주소는 모두 4096의 배수만큼씩 떨어져 인덱스 비트가 같아지고, 같은 세트에 집중됩니다. 연관도보다 많은 행을 따라가면 용량에 여유가 있어도 서로 쫓아내는 충돌 미스가 일어납니다. 각 행에 1라인 분량 정도의 패딩(padding)을 더하면 요소마다 대응하는 세트가 어긋나 분산됩니다. 2의 거듭제곱 주소에 정렬해도 문제는 변하지 않고, 같은 크기의 타입으로 바꿔도 효과가 없습니다.
- A. 올바릅니다. 행 크기를 어긋나게 하면 요소가 서로 다른 세트로 분산됩니다.
- B. 같은 크기의 타입으로는 주소의 배열이 변하지 않습니다.
- C. 2의 거듭제곱으로 정렬해도 같은 세트에 집중되는 문제는 남습니다.