개념
CPU 캐시는 프로세서가 명령어와 데이터를 가져오는 대기 시간을 줄이기 위한 캐시다. 주기억 장치보다 가까운 저장 계층에서 필요한 내용을 찾으면 더 먼 메모리에 접근하는 비용을 줄일 수 있다. 프로세서는 작은 고속 캐시와 더 큰 캐시를 함께 사용해 속도와 용량을 절충한다.
L1, L2, L3
L은 계층을 뜻하는 레벨(level)의 약자다. 일반적인 다단계 구성에서 L1은 실행 코어에 가장 가깝고 접근 지연이 작지만 용량도 작다. L2는 그보다 큰 내용을 담으며, L3는 여러 코어가 공유하는 더 큰 저장 공간으로 구성되는 경우가 많다. 실제 용량과 공유 범위는 프로세서 설계에 따라 달라진다.
숫자가 큰 쪽이 더 좋은가
L3라는 이름이 L1의 상위 제품이나 개선판을 뜻하지는 않는다. 접근 지연만 비교하면 보통 L1이 유리하고, 보관할 수 있는 데이터 양은 L3가 더 크다. 작은 L1에 없는 내용을 더 큰 캐시에서 찾을 수 있으므로 두 계층은 함께 쓰인다. L1과 L3 중 하나만 고르면 성능을 설명할 수 없다.
적중과 미스
필요한 내용을 캐시에서 찾는 것을 적중, 찾지 못하는 것을 미스라고 한다. 미스가 나면 다른 캐시 계층이나 주기억 장치에서 내용을 가져와야 할 수 있다. 비슷한 데이터를 다시 쓰거나 가까운 주소를 연속으로 읽는 작업은 캐시를 활용하기 쉽다. 하드웨어는 앞으로 필요한 데이터를 예측해 미리 가져오기도 한다.
용량과 성능의 관계
큰 캐시는 더 많은 작업 데이터를 보관할 수 있지만, 용량만으로 프로그램의 실행 시간을 예측할 수는 없다. 프로그램이 접근하는 데이터의 크기와 순서, 적중률, 접근 지연, 코어 간 공유 방식이 함께 작용한다. 서로 다른 CPU를 비교할 때는 L3 용량 한 항목으로 우열을 정하기보다 실제 작업의 측정 결과를 함께 확인해야 한다.