실제 캐시 계층 구조의 해부

mydailylogs
|2022. 11. 29. 01:07

지금까지 캐시가 오직 프로그램 데이터만을 보관한다고 가정해 왔다. 그러나 사실 캐시는 데이터 뿐만 아니라 인스트럭션들도 저장할 수 있다. 인스트럭션을 저장하는 캐시는 i-cache라고 한다. 반대로 프로그램 데이터만을 보관하는 캐시는 d-cache라고 한다. 현대 프로세서들은 분리된 i-cache와 d-cache를 가지고 있다. 여기에는 여러가지 이유가 있다.

두 개의 별도의 캐시가 있으면 프로세서는 인스트럭션 워드와 데이터 워드를 동시에 읽을 수 있다. i-cache는 보통 읽기만 허용되며 따라서 좀 더 단순하다. 이 두 캐시는 종종 다른 접근 패턴에 대해 최적화되며 블록 크기, 결합도, 용량 등에 있어서 서로 다른 값을 갖는다. 또한 분리된 캐시를 가지기 때문에 데이터 접근이 인스트럭션 접근과 충돌 미스를 발생시키지 않으며 그 반대도 마찬가지이다. 대신 수용할 수 있는 용량은 줄어들었기에 용량 미스의 가능성은 잠재적으로 증가한다.

그림 1 인텔 코어 i7 캐시 계층 구조

위 그림은 인텔  i7 프로세서에 대한 캐시 계층 구조를 나타낸다. 각 CPU 칩은 4 개의 코어를 가지고 있다. 각 코어는 자체적인 L1 i-cache, L1 d-cache, L2 통합 캐시를 가지고 있다. 

그리고 모든 코어들은 하나의 L3 통합 캐시를 서로 공유한다. 한 가지 흥미로운 점은 이 계층 구조의 특징은 모든 SRAM 캐시 메모리들이CPU 칩 내에 들어 있다는 점이다.

'CS' 카테고리의 다른 글

캐시 친화적 코드 작성하기  (0) 2022.11.29
캐시 성능 지표  (0) 2022.11.29
Write 관련 캐시 이슈  (0) 2022.11.29
Set Associative Cache (집합결합성 캐시)  (0) 2022.11.28
Directed Mapped Cache (직접매핑 캐시)  (0) 2022.11.28