본문 바로가기
1. CS(Computer Science) 기초 지식/컴퓨터 구조

디지털 세상의 뼈대, 컴퓨터의 기본 구조와 폰 노이만 아키텍처

by 심플리Do 2026. 6. 11.

소프트웨어를 공부하다 보면 문득 의문이 생길 때가 있다.

우리가 모니터 화면에 타이핑한 영문자와 숫자로 된 코드들이,

어떻게 딱딱한 실리콘 칩과 전선으로 이루어진 하드웨어를 움직여 복잡한 화면을 만들어내는 걸까?

 

컴퓨터 구조는 하드웨어와 소프트웨어 사이의 경계선에서 컴퓨터의 각 부품이 어떻게 구성되어 있고,

어떤 방식으로 명령을 주고받으며 실행하는지 그 물리적 메커니즘을 다루는 학문이다.

 

첫 번째 포스팅에서는 컴퓨터를 구성하는 4대 핵심 부품과 현대 컴퓨터의 근간이 되는 '폰 노이만 구조'를 살펴본다.

 

1. 컴퓨터의 4대 핵심 부품

컴퓨터의 형태는 스마트폰, 노트북, 거대한 서버 등 다양하지만 그 내부를 관통하는 핵심 하드웨어 부품은 크게 4가지로 분류할 수 있다.

  • 중앙처리장치 (CPU - Central Processing Unit): 컴퓨터의 '두뇌'에 해당한다. 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 역할을 한다. 내부에는 산술 및 논리 연산을 담당하는 ALU(산술논리연산장치), 명령어 흐름을 제어하는 제어장치, 데이터를 임시로 저장하는 초고속 메모리인 레지스터로 구성된다.
  • 주기억장치 (Main Memory - RAM): 실행 중인 프로그램의 데이터와 명령어를 임시로 저장하는 공간이다. CPU가 빠르게 접근할 수 있도록 돕지만, 전원이 꺼지면 저장된 내용이 날아가는 휘발성(Volatile) 특성을 가진다.
  • 보조기억장치 (Secondary Storage - SSD/HDD): 전원이 꺼져도 데이터를 영구적으로 보관하는 공간이다. 주기억장치에 비해 속도는 느리지만 용량이 크고 비휘발성이라는 장점이 있다. 우리가 작성한 소스 코드나 설치한 프로그램은 평소에 이곳에 저장되어 있다가, 실행하는 순간 주기억장치(RAM)로 로드된다.
  • 입출력장치 (I/O Devices): 키보드, 마우스, 모니터, 프린터 등 컴퓨터 외부와 내부가 소통할 수 있도록 데이터를 입력받고 출력하는 장치들이다.

 

2. 현대 컴퓨터의 근간: 폰 노이만 아키텍처

오늘날 우리가 사용하는 거의 모든 컴퓨터는 수학자 존 폰 노이만(John von Neumann)이 제안한 '폰 노이만 아키텍처(내장 프로그램 방식 컴퓨터)'를 기반으로 설계되었다.

 

폰 노이만 구조 이전의 컴퓨터는 새로운 작업을 할 때마다 사람이 직접 전선을 새로 연결하거나 스위치를 일일이 조작해야 했다.

하지만 폰 노이만은 "명령어와 데이터를 모두 메모리에 저장해 두고, CPU가 메모리에서 순차적으로 읽어와 실행하자"는 획기적인 아이디어를 제안했다.

 

 

이 구조 덕분에 하드웨어를 물리적으로 바꾸지 않고도, 메모리에 들어있는 프로그램(소프트웨어)만 교체하면 컴퓨터가 전혀 다른 작업을 수행할 수 있게 되었다.

 

폰 노이만 병목 현상 (Von Neumann Bottleneck)

폰 노이만 구조는 대단히 유연하고 성공적이었지만, 태생적인 한계를 지니고 있다. CPU의 연산 속도는 비약적으로 발전한 반면, 메모리와 데이터를 주고받는 통로(Bus)의 대역폭은 그 속도를 따라가지 못하게 된 것이다.

 

CPU가 아무리 빨라도 메모리에서 데이터를 가져오는 시간이 오래 걸려 CPU가 놀게 되는 이 현상을 '폰 노이만 병목 현상'이라고 부르며, 현대 컴퓨터 구조는 이를 해결하기 위해 캐시 메모리(Cache Memory) 도입이나 버스(Bus) 구조 개선 등 끊임없는 최적화를 진행해 왔다.

 

3. 개발자가 컴퓨터 구조를 알아야 하는 이유

"고급 언어로 코드를 짜면 컴파일러가 알아서 기계어로 바꿔주는데, 굳이 하드웨어 구조까지 알아야 할까?"라는 생각이 들 수 있다. 하지만 하드웨어의 한계와 특성을 이해하는 개발자는 코드의 성능을 전혀 다른 차원으로 끌어올릴 수 있다.

  • 미시적 관점의 최적화: CPU가 메모리에서 데이터를 읽어올 때 주변 데이터까지 함께 가져오는 '캐시 지역성(Cache Locality)'을 이해하면, 동일한 알고리즘이라도 데이터 배열 구조를 어떻게 배치하느냐에 따라 수배 이상의 성능 차이를 만들어낼 수 있다.
  • 문제 해결력과 트러블슈팅: 실행 중인 프로그램이 메모리 오버플로우를 일으키거나, 멀티 코어 환경에서 데이터 동기화 문제가 발생했을 때, CPU 레지스터와 메모리 버스 수준의 하드웨어 메커니즘을 알면 버그의 근본 원인을 명확하게 진단할 수 있다.
  • 기술 변화에 대한 적응력: 최근 클라우드 환경이나 AI 연산을 위한 GPU, NPU 활용 등 하드웨어 환경이 급변하고 있다. 컴퓨터 구조의 기본 체력이 튼튼하다면 이러한 하드웨어 인프라 변화에 맞춰 아키텍처를 유연하게 설계할 수 있다.

 

마치며: 추상을 구체로 바꾸는 힘

코딩이 논리적이고 추상적인 샌드박스를 만드는 과정이라면, 컴퓨터 구조는 그 샌드박스가 발을 딛고 있는 단단한 대지를 공부하는 과정이다.

 

앞으로 이 카테고리에서는 기계어와 어셈블리어의 관계, CPU의 명령어 처리 사이클(Fetch-Decode-Execute), 메모리 계층 구조, 그리고 캐시 최적화 원리 등 소프트웨어가 하드웨어라는 무대 위에서 어떻게 실체화되어 구동되는지 그 흥미로운 내막을 하나씩 짚어볼 것이다. 기본기가 단단한 전공자로서 시스템을 깊이 있게 조망하는 눈을 길러보자.