메모리 계층 구조

한 번 쓴 뒤 당분간 다시 읽지 않는 큰 데이터를 쓸 때, 캐시를 거치지 않는 스토어(논템포럴 스토어, non-temporal store)를 사용하는 주된 이점은 무엇입니까?

  1. A쓴 데이터가 캐시에 오래 남아 나중에 읽을 때 빨라진다
  2. B재사용하지 않는 데이터로 캐시를 채우지 않아도 된다
  3. C쓰기 순서가 보장되지 않게 되어 프로그램의 오류를 찾기 쉬워진다
정답과 해설 보기

정답: B. 재사용하지 않는 데이터로 캐시를 채우지 않아도 된다

일반적인 쓰기에서는 라이트 얼로케이트에 의해 라인을 주기억장치에서 읽어 온 뒤에 쓰므로, 쓰기만 하는 데이터라도 읽기 통신이 발생하고 재사용할 다른 데이터를 쫓아내 버립니다. 논템포럴 스토어는 쓰기를 모아 직접 주기억장치로 보내므로 캐시를 오염시키지 않고 불필요한 읽기도 생략할 수 있습니다. 쓴 데이터는 캐시에 남지 않으므로 곧바로 다시 읽는 경우에는 오히려 느려집니다. 순서의 취급이 달라지는 것은 부작용이지 이점이 아닙니다.

  • A. 쓴 데이터는 캐시에 남지 않으며, 곧바로 읽는다면 오히려 느려집니다.
  • B. 올바릅니다. 재사용하지 않는 데이터로 캐시를 채우지 않고 불필요한 읽기도 생략합니다.
  • C. 순서 취급의 변화는 주의할 점이지 이점이 아닙니다.
이 분야 연습하기 분야로 돌아가기

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

  1. 캐시의 히트율이 95%일 때, 미스율은 얼마입니까?
  2. 미스한 라인을 주기억장치에서 읽어 올 때, CPU가 필요로 하는 워드(word)를 먼저 보내고 나머지를 나중에 보내는 기법은 무엇입니까?
  3. 위의 두 루프를 하나로 합치면(루프 융합, loop fusion) N이 클 때 빨라지기 쉬운 이유는 무엇입니까?
  4. 큰 행렬을 전치(transpose)하는 처리(b[j][i] = a[i][j])에서 캐시 미스가 많아지기 쉬운 이유와 대표적인 대책의 조합으로 올바른 것은 무엇입니까?
  5. 일반적인 컴퓨터의 기억 계층에서 상위 계층(CPU에 가까운 쪽)일수록 성립하는 성질로 올바른 것은 무엇입니까?

이 분야의 비교