컴퓨터 메모리 구조와 작동 원리
컴퓨터의 메모리 ( RAM ) 는 CPU 가 작업할 데이터를 일시적으로 저장하는 주기억장치이다.
주소 ( adderss ) 에 따라 데이터가 저장되는 셀 ( cell ) 들의 배열로 구성되어 있다.
메모리의 계층 구조는 존 폰 노이만 ( John von Neumann ) 이 저술한 "컴퓨터와 뇌" 에서 처음으로 언급되었다.
지난 시간에 CPU 의 구조까지 알아봤으니 그 연장선으로 컴퓨터의 메모리 구조와 작동 원리를 깊이 있게 정리한다.
컴퓨터의 3대 핵심 구성요소
컴퓨터는 크게 CPU ( 연산 ) , Memory ( 기억 ) , I / O ( 입출력 ) 로 이루어져 있다.
CPU 가 두뇌라면 메모리는 단기 기억장치 역할을 한다.
| 구성 요소 | 주요 역할 | 예시 |
| CPU ( Central Processing Unit ) | 연산과 제어 수행 ( 두뇌 ) | 산술연살 , 논리연산 , 명령 제어 |
| 메모리 ( Memory ) | 현재 실행 중인 데이터를 저장 ( 단기 기억 ) | RAM , 캐시 |
| 입출력장치 ( I / O Devices ) | 외부와 데이터 주고 받기 ( 감각 기관 ) | 키보드 , 모니터 , SSD 등 |
- 프로그램은 보조 기억 장치 ( SSD / HDD ) 에 저장되어 있다.
- 실행 시 RAM ( 주기억장치 ) 로 불러와지고 CPU 가 그것을 읽어와 연산을 한다.
- 연산 결과를 입출력 장치를 통해 보여준다.
메모리의 종류와 역할
▼메모리의 핵심 역할
- CPU가 연산을 하려면 데이터와 명령어가 필요하다
- 하지만 CPU는 저장 공간이 거의 없기 때문에 RAM 이 그 데이터를 대신 저장한다.
- CPU 는 RAM 에서 명령어를 한 줄씩 읽어 ( Fetch ) → 해석 ( Decode ) → 실행 ( Execute ) 한다.
이것이 바로 폰 노이만 ( John von Neumann ) 구조이다
명령어와 데이터를 같은 메모리에 저장하는 구조의 핵심이다.
▼메모리의 계층 구조
컴퓨터의 메모리는 속도와 용량을 모두 만족시키기 위해 다단계 구조를 가지고 있다.
| 구분 | 설명 | 예시 |
| 레지스터 ( Register ) | CPU 내부의 초고속 임시 저장 공간 | 연산 중 중간값 저장 |
| 캐시 ( Cache ) | CPU 와 메인메모리 사이의 고속 저장공간 | 자주 쓰는 데이터 저장 |
| 메인메모리 ( RAM ) | 실행 중인 프로그램이 올라가는 공간 | 실행 중인 코드 , 변수 |
| 보조기억장치 | 전원이 꺼져도 데이터가 유지되는 장치 | HDD , SSD |
CPU가 직접 접근할 수 있는 건 레지스터 뿐이다.
그래서 캐시와 RAM 은 CPU 가 필요한 데이터를 미리 가져다 놓는 역할을 한다.
- CPU 가 데이터를 요청
- 캐시에서 데이터를 찾는다 → 있으면 바로 사용 ( Cache Hit )
- 없으면 RAM 에서 가져온다 ( Cache Miss )
- 다시 사용될 걸 대비에 캐시에 저장한다
이런 구조 덕분에 CPU 가 엄청난 속도로 계산할 수 있다.
프로그램이 실행되는 과정
컴퓨터에서 프로그램이 실행될 때 , 이런 과정이 일어난다
- 보조기억장치 ( SSD ) 에 저장된 프로그램 실행 요청
- 운영체제 ( OS ) 가 해당 프로그램의 데이터를 RAM 으로 불러온다 ( 로드 load )
- CPU 가 RAM 에서 명령어를 순서대로 읽어들인다
- CPU 는 명령어 해석 ( Fetch ) → 연산 수행 ( Decode ) → 명령어 실행 ( Execute ) → 결과 저장 ( Store ) 과정 반복
- 계산 결과는 RAM 이나 보조기억장치에 다시 저장된다
- 최정적으로 모니터 , 스피커 , 네트워크 등 입출력 장치로 결과를 전달한다
이 전체 흐름을 명령어 사이클 ( Instruction Cycle ) 이라고 한다
프로그램이 동작한다는 것은 CPU 가 RAM 에 있는 명령어를 계속 읽고 , 해석하고 , 실행한다는 뜻이다.
메모리 주소와 포인터 개념
RAM 은 수많은 메모리 셀 ( cell ) 로 이루어져 있다.
각 셀은 고유한 주소 ( Address ) 를 가지고 있다.
- 변수 하나를 만들면 RAM 의 특정 주소에 공간이 할당된다.
- 변수 이름은 그 주소에 붙은 라벨 ( label ) 같은 것이다
- 포인터 ( pointer ) 는 그 주소 자체를 저장하는 변수이다.
▼ C언어 예시
int num = 10; // RAM 의 어딘가에 10 이 저장된다
int* p = # // num 의 메모리 주소를 가리킨다
이런 개념은 C# 같은 고수준 언어에서는 참조 ( reference ) 형태로 간접적으로 사용된다.
Unity 에서 GameObject 를 변수로 저장할 때에도 그 실제 객체가 있는 메모리 주소를 참조하는 구조이다.
물리 메모리와 논리 메모리
| 구분 | 설명 | 예시 |
| 물리 메모리 | 실제 RAM 칩의 공간 | 8GB , 16GB 메모리 |
| 논리 메모리 | 운영체제가 제공하는 가상의 주소 공간 | 가상 메모리 ( Virtual Memory ) |
- 운영체제는 가상 메모리를 이용해 실제 물리 RAM 보다 큰 프로그램도 실행할 수 있게 한다.
- 필요할 때만 일부 데이터를 디스크로 옮기는 방식이다.
메모리 구조 시각화
CPU 내부
└── Register
└── Cache
└── RAM (메인 메모리)
└── SSD / HDD (보조기억장치)
CPU 에서 멀어질수록 느리지만 용량이 크다
가까울수록 빠르지만 용량이 작다.
이걸 이해하면
- 왜 변수는 빠르고 파일 입출력은 느릴까?
- 왜 데이터를 캐시에 저장하면 성능이 올라갈까? 같은 의문도 풀린다.
정리
메모리는 CPU 와 보조기억장치 사이에서 데이터를 빠르게 전달한다
프로그램의 실행을 가능하게 하는 다리 역할을 한다.
'🖥️Computer Science' 카테고리의 다른 글
| 컴퓨터의 문자 체계 (ASCII , Unicode, UTF-8) (0) | 2026.04.07 |
|---|---|
| CPU 구조 (0) | 2025.10.13 |
| 최초의 컴퓨터 (0) | 2025.09.29 |
| 컴퓨터의 역사 (0) | 2025.09.29 |