저장 장치 층 구조memory hierarchy는 각기 다른 용량과 성능의 저장 장치들을 'CPU에 얼마나 가까운가'를 기준으로 계층화하여 표현한 구조다. CPU에 가까울수록 빠르고, 용량이 작고, 비싸다.
캐시메모리는 CPU의 연산 속도와 메모리 접근 속도의 차이를 줄이기 위한 저장 장치다.
컴퓨터 내부 여러 개의 캐시 메모리들이 CPU(코어)와 가까운 순서대로 계층을 구성한다. 코어와 가장 가까운 캐시 메모리를 L1level1캐시, 그 다음 가까운 캐시 메모리 L2level2캐시, 다음은 L3level3캐시라고 부른다.
CPU가 메모리 내에 데이터가 필요하다고 판단하면 L1 > L2 > L3 순으로 데이터를 검색한다.
멀티 코어 프로세서에서 L1 캐시와 L2캐시는 코어마다 고유한 캐시 메모리로 할당되고, L3 캐시는 여러 코어가 공유하는 형태로 사용된다.
코어와 가장 가까운 L1 캐시는 조금이라도 접근 속도를 빠르게 만들기 위해 명령어만을 저장하는 L1I 캐시와 데이터만을 저장하는 L1D 캐시로 분리하는 경우도 있다.
캐시 메모리는 CPU가 사용할 법한 대상을 예측하여 저장한다. 이떄 자주 사용될 것으로 예측한 데이터가 실제로 들어맞아 캐시 메모리 내 데이터가 CPU에서 활용될 경우를 캐시 히트cache hit하고 한다.
반대로 예측이 틀려 메모리에서 필요한 데이터를 직접 가져와야 하는 경우를 캐시 미스cache miss라고 한다. 캐시 미스가 발생하면 CPU가 필요한 데이터를 메모리에서 직접 가져와야 하기 때문에 자주 발생하면 성능이 떨어지게 된다.
캐시가 히트되는 비율을 캐시 적중률cache hit ratio이라고 하며 다음과 같이 계산한다.
캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)
참조 지역성의 원리locality of reference, principle of locality란 CPU가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리다. 캐시 메모리는 이 원칙에 따라 메모리로부터 가져올 데이터를 결정한다.
시간 지역성temporal locality
: CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
가령 변수에 값을 저장하면 CPU는 변수가 저장된 메모리 공간을 언제든 다시 참조할 수 있다는 것을 의미한다.
공간 지역성spatial locality
: CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.
CPU가 실행하려는 프로그램은 보통 관련 데이터들끼리 한데 모여 있다.
CPU가 워드 프로그램을 실행할 적에는 워드 프로그램이 모여 있는 공간 근처를 집중적으로 접근할 것이고, 사용자가 입력을 할 적에는 입력 기능이 모여 있는 공간 근처를 집중적으로 접근한다.