본문 바로가기
CS 공부/컴퓨터 구조, 운영체제

컴퓨터 구조(6) - 메모리와 캐시 메모리

by 프롭 2026. 2. 6.

 

RAM의 특징과 종류

 

RAM의 특징

RAM에는 실행할 프로그램의 명령어와 데이터가 저장된다.

중요한점은 전원을 끄면 RAM에 저장된 명령어와 데이터가 모두 날아간다는 것이다. 이러한 저장 장치를 휘발성 저장 장치라 한다.

반면 전원이 꺼져도 저장된 내용이 유지되는 저장 장치를 비휘발성 저장 장치라 한다. 하드디스크 SSD, CD-ROM, USB 메모리와 같은 보조 기억 장치가 비휘발성 저장 장치이다.

CPU는 보저기억장치에 직접 접근하지 못하기에 실행하고 싶은 프로그램이 보조기억장치에 있다면 이를 RAM으로 복사하여 저장한 뒤 실행한다.

보조기억장치는 보관할 대상을 저장하고, 휘발성 저장 장치는 실행할 대상을 저장한다.

 

RAM의 용량과 성능

RAM 용량이 크면 어떤 점이 좋을까? CPU가 실행하고 싶은 프로그램이 보조기억장치에 있다면 이를 RAM으로 가져와야하는데 RAM의 요량이 작다면 프로그램을 가져오는 일이 잦아진다. 하지만 RAM 용량이 충분하다면 더 많은 데이터를 가져와 미리 RAM에 저장할 수 있어 프로그램들을 동시에 빠르게 실행하는데 유리하다.

RAM 용량이 커지면 프로그램 실행 속도가 증가하는 것은 맞지만, 용량이 필요 이상으로 커졌을 때 속도가 그에 비례하여 증가하지는 않는다.

 

RAM의 종류

RAM의 종류는 크게 DRAM, SRAM, SDRAM, DDR SDRAM이 있다.

 

  • DRAM

DRAM은 Dynamic RAM의 준말이다. Dynamic은 동적의를 의미하는데 이는 저장된 데이터가 동적으로 사라지는 RAM을 의미한다. 그렇기에 DRAM은 데이터의 소멸을 막기 위해 일정 주기로 데이터를 재활성화 해야한다.

  • SRAM

SRAM은 Static RAM의 준말이다. Static은 정적의를 의미하는데 이는 저장된 데이터가 변하지 않는 RAM을 의미한다. DRAM과 달리 저장된 데이터가 사라지지 않기에 재활성화 필요가 없다. 그리고 일반적으로 SRAM의 속도가 더 빠르다.

 

그럼에도 불구하고 메모리로 사용되는 RAM은 아래와 같은 이유로 DRAM이다.


DRAM
SRAM
재충전
필요함
필요 없음
속도
느림
빠름
가격
저렴함
비쌈
집적도
높음
낮음
소비 전력
적음
높음
사용 용도
주기억장치(RAM)
캐시 메모리

 

  • SDRAM

SDRAM은 클럭 신호와 동기화 된, 발전된 DRAM이다. 클럭 타이밍에 맞춰 CPU와 정보를 주고받을 수 있다.

  • DDR SDRAM

DDR SDRAM은 최근 가장 흔히 사용되는 RAM이다. 대역폭을 넓혀 속도를 빠르게 만든 SDRAM이다 여기서 대역폭은 데이터를 주고받는 길의 너비를 뜻한다.

DDR2 SDRAM은 DDR SDRAM 보다 대역폭이 두 배 넓어 전송 속도 또한 두 배가량 빠르다. DDR3 SDRAM은 DDR2 SDRAM보다 두 배 넓고 DDR SDRAM보다 네 배 넓다.

 

메모리의 주소 공간

 

주소에는 두 종류가 있다. 바로 물리 주소와 논리 주소이다. 물리 주소는 메모리 하드웨어가 사용하는 주소이고, 논리 주소는 CPU와 실행 중인 프로그램이 사용하는 주소이다.

 

물리 주소와 논리 주소

메모리에 저장된 정보는 시시각각 변화한다. 그렇기에 프로그램을 실행할 때마다 적재된 주소가 달라질 수 있다. 그렇기에 프로그램은 모두 물리 주소가 아닌 0번지부터 시작하는 자신만의 논리 주소를 가진다. 그래서 프로그램마다 같은 논리 주소가 얼마든지 있을 수 있다. CPU는 이 논리 주소를 받아들여 해석하고 연산을 진행한다.

 

그런데 CPU가 이해하는 주소가 논리 주소라고 해도 CPU가 메모리와 상호작용하려면 논리 주소와 물리 주소 간의 변환이 이루어져야 한다. 논리 주소와 물리 주소 간의 변환은 CPU와 주소 버스 사이에 위치한 메모리 관리 장치(MMU : Memory Management Unit)라는 하드웨어에 의해 수행된다.

MMU는 CPU가 발생시킨 논리 주소에 베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환한다. 베이스 레지스터는 프로그램의 가장 작은 물리주소이고 논리 주소는 프로그램의 시작점으로부터 떨어진 거리이다.

 

메모리 보호 기법

다른 프로그램의 영역을 침범할 수 있는 명령어는 위험하기 때문에 논리 주소 범위를 벗어나는 명령어 실행을 방지하고 실행 중인 프로그램이 다른 프로그램에 영향을 받지 않도록 보호할 방법이 필요하다. 이를 한계 레지스터라는 레지스터가 담당한다.

 

베이스 레지스터가 프로그램의 가장 작은 물리 주소를 저장한다면 한계 레지스터는 논리 주소의 최대 크기를 저장한다. 즉 프로그램의 물리 주소 범위는 베이스 레지스터 값 이상, 베이스 레지스터 + 한계 레지스터 값 미만이다.

 

CPU가 접근하려는 논리 주소는 한계 레지스터가 저장한 값보다 커서는 안 된다. 한계 레지스터보다 높은 주소 값에 접근하는 것은 곧 프로그램의 범위에 벗어난 메모리 공간에 접근하는 것과 같기 때문이다.

CPU는 메모리에 접근하기 전에 항상 검사하여 만약 CPU가 한계 레지스터보다 높은 논리 주소에 접근하려 한다면 인터럽트를 발생시켜 실행을 중단한다. 이러한 방식으로 실행 중인 프로그램이 독립적인 실행 공간을 확보하고 하나의 프로그램이 다른 프로그램을 침범하지 못하게 보호한다.

 

캐시 메모리

 

메모리에 접근하는 시간은 CPU의 연산 속도보다 느리다. 즉 CPU가 연산을 빨리해도 쓸모가 없어질 수 있는데 이를 극복하기 위한 저장 장치가 캐시 메모리다.

 

저장 장치 계층 구조

빠른 저장 장치와 용량이 큰 저장 장치는 양립하기 어렵다.

1. CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.

2. 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다.

위 두 명제를 따르기 때문이다.

 

컴퓨터가 사용하는 저장 장치들은 'CPU에 얼마나 가까운가'를 기준으로 계층적으로 나타낼 수 있는데 이를 저장 장치 계층 구조라한다. 위 계층으로 올라갈수록 CPU와 가깝고 용량은 작지만 빠르며 비싼 저장 장치이고 아래 계층으로 내려갈수록 CPU와 멀고 용량은 크지만 느린 저렴한 저장 장치이다.

 

캐시 메모리(cache memory)

CPU가 메모리에 접근하는 속도는 레지스터에 접근하는 속도보다 느리다. 그럼에도 빈번히 접근해야하는 것을 해결하기 위해 캐시 메모리가 등장했다. 캐시 메모리는 CPU와 멤모리 사이에 위치하고, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치다.

 

CPU가 매번 메모리에 접근하는 건 시간이 오래 걸리니, 메모리에서 CPU가 사용할 일부 데이터를 미리 캐시 메모리로 가지고 와서 활용하자는 것이다.

 

컴퓨터 내부에는 여러 개의 캐시 메모리가 있다. 이 캐시 메모리들은 CPU와 가까운 순서대로 계층을 구성한다. 가장 가까운 캐시 메모리를 L1(level 1) 캐시, 그다음은 L2 캐시 그다음 가까운 캐시메모리는 L3 캐시 메모리가 된다. 계층 구조에 특징대로 용량, 속도, 가격을 구성한다.

 

참조 지역성 원리

캐시 메모리는 무엇을 저장해야 할까? 캐시 메모리는 CPU가 사용할 법한 대상을 예측하여 저장한다. 이때 자주 사용될 것으로 예측한 데이터가 실제로 들어맞아 캐시 메모리가 내 데이터가 CPU에서 활용될 경우를 캐시히트라 한다. 반대로 예측이 틀려 메모리에서 필요한 데이터를 직접 가져와야 하는 경우를 캐시 미스라한다. 캐시 미스가 발생하면 CPU가 필요한 데이터를 메모리에서 직접 가져와야 하기 떄문에 캐시 메모리의 이점을 활용할 수 없다. 참고로 캐시가 히트되는 비율을 캐시 적중률이라하고 수식은 다음과 같다.

캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)

우리가 사용하는 컴퓨터의 캐시 적중률은 대략 85% ~ 90%이다.

 

CPU가 사용할 법한 데이터는 어떻게 알 수 있을까? 캐시 메모리는 한 가지 원칙에 따라 메모리로부터 가져올 데이터를 결정한다. 바로 참조 지역성의 원리이다. 참조 지역성의 원리란 CPU가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리이다.

  1. CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다. (시간 지역성)
  2. CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다. (공간 지역성)