메모리 계층은 아래와 같은 구성 요소로 이루어져 있습니다.
메모리 계층 구조(Memory hierarchy)란 메모리를 필요에 따라 여러 가지 종류로 나누어 둠을 의미합니다. 그 이유는 메모리를 필요에 따라 CPU가 메모리에 더 빠르게 접근하기 위해서입니다.
정리하자면, 다음과 같습니다.
추가로 더 자세히 설명하자면,
상위부터 {레지스터}, {캐시}, {메인메모리}, {하드디스크} 순으로 구성되어 있으며 위쪽에 있을수록 더 좋은 성능을 냅니다. 구조가 이렇게 형셩된 이유는 비용 측면 때문인데, 레지스터만으로 고용량을 구성하려면 엄청나게 많은 비용이 들기 때문입니다.
따라서 컴퓨터는 가장 많이 쓰는 작업을 상단에 두고, 적게 쓰는 작업을 하단에 두는 식으로 동작하여 효율적인 성능을 내줍니다.
CPU는 처음에 레지스터에서 프로그램을 찾고, 없다면 캐시, 그 이후에는 메모리에서 찾는 식으로 역할을 수행합니다.
작년에 배운 컴퓨터구조에 나온 그림입니다.
즉, 캐시 메모리는 {CPU}와 {주기억장치} 간의 속도 차이 개선을 목적으로 합니다
캐시는 보통 L1, L2, L3로 나뉘며 L1부터 CPU에 가깝게 배치됩니다.
L1, L2는 각 코어마다 가지고 있는 캐시, L3은 모든 코어가 공유하는 캐시입니다.
CPU는 필요한 데이터에 엑세스할 때 가장 가까운 레벨1에 있는 L1캐시를 먼저 탐색합니다. L1캐시에 없다면 L2캐시를 탐색하고 없다면 L3캐시를 탐색합니다. 그래도 없다면 메모리에서 데이터를 인출하고 다시 캐시에 저장합니다.
이렇게 캐시를 사용하면 서버 간 불필요한 트래픽을 줄일 수 있으며, 그로 인해 웹 애플리케이션 서버의 부하가 감소됩니다.
또한, 캐시에 저장된 데이터를 빠르게 읽어와 애플리케이션을 사용하는 고객에게 빠르게 데이터를 제공할 수 있습니다.
속도는 느린 것보다는 빠른 것을 원하고, 저장 용량은 작은 것보다는 큰 것을 원합니다.
하지만, 이 둘 사이에는 trade-off가 존재합니다. (ex, 빠를 수록 용량은 작아집니다)
그래서 성능을 위해 속도와 용량의 상호보완을 위한 것이 메모리 계층 구조입니다.
또한, 자주 쓰이는 데이터는 반복해서 쓰인다는 참조 지역성(locality of reference)의 원리를 캐시에 적용하여, 자주 쓰이는 데이터를 주기억장치까지 가지 않고 캐시메모리에서 해결함으로써 시간을 단축시킬 수 있습니다.
즉,
- 속도와 용량의 상호보완을 위해서
- 참조 지역성의 원리를 이용해 시간을 단축하기 위해서
다음과 같은 경제성들을 고려하여 만들어진 것이 메모리 계층 구조도라고 볼 수 있습니다.
[reference]