메모리 계층 구조

소프트웨어 프리페치 명령을 넣을 때, 얼마나 앞의 데이터를 읽을 것인가(프리페치 거리)에 대한 설명으로 올바른 것은 무엇입니까?

  1. A거리는 짧을수록 좋으며, 다음 요소를 읽기 직전에 넣는 것이 최적이다
  2. B거리는 길수록 좋으며, 루프에서 사용할 모든 데이터를 처음에 한꺼번에 읽어 두는 것이 최적이다
  3. C너무 짧아도 너무 길어도 좋지 않으며, 미스 시간과 루프 1회의 시간으로 정한다
정답과 해설 보기

정답: C. 너무 짧아도 너무 길어도 좋지 않으며, 미스 시간과 루프 1회의 시간으로 정한다

프리페치는 데이터가 필요해질 때까지 메모리로부터의 읽기가 끝나 있지 않으면 의미가 없습니다. 거리가 너무 짧으면 도착이 늦고, 너무 길면 캐시에 들어온 데이터가 사용되기 전에 쫓겨나거나 캐시를 오염시킵니다. 기준은 미스 페널티를 루프 1회의 실행 시간으로 나눈 횟수만큼 앞을 읽는 것입니다. 직전에 넣기만 해서는 대기 시간을 숨길 수 없고, 모든 데이터를 한꺼번에 읽으면 캐시에 다 들어가지 못합니다.

  • A. 직전에는 읽기가 제때 끝나지 않아 대기 시간을 숨길 수 없습니다.
  • B. 모든 데이터를 먼저 읽으면 사용하기 전에 쫓겨나 버립니다.
  • C. 올바릅니다. 제때 도착하면서 쫓겨나지 않는 거리를 미스 시간과 루프 시간으로 고릅니다.
이 분야 연습하기 분야로 돌아가기

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

  1. 위의 루프에서 int가 4바이트, 캐시 라인이 64바이트이고, 배열은 캐시에 들어 있지 않으며 시작이 라인 경계에 정렬되어 있을 때, 프리페치가 없다면 배열 읽기의 미스율은 얼마입니까?
  2. 행렬 곱셈 등에서 사용되는 루프 블로킹(타일링, tiling)의 주된 목적은 무엇입니까?
  3. 위와 같이 x 좌표만 합산하는 처리를, 구조체의 배열(각 성분을 별도의 배열로 만든 형태)로 바꾸면 빨라지기 쉬운 이유는 무엇입니까?
  4. 캐시를 명령용(I 캐시)과 데이터용(D 캐시)으로 나눈 L1 캐시의 주된 이점은 무엇입니까?
  5. 페이지 크기 4 KB, 라인 크기 64바이트인 시스템에서 L1 캐시를 가상 인덱스·물리 태그(VIPT) 방식으로 하고, 인덱스와 오프셋을 페이지 내의 비트만으로 구성하고자 합니다. 8-way 세트 연관이라면 캐시 용량은 최대 얼마까지 할 수 있습니까?

이 분야의 비교