본문 바로가기
시리즈/컴퓨터 구조

[컴퓨터 구조] 메모리와 캐시 메모리

by 되고싶은노력가 2025. 2. 1.

RAM의 특징과 종류

주기억장치의 종류에는 크게 RAM과 ROM 두 가지가 있고, '메모리'라는 용어는 RAM을 지칭하는 경우가 많습니다. RAM 용량이 컴퓨터 성능에 어떤 영향을 미치는지 그리고 DRAM, SRAM, SDRAM, DDR SDRAM은 무엇이고 어떤 특징을 가지는지 알아보겠습니다.

RAM의 특징

RAM의 가장 큰 특징은 전원을 끄면 RAM에 저장된 명령어와 데이터가 모두 날아간다는 것입니다. 이러한 특징을 가진 저장 장치를 휘발성 저장 장치라고 합니다. 반면 전원이 꺼져도 내용이 유지되는 저장 장치는 비휘발성 저장 장치라 하고 보조기억장치가 대표적입니다.


RAM의 용량과 성능

CPU가 실행하고 싶은 프로그램이 보조 기억 장치에 있다면 이를 RAM으로 가져와야 할 텐데, RAM의 용량이 적다면 보조 기억 장치에서 접근하는 일이 잦아 실행 시간이 길어집니다.

 

반면 RAM 용량이 충분히 크다면 보조 기억 장치에서 많은 데이터를 가져와 미리 RAM에 저장할 수 있기에 보조 기억 장치에 접근하는 일이 줄어듭니다.


RAM의 종류

DRAM

DRAM은 Dynamic RAM의 준말로 Dynamic은 영어로 '동적의'를 의미하는데, 이는 데이터가 동적으로 변하는 RAM을 의미합니다. 즉, DRAM은 시간이 지나면 저장된 데이터가 점차 사라지는 RAM입니다. 그렇기에 DRAM은 데이터 소멸을 막기 위해 일정 주기로 데이터를 다시 저장해야합니다.

 

이러한 단점에도 소비 전력이 비교적 낮고, 저렴하고, 집적도가 높기 때문에 대용량으로 설계하기가 용이합니다.

* 집적도가 높다는 '더 작고 빽뺵하게 만들 수 있다'는 말과 같습니다.

 

SRAM

SRAM은 Static RAM의 준말로 Static은 영어로 '정적의'를 의미하는데, 이는 저장된 데이터가 변하지 않는 RAM을 의미합니다. 시간이 지나도 저장된 데이터가 사라지지 않고 주기적으로 저장할 필요가 없기에 SRAM은 DRAM보다 일반적으로 속도도 빠릅니다.

 

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

 

SDRAM

SDRAM은 SRAM과 DRAM의 합성어가 아닌 Synchronous Dynamic RAM, 클럭 신호와 동기화된 발전된 형태의 DRAM입니다. '동기화'되었다는 말은 클럭 타이밍에 맞춰 CPU와 정보를 주고 받을 수 있음을 의미합니다.

 

DDR SDRAM

DDR SDRAM은 Double Data Rate SDRAM으로 대역폭을 넓혀 속도를 빠르게 만든 SDRAM입니다. 여서 대역폭이란 '데이터를 주고받는 길의 너비'를 의미합니다.

 

한 클럭당 하나씩 데이터를 주고받을 수 있는 SDRAMSDR SDRAM이라 부르는데 DDR SDRAM이 대역폭이 두 배 넓은 SDRAM이라면 DDR2는 너비가 네 배 넓은 대역폭을 가집니다. 즉, DDR3, DDR4는 이전 대역폭의 두 배씩 늘어납니다.


메모리의 주소 공간

물리 주소와 논리 주소

주소에는 메모리가 사용하는 물리 주소CPU와 실행 중인 프로그램이 사용하는 논리 주소가 있습니다.

 

CPU가 이해하는 주소가 논리 주소라고 해도 이를 물리 주소로 변환을 해줘야 서로 상호 작용을 할 수 있을겁니다. 이를 위해 필요한 것이 메모리 관리 장치(이하 MMU)라는 하드웨어입니다.

 

MMU는 CPU가 발생시킨 논리 주소베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환합니다.


메모리 보호 기법

만약 변환하는 과정에서 프로그램의 논리 주소 영역을 넘기는 명령어가 있다면 이는 안전하지 못할 것입니다. 논리 주소 범위를 벗어나는 명령어의 실행을 방지하고 보호하기 위해 한계 레지스터라는 레지스터가 존재합니다.

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


캐시 메모리

CPU가 메모리에 접근하는 시간은 CPU의 연산 속도보다 느립니다. 그렇기 때문에 결국 메모리에 접근하는 시간이 느리면 CPU의 연산 속도가 빠르더라도 아무런 쓸모가 없어집니다. 이를 극복하기 위한 저장 장치가 캐시 메모리입니다.

 

저장 장치 계층 구조

'CPU에 얼마나 가까운가'를 기준으로 계층적으로 나타낸 구조를 저장 장치 계층 구조라고 합니다.


캐시 메모리

캐시 메모리는 CPU와 메모리 사이에 위치하고, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치입니다.

 

미리 메모리에서 데이터를 가지고오기 때문에 메모리에 접근할 필요없이 필요한 데이터를 빠르게 가져올 수 있습니다. 캐시 메모리에는 코어와 가장 가까운 L1 캐시, 다음으로 L2 캐시, 그 다음으로 L3 캐시가 존재합니다. 위 계층 구조를 이해한다면 CPU에 가까운 순으로 용량, 가격, 속도를 알 수 있습니다.


참조 지역성 원리

캐시 메모리가 미리 메모리에서 데이터를 가져온다고 했으나 사용자가 원하는 데이터를 가져오지 않는다면 원하는 성능을 낼 수 없을 것입니다.

 

자주 사용될 것으로 예측한 데이터가 실제로 들어 맞아 캐시 메모리 내 데이터가 활용될 경우 캐시 히트라고 합니다.

캐시 히트

 

반면, 예측이 틀려 메모리에서 데이터를 직접 가져와야 하는 경우를 캐시 미스라고합니다.

 

캐시 미스

* 캐시가 히트되는 비율을 캐시 적중률이라 하며, 캐시 히트 횟수 / ( 캐시 히트 횟수 + 캐시 미스 횟수 ) 로 계산됩니다.

 

이러한 캐시 적중률을 높이기 위해서 캐시 메모리는 한 가지 원칙에 따라 메모리로부터 가져올 데이터를 결정합니다. 바로 참조 지역성의 원리입니다. 참조 지역성의 원리란 CPU가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리입니다.

 

시간 지역성

#include <stdio.h>

int main(void){
	int num = 2;
    
    for (int i = 1; i <= 9; i++)
    	printf("%d x %d = %d\n", num, i, num * i);
    return 0;
}

 

num 과 i 라는 변수에 여러 번 사용되는 것을 알 수 있고, '최근에 접근했던 메모리 공간에 다시 접근하려는 경향'시간 지역성이라 합니다.

 

공간 지역성

 

예를 들어 워드 프로세서라는 프로그램에 사용한다고 하면, 워드 프로세서에 사용되는 기능들을 주변에 있을 것이라 판단하고 공간 근처를 집중적으로 접근할 것입니다.

 

이렇게 '접근한 메모리 공간 근처를 접근하려는 경향'공간 지역성이라 합니다.