[컴퓨터 구조] - 17강. 캐시메모리
이 글은 한빛미디어 '혼자 공부하는 컴퓨터 구조 + 운영체제'를 공부하고 정리한 내용입니다.
● 저장 장치 계층 구조 : 컴퓨터가 사용하는 저장 장치들은 'CPU에 얼마나 가까운가'를 기준으로 계층적 구조를 갖는다.
- CPU에 가까울수록 용량이 적고 비용이 비싸지만 빠르다.
● 캐시메모리(Cache Memory) : CPU와 메모리 사이에 위치하여, 레지스터보단 용량이 크고 메모리보단 빠른 SRAM 기반의 저장장치. 메모리에서 필요한 데이터를 가져오는거 보단, 캐시메모리에 사용될 값을 미리 가져오고 사용하는 것이 빠르다.
- 캐시메모리는 CPU(코어)와 가장 가까운 순서대로 L1(Level 1) 캐시, L2 캐시, L3 캐시로 세분화되어 불린다.
이 때 L1, L2 캐시는 코어 내부에 L3 캐시는 코어 외부에 위치해 있다.
또한 캐시메모리의 용량은 L1,L2,L3 순으로 커지며, 속도는 줄어든다.
멀티 코어 프로세서에서 L1-L2-L3 캐시는 일반적으로 L1캐시와 L2캐시를 코어마다 고유한 캐시 메모리로 할당되고, L3 캐시는 여러 코어가 공유하는 형태로 사용한다.
- 여기에서 CPU와 가장 가까운 L1 캐시의 접근 속도를 조금이라도 더 높이기 위해서 명령어만을 저장하는 L1I(Instruction) 캐시와 데이터만들 저장하는 L1D(Data) 캐시로 분리하는 경우도 있는데, 이를 분리형 캐시(Split Cache)라고 한다.
캐시 히트, 캐시 미스
- 캐시메모리는 CPU에서 사용할 법한 대상을 예측하여 메모리에서 값을 가져와 저장한다. 이때 사용될 것으로 예측한 데이터가 실제로 들어맞아 캐시 메모리 내 데이터가 활용되는 경우를 캐시 히트(Cache Hit)라고 한다.
- 반대로 예측이 틀려 메모리에서 필요한 데이터를 직접 가져와야 하는 경우를 캐시 미스(Cache Miss)라고 하는데, 캐시미스가 발생하면 CPU는 메모리에서 직접 데이터를 가져와야 하기 때문에 자주 발생하게 된다면 성능이 떨어진다.
- 캐시 히트가 되는 비율을 캐시 적중률(Cache Hit Ratio)라고 하는데, 요즘 컴퓨터의 캐시 적중률은 85%~95% 이상된다.
그럼 캐시 메모리는 어떻게 사용될 데이터를 예측할까?
캐시 메모리는 한 가지 원칙에 따라 메모리로부터 가져올 데이터를 결정하는데 참조 지역성의 원리(Locality of Reference) 이다.
- CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다. (시간 지역성 - Temporal Locality)
- 변수를 선언하고 값을 저장하면 해당 변수에 다시 접근하여 변수의 값을 사용할 수 있듯 CPU는 변수가 저장된 메모리 공간을 언제든 다시 참조 할 수 있다. 즉 CPU는 최근에 접근했던 메모리 공간을 여러 번 접근할 가능성이 있다. - CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다. (공간 지역성 - Spatial Locality)
- CPU가 실행하려는 프로그램은 관련 데이터들끼리 한데 모여있고, 하나의 프로그램 내에서도 관련 있는 데이터들이 모여서 저장된다. 예를 들어 워드 프로세서의 입력에 관한 기능은 서로 인접한 메모리 공간에 저장된다. 이렇듯 접근한 메모리 공간 근처를 접근할 가능성이 있다.
이 두가지 상황을 고려하여 CPU가 사용할 수도 있는 데이터를 캐시메모리에서 예측한다.