메모리 계층 구조

행렬 곱셈 등에서 사용되는 루프 블로킹(타일링, tiling)의 주된 목적은 무엇입니까?

  1. A캐시에 들어가는 작은 블록 단위로 계산하여 데이터의 재사용을 늘리기 위해
  2. B루프 횟수를 줄여 루프 끝에서 실행하는 분기 명령의 수를 적게 하기 위해
  3. C계산 순서를 바꾸지 않고 사용하는 메모리의 총량을 절반으로 하기 위해
정답과 해설 보기

정답: A. 캐시에 들어가는 작은 블록 단위로 계산하여 데이터의 재사용을 늘리기 위해

큰 행렬의 곱을 그대로 계산하면, 한 번 읽어 온 요소가 다시 사용되기 전에 캐시에서 쫓겨나 주기억장치에서 몇 번이고 다시 읽게 됩니다. 루프 블로킹에서는 행렬을 캐시에 들어가는 작은 블록으로 나누고 블록 안에서 계산을 마침으로써, 읽어 온 데이터를 여러 번 재사용하여 용량 미스를 크게 줄입니다. 분기 명령을 줄이는 것은 루프 언롤링(loop unrolling)의 목적이며, 사용하는 메모리의 총량은 변하지 않습니다.

  • A. 올바릅니다. 캐시에 들어가는 단위로 계산하여 데이터의 재사용을 늘립니다.
  • B. 분기를 줄이는 것은 루프 언롤링의 목적입니다.
  • C. 계산 순서는 바뀌며, 사용하는 메모리의 총량은 변하지 않습니다.
이 분야 연습하기 분야로 돌아가기

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

  1. 위와 같이 x 좌표만 합산하는 처리를, 구조체의 배열(각 성분을 별도의 배열로 만든 형태)로 바꾸면 빨라지기 쉬운 이유는 무엇입니까?
  2. 캐시를 명령용(I 캐시)과 데이터용(D 캐시)으로 나눈 L1 캐시의 주된 이점은 무엇입니까?
  3. 페이지 크기 4 KB, 라인 크기 64바이트인 시스템에서 L1 캐시를 가상 인덱스·물리 태그(VIPT) 방식으로 하고, 인덱스와 오프셋을 페이지 내의 비트만으로 구성하고자 합니다. 8-way 세트 연관이라면 캐시 용량은 최대 얼마까지 할 수 있습니까?
  4. L1 캐시에 가상 인덱스·물리 태그(VIPT) 방식이 자주 사용되는 주된 이유는 무엇입니까?
  5. 캐시의 히트 시간이 2사이클, 미스율이 4%, 미스 페널티가 150사이클일 때, 평균 메모리 접근 시간은 몇 사이클입니까?

이 분야의 비교