Computing/Operating System

Cache line.

i독 2021. 10. 13. 06:59

CPU가 메모리로부터 데이터를 가져올 때 바이트 단위가 아닌 Cache line을 가득 채울 만큼의 데이터를 가져오는 것을 말한다.

메모리의 페이징 기법과 비슷하고, CPU에 따라 32, 64, 128 byte 로 구성되며 해당 사이즈 경계로 정렬되어 있다.

Cache line을 사용하는 이유는 일반적인 app의 경우 인접한 byte들을 사용하는 경우가 많기에 cpu의 메모리 접근 횟수를 줄여 성능을 향상 시키기 위함이다.

Cache line은 성능의 향상을 위해 도입되었지만, 멀티 프로세서 환경에서는 문제가 될 여지가 있다.

다수의 CPU가 동일한 Cache line을 보유하고 있고, 그 중 하나의 CPU가 해당 Cache line을 수정한다면 다른 CPU들은 해당 Cache line의 갱신을 어떻게 확인해야 하는가?

이런 문제를 해결 하기 위해 CPU 설계자는 Cache line이 수정되면 다른 CPU가 들고 있는 Cache line을 무효화 시켜 데이터를 동기화 한다. 이후 다른 CPU가 해당 Cache line을 사용하기 위해 메모리에서 다시 읽게 된다. 오히려 멀티 환경에서는 성능이 저하될 수 있다.

그래서 App 개발자는 이러한 속성을 이해해서 애플리케이션에서 사용하는 데이터를 Cache line의 크기와 같은 경계라인으로 묶어서 다르는 것이 좋다.

획득한 CPU Cache 라인을 기반으로 데이터의 경계라인을 나눌 때는 읽기 전용 데이터와, 읽고 쓰기가 빈번한 데이터를 구분하는 것이 좋습니다.

빈번하게 수정될 수 있는 변수들은 다른 캐쉬라인으로 보내도록 코드를 구성한다.

 

비효율적으로 설계된 Struct
개선된 Struct

 

>> 출처

https://jungwoong.tistory.com/42

 

[windows] 멀티 프로세서 환경에서의 CPU 캐시라인

CPU의 캐시라인이란?  CPU가 메모리로부터 데이터를 가져올 때는 바이트 단위로 가져오지 않고 캐시라인을 가득 채울 만큼의 데이터를  가져오는 것을 말합니다. (메모리의 페이징 기법과 비슷

jungwoong.tistory.com

 

'Computing > Operating System' 카테고리의 다른 글

False sharing. 거짓 공유  (0) 2021.10.13
Race condition. 경쟁 상태  (0) 2021.10.13
Architecture, Blueprint  (0) 2021.10.13
Operating System 2  (0) 2015.04.12
Operating System 1  (0) 2015.04.12