메모리 계층 구조

하드웨어 프리페치가 특히 효과를 발휘하기 쉬운 접근은 무엇입니까?

  1. A배열을 일정한 간격(스트라이드)으로 차례로 읽어 나가는 접근
  2. B연결 리스트를 처음부터 한 요소씩 따라가는 접근
  3. C해시 테이블을 임의의 키로 조회하는 접근
정답과 해설 보기

정답: A. 배열을 일정한 간격(스트라이드)으로 차례로 읽어 나가는 접근

하드웨어 프리페처는 직전 접근 주소의 규칙성(연속이나 일정한 간격)을 찾아내어 다음에 올 주소를 예측해 미리 읽어 옵니다. 배열을 일정한 스트라이드로 읽는 접근은 예측하기 쉬워 효과가 큽니다. 연결 리스트는 다음 요소의 주소를 현재 요소를 읽기 전까지 알 수 없으므로 규칙성이 없어 예측할 수 없습니다. 임의의 키로 해시 테이블을 참조하는 것도 주소에 규칙성이 없어 효과가 작습니다.

  • A. 올바릅니다. 규칙적인 간격의 접근은 예측하기 쉬워 효과가 큽니다.
  • B. 다음 주소를 현재 요소를 읽기 전까지 알 수 없으므로 예측할 수 없습니다.
  • C. 주소에 규칙성이 없으므로 효과가 작습니다.
이 분야 연습하기 분야로 돌아가기

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

  1. 소프트웨어 프리페치 명령을 넣을 때, 얼마나 앞의 데이터를 읽을 것인가(프리페치 거리)에 대한 설명으로 올바른 것은 무엇입니까?
  2. 위의 루프에서 int가 4바이트, 캐시 라인이 64바이트이고, 배열은 캐시에 들어 있지 않으며 시작이 라인 경계에 정렬되어 있을 때, 프리페치가 없다면 배열 읽기의 미스율은 얼마입니까?
  3. 행렬 곱셈 등에서 사용되는 루프 블로킹(타일링, tiling)의 주된 목적은 무엇입니까?
  4. 위와 같이 x 좌표만 합산하는 처리를, 구조체의 배열(각 성분을 별도의 배열로 만든 형태)로 바꾸면 빨라지기 쉬운 이유는 무엇입니까?
  5. 캐시를 명령용(I 캐시)과 데이터용(D 캐시)으로 나눈 L1 캐시의 주된 이점은 무엇입니까?

이 분야의 비교