“코드를 아무리 잘 짜도, 하드웨어를 이해하지 못하면 한계가 온다.”
— 개발자라면 꼭 알아야 할 컴퓨터의 속사정
우리는 매일 코드를 씁니다. 그런데 그 코드가 CPU에서 어떻게 실행되고,
메모리와 어떤 방식으로 소통하며, 왜 속도가 느려지는지에 대해
정확히 알고 있는 사람은 많지 않죠.
이번 포스팅에서는 "컴퓨터 구조"의 핵심 개념들을 개발자의 시선에서 정리해보려 합니다.
단순한 암기가 아닌 이해 중심의 구조 탐험, 지금 시작합니다.
컴퓨터는 복잡해 보이지만, 본질은 아래 네 가지로 요약됩니다:
CPU는 단순 계산기가 아닙니다. 내부 구성은 다음과 같습니다:
CPU는 수많은 명령어 사이클(Instruction Cycle)을 통해 코드 실행을 반복합니다.
CPU는 다음 네 단계를 반복하여 명령어를 처리합니다:
이 사이클은 수억~수십억 번/초 단위로 반복됩니다.
코드가 느린 이유는 대부분 메모리 병목 때문입니다.
CPU는 빠르고, 메모리는 느립니다. 이를 해결하기 위한 구조가 메모리 계층 구조입니다.
계층 | 예시 | 속도 | 용량 |
---|---|---|---|
레지스터 | CPU 내부 | 💨 매우 빠름 | 🔹 매우 작음 |
캐시 (L1~L3) | CPU 근처 | 빠름 | 작음 |
메인 메모리 (RAM) | DRAM | 중간 | 큼 |
보조기억장치 | SSD/HDD | 느림 | 매우 큼 |
🔥 캐시 미스(Cache Miss) 발생 시, 속도 저하 심각.
CPU는 명령어 집합(ISA)을 통해 동작합니다. 대표적인 두 철학은:
RISC (Reduced Instruction Set Computer)
CISC (Complex Instruction Set Computer)
CPU는 명령어를 겹쳐서 실행합니다. 이것이 바로 파이프라인(Pipelining)입니다.
각 명령어가 서로 다른 단계에서 동시에 실행됨으로써 CPU 활용도를 극대화
예: 5단계 파이프라인
Fetch → Decode → Execute → Memory → Write-back
🎯 해결책: 분기 예측, 레지스터 포워딩, 스톨 삽입 등
명령어가 데이터를 어떻게 참조하는지 결정하는 방식들:
인터럽트(Interrupt)는 현재 작업을 멈추고 긴급한 작업을 우선 처리하는 기능입니다.
단순히 "GHz"만으로 성능을 판단하긴 어렵습니다. 아래와 같은 지표들이 함께 사용됩니다:
프로그래밍 실력은 하드웨어 이해에서 완성됩니다.
👉 컴퓨터 구조는 필수입니다.
이 글이 여러분의 CS 기초를 한 층 더 단단하게 만들어주는 계기가 되길 바랍니다.
🧵 댓글이나 피드백 환영합니다!
다음 편에서는 "운영체제" 또는 "캐시 메모리 심화" 주제를 다뤄볼 예정입니다.