CPU / RAM / Storage의 미묘한 삼각관계

2025. 2. 21. 12:33·내게 필요한 개발 공부

예전 조립 PC 구매를 위해 부품을 검색해 보고 다녔을 때가 떠오릅니다. 일단 정확히 뭔지는 모르겠지만 뭐 CPU 사양이 좋다느니,, RAM은 다다익선이라느니,,, 말들을 주워 담으며 열심히 부품을 모아 PC를 장만했었습니다. 이제는 개발자로서 기본적인 하드웨어 동작 방식은 자신 있게 이야기할 수 있어야 하기에 정리해보려 합니다.

 

CPU(Central Processing Unit) 중앙처리장치

컴퓨터 시스템을 통제하고 프로그램의 연산을 실행 · 처리하는 가장 핵심적인 컴퓨터의 제어 장치, 혹은 그 기능을 내장한 칩이다.
  • 흔히 컴퓨터의 두뇌 역할이라고 합니다!
  • 연산을 수행합니다.(산술, 논리 연산)
  • 다른 하드웨어(RAM, Storage 등)와 데이터 교환 및 제어

CPU의 필수 구성 요소

  • Cache 캐시
    • CPU 내부의 소형 고속 메모리
    • 자주 사용되는 데이터를 저장해 메모리 접근 속도를 줄이고 성능을 향상 ⭐️
    • RAM보다 빠르지만 용량이 제한적
  • Register 레지스터
    • CPU 내부의 초고속 데이터 데이터 저장 공간
    • CPU가 연산을 수행하는 즉시 접근 가능한 초고속 메모리 ⭐️
    • 데이터를 임시로 저장하고 연산을 수행하는 데 사용
    • RAM보다 훨씬 빠르지만 용량이 매우 작음
    • 레지스터는 CPU 내부에서 가장 빠르게 동작하는 메모리이며 연산 속도에 큰 영향을 줌
  • Clock 클럭
    • CPU가 1초에 몇 번 연산할 수 있는지를 나타내는 주파수(Hz) ⭐️
    • 단위: GHz(Gigahertz), 1GHz == 10억 번의 클럭 사이클
    • 클럭이 높을수록 CPU가 빠르게 동작하지만, 발열과 전력 소모가 증가
  • IR(Instruction Register) 명령어 레지스터
    • CPU가 현재 실행 중인 명령어를 저장하는 레지스터 ⭐️
    • 프로그램이 실행될 때 명령어를 메모리에서 가져와 IR에 로드됨
    • CPU는 IR에 있는 명령어를 해석하고 실행
  • PC(Program Counter) 프로그램 카운터
    • 다음 실행할 명령어의 메모리 주소를 저장하는 레지스터 ⭐️
    • 현재 명령어가 실행되면 PC값이 증가해 다음 명령어를 가리킴
  • Bus 버스
    • CPU와 다른 하드웨어(RAM, Storage 등) 간 데이터를 전송하는 통로 ⭐️
    • 버스의 속도가 빠를수록 전체적인 성능이 향상됨
    • 버스의 대역폭이 넓을수록 한 번에 더 많은 데이터를 전송 가능
    • 버스의 종류: 데이터 버스(데이터 전송) / 주소 버스(메모리 주소 전송) / 제어 버스(CPU의 장치 제어 신호 전송)

 

RAM(Random Access Memory) 주기억장치

임의의 영역에 접근하여 읽고 쓰기가 가능한 주기억 장치로, 반도체 회로로 구성되어 있으며 휘발성 메모리다.
  • 작업 공간 역할을 합니다!
  • CPU가 빠르게 접근할 수 있도록 프로그램과 데이터를 일시적으로 저장
  • 프로그램 실행 중 필요한 데이터를 저장하여 고속으로 읽고 쓰기 가능
  • 전원이 꺼지면 데이터가 사라지는 휘발성 메모리

 

Storage 저장 장치

컴퓨터에서 데이터(자료)를 일시적으로, 또는 영구히 보존하는 장치를 말한다.
  • 데이터를 영구적으로 저장하는 역할을 합니다!
  • OS, 애플리케이션, 파일을 저장하는 비휘발성 메모리
  • RAM보다 속도는 느리지만 전원이 꺼져도 데이터 유지
  • 대표적인 저장 장치로 HDD(Hard Disk Drive, 기계식)와 SSD(Solid State Drive, 반도체 기반)

 

미묘한 삼각관계

CPU / RAM / Disk의 관계를 각각 직원 / 책상 / 서랍으로 비유해 표현할 수 있습니다. 직원(CPU)은 실제로 일을 처리하는 사람을 뜻하고, 책상(RAM)은 직원이 즉시 사용할 자료를 펼쳐두는 공간입니다. 서랍(Storage)은 당장 사용하지 않는 문서를 저장하고 있습니다.

해당 비유를 활용해 프로그램을 실행하고 데이터 교환이 이루어지는 흐름을 살펴보겠습니다.

 

1. 업무 시작 → 프로그램 실행 요청 

직원이 업무를 시작하면 서랍에서 필요한 문서를 찾습니다.

→ 프로그램을 실행하면 Storage에서 실행 파일을 찾습니다.

 

2. 문서 세팅 → RAM으로 로드

빠르게 서랍 속 문서를 확인할 수 있도록 책상에 펼쳐놓습니다.(서랍에서 작업하기엔 너무 느림)

→ 저장 장치에 있는 프로그램 데이터와 실행 파일을 RAM으로 복사합니다.(Storage에서 작업하기엔 너무 느림)

* 원본은 Storage에 두고 복사해 오는 개념입니다!(그림은 이해를 위해 옮겨오는 것처럼 표현)

** 책상이 넓을수록(RAM이 클수록) 여러 작업을 동시에 하기 쉽습니다.

 

3. 직원이 업무 처리 → CPU가 명령어 처리

직원은 책상에 있는 문서를 읽고 업무를 처리합니다.

→ CPU는 RAM에 있는 프로그램 명령어를 읽고 실행합니다.

 

4. 새로운 문서 작성 → 새로운 데이터 RAM에 저장

직원이 새로운 문서를 작업 후 책상에 올려둡니다.

→ 프로그램이 새로운 데이터를 생성하면 일시적으로 RAM에 저장합니다.

 

5. 업무 완료 후 보관 → 데이터 영구 저장

직원이 업무를 마치면 문서를 서랍에 보관합니다.

→ 사용자가 저장을 누르면 데이터가 Storage로 영구 저장됩니다.

* 프로그램을 종료하는 것이 아니라면 데이터는 RAM에 남아있습니다!(그림은 이해를 돕기 위해 옮기는 것으로 표현)

 

앞으로 직원 / 책상 / 서랍 비유를 떠올리면 CPU / RAM / Storage의 관계를 쉽게 떠올릴 수 있을 것 같습니다 😇

 

CPU와 메모리 간 데이터 교환 방식

실제 CPU와 메모리 간 데이터 교환 방식은 어떻게 이루어질까요? 직원이 서랍에서 문서를 꺼내는 것처럼 단순하지많은 않습니다. CPU와 메모리는 Bus를 활용해 데이터를 교환하며, 명령어 사이클(Instruction Cycle)을 따릅니다.

 

명령어 사이클 Instruction Cycle

CPU는 프로그램 명령어를 클럭에 따라 일정한 주기를 반복하여 실행하는데, 이 주기를 명령어 사이클이라고 합니다.

명령어 사이클은 크게 인출 사이클과 실행 사이클로 구분할 수 있습니다.

 

CPU가 작업을 시작하려면 어떤 명령어를 실행해야 할지 알아야 하기 때문에 CPU가 명령어를 주기억장치에서 받아오는 과정을 '인출 사이클'이라고 합니다. CPU가 명령어를 받아왔다면 실행하는 단계가 있어야겠죠? 이 단계를 '실행 사이클'이라고 합니다.

 

CPU는 위 두가지 단계를 반복해 명령어를 실행하고 있었던 것입니다. 각 단계를 더 자세히 살펴보겠습니다.

 

인출 사이클 1단계: 초기 상태

CPU가 명령어를 실행시키기 위한 첫 번째 단계로, CPU안의 PC(Program Counter)는 다음으로 실행할 명령어의 메모리 주소를 담고 있습니다. 이 값을 이용해 명령어를 읽어와야 합니다.

 

인출 사이클 2단계: 주소 버스로 메모리 전달 및 명령어 찾기

PC 값을 주소 버스를 통해 메모리에 전달합니다. 메모리 주소로 저장된 명령어를 찾습니다.

 

인출 사이클 3단계: 데이터 버스로 명령어 받아오기

찾은 명령어를 데이터 버스를 통해 CPU로 받아옵니다. 받아온 명령어는 IR(Instruction Register)에 저장됩니다.

 

인출 사이클 4단계: 프로그램 카운터 증가

다음 명령어 실행을 위해 PC값을 증가시킵니다.

 

실행 사이클 1단계: 명령어 해석

실행 사이클을 자세히 살펴보기 위해 CPU를 확대해 보겠습니다.(갑자기 정보가 확 많아지긴 했지만 천천히 살펴보면 어렵지 않습니다!) 명령어 레지스터에 저장되어 있던 01. 명령어를 실행하기 위해 제어유닛으로 이동시킵니다. 제어 유닛은 명령어를 분석(Decode)해 CPU가 어떤 동작을 수행해야하는지 결정합니다.

 

명령어를 분석했더니 'x와 y를 더해라!'가 나왔습니다. CPU는 연산에 필요한 데이터를 로드하기 위해 각각의 값을 확인합니다. x는 이미 예전 연산에 사용이 되었나 봅니다! 이미 범용 레지스터 GPR(General-Purpose-Register)에 값이 올라와 있는 것을 확인했습니다.

* GPR은 연산에 자주 사용되는 데이터를 임시 저장하는 레지스터입니다.

 

그에 반해 y는 메모리에 있는 것이 확인되었습니다. 명령어 분석(Decode) 중에 y의 메모리 주소 값을 찾을 수 있었기 때문이죠. 이를 활용하기 위해 02. 메모리 주소 레지스터 MAR(Memory Address Resigter)에 주소를 저장합니다.

 

실행 사이클 2단계: 필요한 데이터 로드

x값은 범용 레지스터 GPR에 저장되어 있는 것을 확인했으므로, 메모리에서 y값을 가져오기 위한 과정을 수행합니다.

 

01. 메모리 주소 레지스터에 저장된 y의 메모리 주소를 확인합니다. 인출 사이클과 마찬가지로, 02. 주소 버스를 통해 메모리에 y의 주소 값을 전달합니다. 메모리는 주소를 확인 후 03. 데이터 버스를 통해 CPU에 값을 전달합니다. 여기서 인출 사이클과 다르게 메모리의 데이터를 임시 저장하는 메모리 데이터 레지스터 MDR(Memory Data Register)에 y값이 저장됩니다.

 

MDR은 데이터를 보관하는 것이 아닌, 운반하는 개념에 가까운 레지스터입니다. 한 번에 GPR로 보내면 안 될까?라는 의문이 들 수 있지만 이는 메모리와 CPU 간의 데이터 흐름을 효과적으로 관리하기 위해 MDR을 거치게 됩니다.

 

만약 직접 GPR로 데이터를 보낼 경우 데이터의 안전성과 일관성에 문제(속도 차이와 데이터 동기화 등)가 발생할 수 있기 때문에 MDR을 한 번 거쳐 데이터 흐름을 안정화시키는 것으로 이해할 수 있습니다.

 

이렇게 MDR을 통해 안전하게 04. y의 값을 GPR로 보내 x와 y값 모두를 확정할 수 있습니다.

 

실행 사이클 3단계: 연산 수행

이제 연산을 위한 모든 준비가 끝났습니다! 제어 유닛 CU는 x와 y값, 그리고 '더해라!'라는 명령어를 산술 논리 연산 장치 ALU(Arithmetic Logic Unit)로 전달합니다. 이렇게 계산된 값은 제어 유닛에 의해 다시 GPR에 저장되거나, 이후 다른 연산에 사용될 수 있습니다. 드디어 한 사이클이 끝나는 것을 확인했습니다!

 

정리하기

처음엔 인터뷰 질문지에 정리된 문장 '컴퓨터 시스템에서 CPU, RAM, 저장 장치의 역할과 이들이 어떻게 상호 작용하는지 설명해주세요.'만 정리하려 했는데 모르는 개념이 꼬리에 꼬리는 물다 보니 여기까지 흘러왔습니다. 세밀한 개념 모두 공부하진 못했지만, 전체적인 맥락을 직접 그려가며 나름 친숙해질 수 있었습니다.

 

큰 틀은 볼 수 있게 되었으니 다음에 작은 개념이 나왔을 때 돌아올 수 있기를 기대합니다!

 

Ref.

 

중앙 처리 장치(CPU)란 무엇인가요? | IBM

중앙 처리 장치(CPU)는 입력된 데이터를 정보 출력으로 변환하는 컴퓨터 내부의 보이지 않는 관리자입니다.

www.ibm.com

 

[컴퓨터구조] 시스템 버스(System bus)

시스템 버스(System bus) - 컴퓨터의 구성요소를 서로 연결하고 데이터 전달을 위한 경로 - 주소 버스, 데이터 버스, 제어 버스로 구성 1) 주소 버스(Address Bus) - 메모리의 주소나 I/O Unit의 포트 번호를

dheldh77.tistory.com

 

컴퓨터의 구조: 명령어 사이클

1. 명령어 사이클(Instruction Cycle)CPU는 프로그램 명령어를 클럭에 따라 일정한 주기를 반복하여 실행하는데, 이 주기를 명령어 사이클(Instruction Cycle)이라고 합니다.명령어 사이클은 CPU가 하나의 명

www.robotstory.co.kr

저작자표시 (새창열림)

'내게 필요한 개발 공부' 카테고리의 다른 글

Intel Mac과 M1 Mac이 달랐던 이유  (2) 2025.02.24
작지만 빠른 친구 캐시 알아보기  (0) 2025.02.22
iOS 개발자의 모두를 위한 컴퓨터 과학 CS50 수료 후기  (1) 2025.02.19
Swift로 적어보는 버블 / 선택 / 병합 정렬  (0) 2025.02.17
iOS 개발에서 쉽게 도전해볼만한 리팩토링 접근법 8가지  (2) 2025.02.16
  1. CPU(Central Processing Unit) 중앙처리장치
  2. RAM(Random Access Memory) 주기억장치
  3. Storage 저장 장치
  4. 미묘한 삼각관계
  5. CPU와 메모리 간 데이터 교환 방식
  6. 정리하기
'내게 필요한 개발 공부' 카테고리의 다른 글
  • Intel Mac과 M1 Mac이 달랐던 이유
  • 작지만 빠른 친구 캐시 알아보기
  • iOS 개발자의 모두를 위한 컴퓨터 과학 CS50 수료 후기
  • Swift로 적어보는 버블 / 선택 / 병합 정렬
thinkyside
thinkyside
스스로에게 솔직해지고 싶은 공간
  • thinkyside
    또 만드는 한톨
    thinkyside
  • 전체
    오늘
    어제
    • 모아보기 (67)
      • 솔직해보려는 회고 (1)
      • 꾸준히 글쓰기 (10)
      • 생각을 담은 독서 (7)
      • 내게 필요한 개발 공부 (25)
      • 실무 내용 내껄로 만들.. (3)
      • 트러블슈팅 (4)
      • 프로젝트 일지 (9)
      • 개발 서적 (3)
      • 취준 (3)
      • 대외활동 (1)
      • UXUI (1)
  • hELLO· Designed By정상우.v4.10.3
thinkyside
CPU / RAM / Storage의 미묘한 삼각관계

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.