관리 메뉴

클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

메모리와 캐시 메모리 3 - 캐시 메모리 본문

알고리즘 및 자료 관리/컴퓨터 구조 & 운영체제

메모리와 캐시 메모리 3 - 캐시 메모리

huenuri 2024. 10. 16. 05:56

메모리 단원의 마지막 과정이다. 아마도 새벽 공부의 마지막 여정이 될 것 같다. 오늘도 3시에 일어나서 2시간 동안 개발 공부를 했고 이제 1시간 남았다. 오늘은 수학 공부를 일찍 시작해서 아침 운동 전에 모두 마칠 생각이다.

이번 절에서는 저장 장치 계층 구조를 통해 저장 장치의 큰 그림을 그리고 CPU와 메모리 사이에 위치한 캐시 메모리를 학습해볼 것이다.

 

 

이를 극복하기 위한 저장 장치가 캐시 메모리이다. 캐시 메모리의 탄생 배경과 특징을 이해하려면 우선 저장 장치 계층 구조라는 개념을 이해해야 한다. 이번 절에서는 저장 장치 계층 구조를 통해 지금까지 학습한 저장 장치들의 큰 그림을 그려보고, 캐시 메모리의 탄생 배경과 특징, 작동 원리를 학습해보겠다.


 

 

 

 

저장 장치 계층 구조

모든 사용자들은 빠르고 동시에 용량이 큰 저장 장치를 원한다. 하지만 '빠른 저장 장치'와 '용렁이 큰 저장 장치'는 양립하기 어렵다.

 

 

 

CPU와 가장 가까운 레지스터는 일반적으로 RAM보다 용량은 작지만, 접근 시간이 압도적으로 빠르고 가격이 비싸다. USB 메모리보다 CPU에 더 가까운 RAM은 접근 시간이 훨씬 더 빠르지만, 같은 용량이라 할지라도 가격은 더 비싸다.

 

 

 

컴퓨터는 다양한 저장 장치를 모두 사용하게 된다.

 

 

 

 

 

위 계층으로 올라갈수록 CPU와 가깝고 용량은 작지만 빠른 저장 장치이다. 아래 계층으로 내려갈수록 CPU와 멀고 용량은 크지만 느린 저장 장치이다. 가격 또한 위 계층으로 올라갈수록 비싸고, 아래 계층으로 내려갈수록 저렴하다.


 

 

 

 

캐시 메모리

CPU가 메모리에 접근한는 속도는 레지스터에 접근하는 속도보다 느리다. 그럼에도 불구하고 CPU는 프로그램을 실행하는 과정에서 메모리에 빈번하게 접근해야 한다. CPU 연산 속도가 아무리 빨라도 메모리에 접근하는 속도가 그에 따라가지 못한다면 CPU의 발전은 아무 소용이 없을 것이다.

 

 

 

편의점에 내가 필요한 물품이 있다면 굳이 멀리 있는 대형마트까지 갈 필요 없이 원하는 물품을 얻을 수 있는 것과 같다. 캐시 메모리에 CPU가 필요로 하는 데이터가 있다면 필요한 데이터로의 접근 시간을 줄일 수 있다.

 

 

 

 

 

 

 

 

캐시 메모리들은 CPU(코어)와 가까운 순서대로 계층을 구성한다. 코어와 가장 가까운 캐시부터 L1 캐시, L2 캐시, L3 캐시라고 부른다.

 

캐시 메모리 용량은 L1, L2, L3 순으로 커지고, 속도는 L3, L2, L1 순으로 빨라진다. 가격은 일반적으로 L3, L2, L1 순으로 비싸다. CPU가 메모리 내에 데이터가 필요하다고 판단하면 우선 L1 캐시에 해당 데이터가 있는지를 알아보고, 없으면 L2, L3 캐시 순으로 데이터를 검색한다.

 

 

 

L1 캐시와 L2 캐시는 코어마다 고유한 캐시 메모리로 할당되고, L3 캐시는 여러 코어가 공유하는 형태로 사용된다.

 

 

 

 

코어와 가장 가까운 L1 캐시는 조금이라도 접근 속도를 빠르게 만들기 위해 명령어만을 저장하는 L1 캐시인 L1I 캐시와 데이터만을 저장하는 L1 캐시인 L1D 캐시로 분리하는 경우도 있다. 이를 분리형 캐시라고 한다.

 

 

 

클라우드 서비스에서 제공하는 원격 스토리지와 같이 여기서 다루지 않는 저장 장치들도 얼마든지 저장 장치 계층 구조에 추가될 수 있다. 


 

 

 

 

참조 지역성 원리

캐시 메모리에는 무엇을 저장해야 할까?

보조기억장치는 전원이 꺼져도 기억할 대상을 저장하고, 메모리는 실행 중인 대상을 저장한다면 캐시 메모리는 CPU가 사용할  법한 대상을 예측하여 저장한다.

 

 

 

 

 

캐시 미스가 발생하면 CPU가 필요한 데이터를 메모리에서 직접 가져와야 하기 때문에 캐시 메모리의 이점을 활용할 수 없다. 캐시가 히트되는 비율을 캐시 적중률이라 하고 다음과 같이 계산한다.

 

 

우리가 사용하는 컴퓨터의 캐시 적중률은 대략 85~90% 이상이다. 적중률이 높으면 CPU의 메모리 접근 횟수를 줄일 수 있다. CPU가 사용할 법한 데이터는 어떻게 알 수 있을까?

캐리 메모리는 한 가지 원칙에 따라 메모리로부터 가져올 데이터를 결정한다.

 

 

 

 

 

 

이 코드는 구구단 2단을 출력하는 간단한 코드이다. 위 코드에서 변수는 num과 i이다. 구구단 2단을 출력하는 과정에서 이 변수들이 여러 번 사용되고 있다. 이렇게 최근에 접근했던 메모리 공간에 다시 접근하려는 경향을 시간 지역성이라고 한다.

 

 

 

 

CPU가 실행하려는 프로그램은 보통 관련 데이터들끼리 한데 모여 있다. 가령 이 세 프로그램이 한데 모여 있다고 가정해보자. 이들은 서로 관련 있는 데이터끼리 모여서 저장된다. 그리고 하나의 프로그램 내에서도 관련 있는 데이터들은 모여서 저장된다. 가령 워드 프로세서 프로그램에 자동 저장 기능, 입력 기능, 출력 기능이 있다고 했을 때 각각의 기능과 관련한 데이터는 모여 저장된다.

CPU가 워드 프로세서 프로그램을 실행할 적에는 워드 프로세서 프로그램이 모여 있는 공간 근처를 집중적으로 접근할 것이다. 이렇게 접근한 메모리 공간 근처를 접근하려는 경향을 공간 지역성이라고 한다.

 

캐시 메모리는 참조 지역성의 원리에 입각해 CPU가 사용할 법한 데이터를 예측한다.


 

 

 

 

단원 마무리하기

 

 


 

 

 

학습을 마치고

내가 목표한대로 3시간 동안 세 단원을 모두 끝마쳤다. 정말 뿌듯하다. 이렇게 해서 6단원 메모리와 캐시 메모리 학습을 마친다. 컴퓨터의 두번째 핵심 부품에 대해서 학습해보았다. 7장에서는 보조기억장치, 8장의 입출력장치까지 공부하면 컴퓨터 구조는 마치게 된다.

고요한 새벽 시간에 공부할 때가 가장 행복하다~