PE Notes · CA/OS
캐시 메모리
CPU와 DRAM 사이 계층 캐시의 시간·공간 지역성, 직접·완전연관·집합연관 매핑, LRU 교체와 쓰기 정책을 정리합니다.
클럭은 나노초의 앞자리를 뛰는데, DRAM은 그 뒤에서 헐떡입니다. 그 간격을 메우는 작은 고속 메모리가 입니다. 방금 쓴 값과 그 옆 주소를 코어 가까이에 둡니다. L1은 코어 안, L2는 코어 옆, L3는 소켓이 나눕니다. 그 아래가 DRAM입니다.
가까이 두는 이유
프로그램은 같은 자리를 다시 밟고, 배열은 옆 칸을 이어서 읽습니다. 이 습관이 입니다. 시간 지역성은 루프 변수처럼 방금 값을 다시 찾습니다. 공간 지역성은 연속 주소입니다. 명령어가 차례로 흐르는 순차 지역성을 따로 적기도 합니다.
| 지역성 | 한 줄 |
|---|---|
| 시간 | 최근 블록을 다시 찾는다 |
| 공간 | 옆 주소를 곧 찾는다 |
| 순차 | 명령어가 이어서 흐른다 |
는 캐시에 값이 있는 접근입니다. 미스는 DRAM에서 블록을 끌어 올립니다. 적중률이 성능을 거의 결정합니다. 여러 코어가 같은 줄을 고치면 일관성 프로토콜이 필요합니다. 그 칸은 캐시 일관성 노트입니다.
어디에 넣을 것인가
메모리 블록을 캐시 어느 줄에 둘지가 매핑입니다. 직접 매핑은 주소가 한 줄만 가리킵니다. 회로는 단순한 대신, 같은 줄을 다투는 충돌 미스가 많습니다. 완전 연관은 아무 줄에나 넣습니다. 비교기가 늘고 느려집니다. 은 n개 줄짜리 집합 안에서만 고릅니다. 요즘 CPU의 기본입니다.
| 매핑 | 자리 | 값 |
|---|---|---|
| 직접 | 한 줄 고정 | 단순, 충돌 미스 |
| 완전 연관 | 아무 줄 | 미스 ↓, 회로 ↑ |
| 집합 연관 | n-way 집합 | 둘의 절충 |
줄이 가득이면 누구를 내보낼지 고릅니다. 는 가장 오래 안 쓴 블록입니다. LFU는 횟수가 적은 쪽, FIFO는 먼저 들어온 쪽, 임의는 제비입니다. OPT는 미래를 보는 이론 기준입니다.
쓸 때 어디를 고칠 것인가
Write-Through는 캐시와 DRAM을 같이 고칩니다. 정합은 쉽고 쓰기가 느립니다. 은 캐시에만 적고, 쫓겨날 때 DRAM을 갱신합니다. 더티 비트와 일관성 관리가 따라옵니다. 인터리빙이 DRAM 쪽 대역을 벌면, 캐시 미스가 덜 아픕니다.
가상 주소와 물리 주소가 갈리는 층은 가상 메모리 노트입니다. 답안은 계층과 지역성, 매핑 셋, LRU, 쓰기 두 정책을 한 장에 닫습니다.