메모리 계층 구조

두 프로그램을 같은 코어에서 번갈아 실행하면, 각각을 단독으로 실행하는 것보다 느려질 수 있습니다. 캐시의 관점에서 가장 적절한 설명은 무엇입니까?

  1. A번갈아 실행하면 각각이 실행하는 명령의 수 자체가 2배로 늘어나기 때문
  2. B번갈아 실행하면 캐시의 용량이 절반으로 재설정되기 때문
  3. C상대의 데이터에 자신의 데이터가 쫓겨나 다시 읽는 일이 늘어나기 때문
정답과 해설 보기

정답: C. 상대의 데이터에 자신의 데이터가 쫓겨나 다시 읽는 일이 늘어나기 때문

프로그램을 전환하면 상대 프로그램이 사용한 데이터로 캐시나 TLB가 채워져, 자신의 차례가 돌아왔을 때는 필요한 데이터가 쫓겨나 있습니다. 그래서 단독이라면 히트했을 접근에서 미스가 일어나 데이터를 주기억장치에서 다시 읽는 시간이 듭니다. 전환 간격이 짧을수록 이 영향은 커집니다. 실행하는 명령의 수는 변하지 않으며, 캐시의 용량이 재설정되는 것도 아닙니다. 캐시를 나누어 쓰는 영향 때문입니다.

  • A. 각각의 명령 수는 변하지 않습니다.
  • B. 캐시의 용량이 변하는 것은 아닙니다.
  • C. 올바릅니다. 상대의 데이터에 쫓겨나 다시 읽는 미스가 늘어납니다.
이 분야 연습하기 분야로 돌아가기

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

  1. 시간적 지역성의 예로 가장 적절한 것은?
  2. C 언어의 2차원 배열 a[i][j]를 위와 같이 안쪽 루프를 j로 하여 순회하면, 안쪽을 i로 하는 것보다 빨라지기 쉽습니다. 그 이유는 무엇입니까?
  3. 주소가 32비트, 용량 32 KB, 라인 크기 64바이트인 직접 사상(direct-mapped) 캐시에서 태그는 몇 비트가 됩니까?
  4. 주소가 32비트, 용량 32 KB, 라인 크기 64바이트인 4-way 세트 연관 캐시의 세트 수는 얼마입니까?
  5. 완전 연관(fully-associative) 캐시에서 주소 중 인덱스(세트를 고르는 부분)에 사용하는 비트 수는 얼마입니까?

이 분야의 비교