[CS/운영체제] 메모리 계층 구조도, 그리고 캐시 메모리(Cache memory)

이수진·2023년 9월 10일
0
post-thumbnail
post-custom-banner

메모리 계층 구조도 소개

메모리 계층은 아래와 같은 구성 요소로 이루어져 있습니다.

메모리 계층 구조(Memory hierarchy)란 메모리를 필요에 따라 여러 가지 종류로 나누어 둠을 의미합니다. 그 이유는 메모리를 필요에 따라 CPU가 메모리에 더 빠르게 접근하기 위해서입니다.

  1. {레지스터}와 {캐시} 메모리는 CPU 내부에 존재합니다. 당연히 CPU는 위의 두 메모리에 아주 빠르게 접근할 수 있습니다.
  2. {(메인) 메모리}는 CPU 외부에 존재합니다. 당연히 레지스터와 캐시보다 더 느리게 접근할 수 밖에 없습니다.
  3. {하드 디스크}는 CPU가 직접 접근할 방법조차 없습니다. CPU가 하드 디스크에 접근하기 위해서는 하드 디스크에 있는 데이터를 메인메모리로 이동시키고, CPU가 메인 메모리에서 접근해야 합니다. 즉, 아주 느린 접근 밖에 불가능합니다.

정리하자면, 다음과 같습니다.

추가로 더 자세히 설명하자면,
상위부터 {레지스터}, {캐시}, {메인메모리}, {하드디스크} 순으로 구성되어 있으며 위쪽에 있을수록 더 좋은 성능을 냅니다. 구조가 이렇게 형셩된 이유는 비용 측면 때문인데, 레지스터만으로 고용량을 구성하려면 엄청나게 많은 비용이 들기 때문입니다.
따라서 컴퓨터는 가장 많이 쓰는 작업을 상단에 두고, 적게 쓰는 작업을 하단에 두는 식으로 동작하여 효율적인 성능을 내줍니다.
CPU는 처음에 레지스터에서 프로그램을 찾고, 없다면 캐시, 그 이후에는 메모리에서 찾는 식으로 역할을 수행합니다.

작년에 배운 컴퓨터구조에 나온 그림입니다.

레지스터란?

  • CPU 내부에서 명령어 또는 연산을 처리하면서 발생하는 데이터를 일시적으로 저장하는 기억장치
  • 주기억장치(RAM)보다 저장용량이 작지만, 처리속도가 가장 빠르다
  • 가격은 비싸고, 크기는 작다
  • 여러 개의 Flip Flop 이나 Latch 등을 연결하여 구성한다
  • 휘발성 메모리이며, 읽고 쓰기가 가능하다

캐시 메모리란?

정의

  • Cache Memory는 CPU와 메인 메모리 간의 데이터 속도 향상을 위한 중간 버퍼 역할을 해주는 CPU 내부에 존재하는 메모리입니다.
  • 즉, 사용되었던 데이터는 다시 사용되어질 가능성이 높다는 개념을 이용하여, 다시 사용될 확률이 높은 것은 더 빠르게 접근할 수 있도록 하는 저장소를 사용한다는 개념입니다.
  • 또한, 빠른 장치와 느린 장치 사이의 속도 차이에 따른 병목 현상을 줄이기 위한 메모리입니다.

목적

  • CPU가 주기억장치에서 저장된 데이터를 읽어올 때 자주 사용하는 데이터를 캐시 메모리에 저장한 뒤, 다음에 이용할 때 주기억장치까지 가지 않고 캐시 메모리에서 가져오면 속도를 향상시킬 수 있습니다.

즉, 캐시 메모리는 {CPU}와 {주기억장치} 간의 속도 차이 개선을 목적으로 합니다

캐시의 계층 구조 - L1, L2, L3 캐시

캐시는 보통 L1, L2, L3로 나뉘며 L1부터 CPU에 가깝게 배치됩니다.
L1, L2는 각 코어마다 가지고 있는 캐시, L3은 모든 코어가 공유하는 캐시입니다.
CPU는 필요한 데이터에 엑세스할 때 가장 가까운 레벨1에 있는 L1캐시를 먼저 탐색합니다. L1캐시에 없다면 L2캐시를 탐색하고 없다면 L3캐시를 탐색합니다. 그래도 없다면 메모리에서 데이터를 인출하고 다시 캐시에 저장합니다.

캐시는 언제 사용하면 좋을까?

  1. 단순한 데이터 (정보)
  2. 동일한 데이터를 반복적으로 제공해야 하는 경우
  3. 데이터의 변경주기가 빈번하지 않고, 단위 처리 시간이 오래 걸리는 경우
  4. 데이터의 최신화가 반드시 실시간으로 이뤄지지 않아도 서비스 품질에 영향을 거의 주지 않는 데이터

이렇게 캐시를 사용하면 서버 간 불필요한 트래픽을 줄일 수 있으며, 그로 인해 웹 애플리케이션 서버의 부하가 감소됩니다.
또한, 캐시에 저장된 데이터를 빠르게 읽어와 애플리케이션을 사용하는 고객에게 빠르게 데이터를 제공할 수 있습니다.

메인 메모리란? (주기억장치)

  • 주기억장치(=1차 기억 장치)로
  • 컴퓨터에서 수치, 명령, 자료 등을 기억하는 컴퓨터 하드웨어 장치입니다

하드 디스크란? (보조기억장치)

  • 비휘발성, 순차접근이 가능한 보조 기억 장치

(결론) 메모리 계층 구조의 필요성?

속도는 느린 것보다는 빠른 것을 원하고, 저장 용량은 작은 것보다는 큰 것을 원합니다.
하지만, 이 둘 사이에는 trade-off가 존재합니다. (ex, 빠를 수록 용량은 작아집니다)
그래서 성능을 위해 속도와 용량의 상호보완을 위한 것이 메모리 계층 구조입니다.

또한, 자주 쓰이는 데이터는 반복해서 쓰인다는 참조 지역성(locality of reference)의 원리를 캐시에 적용하여, 자주 쓰이는 데이터를 주기억장치까지 가지 않고 캐시메모리에서 해결함으로써 시간을 단축시킬 수 있습니다.

즉,

  • 속도와 용량의 상호보완을 위해서
  • 참조 지역성의 원리를 이용해 시간을 단축하기 위해서

다음과 같은 경제성들을 고려하여 만들어진 것이 메모리 계층 구조도라고 볼 수 있습니다.

[reference]

profile
꾸준히, 열심히, 그리고 잘하자
post-custom-banner

0개의 댓글