인프런 커뮤니티 질문&답변

정세훈님의 프로필 이미지
정세훈

작성한 질문수

개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제

캐시 메모리

캐시 메모리 코어 내부의 캐시메모리의 데이터 일관성

해결된 질문

작성

·

564

0

수업 도중에 여담으로 설명해준 내용에 대해 의문이 생겨서 질문글을 남기게 되었습니다.

멀티코어 프로세서로 데이터를 처리할 때, 각각의 코어 내부에 탑재되어 있는 캐시메모리(L1, L2)가 있다고 설명해주셨습니다.

작업 도중에 메모리와 캐시메모리에 저장되어있는 내용(데이터)가 변경되는 것은 데이터 처리의 자연스러운 흐름이라 이해가 됩니다. 그러나 코어1에 있는 캐시메모리의 내용이 바뀌게 되면 왜 코어2에 있는 캐시메모리가 알아야 하는지 이해가 되지 않아 질문을 남기게 되었습니다.

제가 이해한 것은, 멀티코어는 데이터처리를 더 빠르게 하기 위한 설계이므로, 같은 데이터가 아닌 다른 데이터를 처리하는 것이 유리하다고 생각합니다. 그래서 코어1에 있는 캐시메모리와 코어2에 있는 캐시메모리는 독립적인 관계라고 생각이 듭니다. 수업시간에 말씀해주신 데이터 일관성과 각 코어에 있는 캐시메모리의 데이터 처리와의 관계가 어떤것인지 자세하게 알고싶습니다.

답변 2

2

강민철님의 프로필 이미지
강민철
지식공유자

안녕하세요!

예를 통해 말씀드리자면,

가령 CPU가 접근하고자 하는 변수 x가 있다고 가정해보겠습니다 :)

초기에 메모리에는 변수 x가 10, L2캐시에도 10, L1캐시에도 10이 반영되어 있다고 해보겠습니다.

CPU가 실행 과정에서 변수 x를 변경한다면

(변수 x에 대한 쓰기 작업 수행)

  • L1 캐시에만 쓸 수도

  • L1 + L2 캐시에만 쓸 수도

  • L1 + L2 + 메모리까지 쓸 수도 있습니다.

이는 캐시 메모리 쓰기 정책에 따라 다릅니다

다만 L1 + L2 + 메모리까지 쓰기와 같이 많은 쓰기작업을 수행할 경우

당연하게도 쓰기 성능이 느려지기에 일반적으로 일부 캐시에만 쓰기 작업을 수행합니다

즉, L1 캐시 L2 캐시 메모리는 때에 따라 다른 값을 가질 수 있다는 의미입니다.

만일 CPU가 L1 캐시의 x를 20으로 변경했을 경우, 여전히 L2 캐시와 메모리는

x를 10으로 알고 있기 때문에 변경된 값을 알아야 합니다.

 

 

 

0

정세훈님의 프로필 이미지
정세훈
질문자

아, L2 캐시와 메모리에 x에 20을 쓰는게 아니라, L1캐시에 x가 20으로 바뀌었다는 사실을 인지해야 한다는 말씀인건가요?

만약, 제가 이해한것이 맞다면 어떤 방식으로 바뀌었다는 사실을 인지할 수 있는건가요??

강민철님의 프로필 이미지
강민철
지식공유자

단순히 CPU에 가까운 캐시의 내용을

CPU 사이클을 할당해

다른 캐시나 메모리에 쓰기 작업을 수행하며 이루어집니다^^

정세훈님의 프로필 이미지
정세훈

작성한 질문수

질문하기