윈디하나의 누리사랑방. 이런 저런 얘기

글쓴시간
분류 기술,IT

CPU L1, L2, L3 캐시

※ 현대의 상용 CPU는 모두 여러 레벨의 캐시(Cache)를 두고 있다. CPU의 캐시는 CPU에 비해 상대적으로 많이 느린 메모리로부터 데이터를 미리 가져와 코어(CPU에서 연산 기능을 하는 전자 회로를 모아놓은 영역) 옆에 저장해 놓음으로써, 코어가 데이터 입/출력 속도를 빠르게 처리할 수 있도록 한다. 코어에 얼마나 가까우냐에 따라 L1, L2, L3캐시로 나눈다. L은 Level 의 약어다.

사용자 삽입 이미지

캐시의 기본 원리. 출처: 위키피디아 "CPU 캐시"

- L1 캐시: 코어에 가장 가까우며 데이터 입출력 속도가 가장 빠르다. 인스트럭션 캐시(Instruction Cache, 명령어를 캐시)와 데이터 캐시(Data Cache, 데이터를 캐시)로 나뉜다. SRAM(Static RAM)을 사용하며 용량당 제조비용이 매우 비싸다. 인텔의 샌디브릿지 CPU에서는 코어당 32kB 인스트럭션 캐시와 32kB 데이터 캐시가 있으며, 3 클럭 만에 데이터를 가져올 수 있다.

- L2 캐시: L1캐시보다는 코어에서 멀리 존재하지만 그래도 메모리보다는 매우 빠르다. 보통 DRAM으로 구성된다. 샌디브릿지에서는 코어당 256 kB가 있으며, 8 클럭 만에 데이터를 가져올 수 있다.

- L3 캐시: L2캐시보다도 코어에서 멀리 위치하지만 역시 메모리보다는 빠르다. L3캐시가 없는 CPU 도 많다. L2캐시보다 더 느린 DRAM으로 구성된다. 보통 멀티 코어 CPU에서 코어간 캐시 데이터를 공유하기 위해(정확하게는 캐시 일관성(Cache Coherency)을 쉽게 구현하기위해) 사용하며, 서버급 CPU에서는 64MB이상 달려있는 경우도 흔하다. 샌디브릿지 데스크탑 CPU에서는 CPU당 8MB까지(4개의 코어가 공유) 있으며, 25 클럭 만에 데이터를 가져올 수 있다.

- L4 캐시: L3캐시보다도 코어에서 멀리 위치하며, 일반적으로 캐패시터 기반 DRAM인 eRAM으로 구성된다. (L1, L2, L3는 게이트 기반 DRAM) 사실상 메모리(메모리는 캐패시터 기반 DRAM이다)인 셈으로 메모리와 다른건 단지 CPU안에 집적되어있다는게 다를 뿐이다. (그래도 메모리보다는 빠르다) 보통 CPU당 128MB이상 사용하곤 한다.

- Trace 캐시: L1 인스트럭션 캐시의 특별한 형태. 명령어를 캐시하는게 아니라 '디코딩된 명령어'를 '저장'해 놓는다. 일부 서버급 CPU나 펜티엄 4에서 사용되었으며 오늘날에는 사용하지 않는다.

사용자 삽입 이미지

샌디브릿지의 다이 포토 및 설명

※ 익스클루시브(Exclusive) 캐시 와 인클루시브(Inclusive) 캐시

- 인클루시브 캐시: 캐시 안의 데이터는 메모리의 일부를 그대로 가져온다. 메모리의 값이 변하면 캐시 메모리의 값도 변해야 한다. 인텔에서 채택하고 있는 방식이다.

- 익스클루시브 캐시: 캐시는 메모리와 동일하게 작동한다. 좀 더 복잡하다. 이런 캐시를 가진 CPU의 L2 캐시 메모리가 16MB고, 시스템에 1024MB가 설치되어있다면, 사용할 수 있는 총 메모리는 1040MB가 된다. (하지만 설계상 사용할 수 있을 뿐, OS에서 사용하지는 않는다) AMD에서 채택하는 방식이다.

Wolfdale 과 SandyBridge 의 L2, L3 캐시 비교: http://windy.luru.net/1188