안녕하세요! 트윅히입니다.
오늘도 어김없이 돌아왔습니다. 비전공자 전공자되기 3탄!!
컴퓨터의 계산 방법에 대한 글입니다.
하루에 하나씩 읽다보면 부족한 부분이 매꿔질 거라 생각이 듭니다. ㅎㅎㅎ
오늘도 화이팅~~

"컴퓨터가 어떻게 덧셈을 하지?" 라는 단순한 질문 하나가 저를 디지털 회로의 세계로 이끌었습니다. 이번 포스팅에서는 CPU가 실제로 어떻게 연산을 수행하는지, 그리고 기억 장치는 어떤 방식으로 데이터를 저장하고 관리하는지 정리해봤어요.
📚 목차
- CPU는 사실 '전자식 계산기'다
- 반도체란 무엇인가 — 도체와 부도체 사이
- 컴퓨터가 더하기 하는 법 — 전가산기
- 뺄셈은 어떻게? — 보수(Complement)의 마법
- 곱셈과 나눗셈 — 사실 다 Shift 연산이다
- 실수 연산 — IEEE 754 표준
- 메모리 계층 구조 — CPU부터 SSD까지
- 컴퓨터가 기억 공간을 관리하는 방법
- HDD의 논리적 구조 — 트랙과 섹터
- 파일 시스템(NTFS, FAT)과 포맷
- SSD의 논리적 구조 — HDD와 무엇이 다른가
1. CPU는 사실 '전자식 계산기'다
CPU(Central Processing Unit)를 한 마디로 표현하면 전자식 계산기, 즉 연산장치입니다.
흔히 "컴퓨터의 두뇌"라고 표현하지만, 사실 CPU가 하는 일의 본질은 숫자 계산이에요.
복잡해 보이는 게임, 영상 편집, 웹 브라우징도 결국 밑바닥을 파고 들어가면 0과 1로 이루어진 이진수 산수입니다.
고급스러운 언어로 짠 코드도 결국 CPU에 내려오면 덧셈, 뺄셈, 비교 연산의 조합이에요.
2. 반도체란 무엇인가 — 도체와 부도체 사이
구분 특성 예시
| 도체(Conductor) | 전기가 잘 흐름 | 구리, 철 |
| 부도체(Insulator) | 전기가 흐르지 않음 | 고무, 유리 |
| 반도체(Semiconductor) | 조건에 따라 도체/부도체로 동작 | 실리콘(Si) |
반도체는 전압이나 온도, 불순물 도핑에 따라 전기 흐름을 제어할 수 있어요.
이 특성 덕분에 트랜지스터를 만들 수 있고, 트랜지스터를 수십억 개 집적한 것이 바로 CPU 칩입니다.
💡 CPU 안에는 수십억 개의 트랜지스터가 들어 있고, 각각이 0과 1을 표현하는 스위치 역할을 합니다.
3. 컴퓨터가 더하기 하는 법 — 전가산기
이진수 덧셈의 기본 단위는 **반가산기(Half Adder)**입니다.
두 비트를 더해서 합(Sum)과 올림수(Carry)를 출력해요.
A + B = Sum, Carry
0 + 0 = 0, 올림 없음
0 + 1 = 1, 올림 없음
1 + 0 = 1, 올림 없음
1 + 1 = 0, 올림 1 (10₂)
하지만 실제 여러 자리 수를 더하려면 **이전 자리의 올림수(Carry-in)**도 처리해야 해요.
그래서 등장하는 게 **전가산기(Full Adder)**입니다.
전가산기: A + B + Carry_in → Sum, Carry_out
이 전가산기를 비트 수만큼 연결하면
→ 리플 캐리 가산기(Ripple Carry Adder)가 되고, 이것이 CPU 안에서 덧셈을 처리하는 핵심 회로예요.
4. 뺄셈은 어떻게? — 보수(Complement)의 마법
컴퓨터는 뺄셈 회로를 따로 만들지 않아요.
대신 보수(Complement)를 이용해서 덧셈으로 뺄셈을 표현합니다.
꽤 영리한 방법이에요 😄
1의 보수 (1's Complement)
모든 비트를 반전(NOT 연산)합니다.
5 = 0000 0101
~5 = 1111 1010 ← 1의 보수
2의 보수 (2's Complement)
1의 보수에 1을 더한 값입니다.
1의 보수: 1111 1010
+ 1
─────────────
2의 보수: 1111 1011 ← 이게 -5를 표현하는 방식
실제 뺄셈 예시
8 - 5 = ?
8 = 0000 1000
-5 = 1111 1011 (5의 2의 보수)
0000 1000
+ 1111 1011
───────────
1 0000 0011 → 올림수 버리면 → 0000 0011 = 3 ✅
현대 컴퓨터가 음수를 2의 보수로 표현하는 이유가 바로 이것 때문이에요.
덧셈 회로 하나로 뺄셈까지 처리할 수 있으니까요.
5. 곱셈과 나눗셈 — 사실 다 Shift 연산이다
덧셈과 뺄셈이 가능해지면, 곱셈과 나눗셈도 따라옵니다.
곱셈 = Left Shift
비트를 왼쪽으로 밀면 2의 거듭제곱을 곱하는 효과가 납니다.
5 = 0000 0101
5 << 1 = 0000 1010 = 10 (5 × 2)
5 << 2 = 0001 0100 = 20 (5 × 4)
빈 자리는 0으로 채웁니다(Zero Padding).
나눗셈 = Right Shift
비트를 오른쪽으로 밀면 2로 나누는 효과가 납니다.
20 = 0001 0100
20 >> 1 = 0000 1010 = 10 (20 ÷ 2)
20 >> 2 = 0000 0101 = 5 (20 ÷ 4)
⚠️ 음수의 오른쪽 시프트는 부호 비트(MSB)를 어떻게 채우느냐에 따라 산술 시프트(Arithmetic Shift)와 논리 시프트(Logical Shift)로 나뉩니다.
복잡한 곱셈은 이 시프트 연산과 덧셈의 조합으로 구현됩니다.
우리가 손으로 계산할 때 자릿수를 맞춰 더하는 것과 완전히 같은 원리예요.
6. 실수 연산 — IEEE 754 표준
정수는 앞서 설명한 방식으로 처리되지만, 소수점이 있는 실수는 다릅니다.
이를 위한 국제 표준이 IEEE 754예요.
32비트 단정도(Single Precision) 기준으로 이렇게 구성됩니다.
[ 1비트: 부호 | 8비트: 지수부 | 23비트: 가수부 ]
- 부호(Sign): 양수(0) / 음수(1)
- 지수부(Exponent): 2의 몇 제곱인지 (바이어스 127 적용)
- 가수부(Mantissa): 유효 숫자 부분
예를 들어 3.14를 IEEE 754로 표현하면 내부적으로 이진 부동소수점 형태로 저장됩니다.
이 때문에 0.1 + 0.2 === 0.3이 false가 되는 유명한 부동소수점 오차가 발생해요.
(추후 다른 글에서 더 다뤄볼게요)
7. 메모리 계층 구조 — CPU부터 SSD까지
컴퓨터의 메모리는 속도와 비용에 따라 계층 구조를 이룹니다.
빠름 ↑ / 비쌈 ↑
┌─────────────────────┐
│ 레지스터 │ ← CPU 내부, 나노초 단위
├─────────────────────┤
│ L1 캐시 (1차) │ ← 코어 전용, 수십 KB
├─────────────────────┤
│ L2 캐시 (2차) │ ← 코어 공유, 수백 KB
├─────────────────────┤
│ L3 캐시 (3차) │ ← CPU 전체 공유, 수 MB~수십 MB
├─────────────────────┤
│ RAM (주기억장치) │ ← 휘발성, GB 단위
├─────────────────────┤
│ SSD / HDD │ ← 비휘발성, TB 단위
└─────────────────────┘
느림 ↓ / 쌈 ↓
캐시 메모리는 '예측'을 한다
CPU는 RAM에서 데이터를 읽어올 때마다 수백 클럭을 낭비합니다. 이 병목을 줄이기 위해 캐시 메모리가 등장했어요.
캐시는 단순히 빠른 메모리가 아니라, 앞으로 필요할 데이터를 미리 예측해서 올려두는 스마트한 버퍼입니다. 지역성(Locality) 원칙에 기반해요.
- 시간 지역성: 최근에 쓴 데이터는 곧 또 쓸 가능성이 높다
- 공간 지역성: 현재 접근한 데이터 근처의 데이터도 곧 쓸 가능성이 높다
32비트 운영체제 = 최대 4GB
32비트 주소 공간은 2³² = 4,294,967,296 바이트 = 4GB입니다.
그래서 32비트 OS는 RAM을 4GB까지밖에 인식하지 못해요.
64비트 OS가 보편화된 지금은 이론적으로 수십억 GB까지 주소 지정이 가능합니다.
8. 컴퓨터가 기억 공간을 관리하는 방법
컴퓨터는 모든 것을 숫자로 관리합니다.
정보가 저장된 위치도 숫자로 표시해요.
마치 아파트 단지에서 각 가구를 "101동 201호"처럼 숫자로 관리하는 것과 똑같습니다.
기억 장치 주소 지정 방식
| 레지스터 | 고유한 이름 (EAX, EBX, RIP 등) |
| 주기억장치(RAM) | 일련번호 = 메모리 주소 |
| 보조기억장치(HDD/SSD) | 트랙 번호 + 섹터 번호 → 파일 시스템 |
레지스터는 수가 적으니까 이름을 붙이고, RAM은 수가 많으니 번호(주소)를 붙이고, HDD/SSD는 물리적 위치 기반으로 관리합니다.
이 필요에서 파일 시스템이 탄생했어요.
9. HDD의 논리적 구조 — 트랙과 섹터
HDD는 **자기 디스크(플래터)**가 고속으로 회전하며 데이터를 읽고 씁니다.
┌──────────────────┐
│ Track (트랙) │ ← 동심원 형태의 띠
│ ┌────────────┐ │
│ │ Sector(섹터)│ │ ← 트랙을 조각낸 단위
│ └────────────┘ │
└──────────────────┘
↑
자기 헤드(Read/Write Head)
- 트랙(Track): 플래터 표면의 동심원 형태 데이터 영역
- 섹터(Sector): 트랙을 일정 크기로 나눈 최소 저장 단위 (보통 512B 또는 4KB)
- 회전 속도(RPM): HDD 성능의 핵심. 7200 RPM이 일반적이고, 서버용은 1만 RPM 이상도 있어요
Bad Sector와 조각 모음
플래터에 물리적으로 데이터를 쓰고 지우는 과정이 반복되면 특정 섹터가 손상됩니다.
이를 Bad Sector라고 하며, 약 10만 회 정도의 덮어쓰기(overwrite)가 반복되면 발생할 수 있어요.
또한 파일이 삭제되고 새로 저장되다 보면 파일이 여러 섹터에 흩어져 저장되는 단편화(Fragmentation) 현상이 생깁니다.
이를 해결하는 게 조각 모음(Defragmentation)이에요.
파일을 연속된 섹터로 재배치해 읽기 속도를 개선합니다.
⚠️ 조각 모음은 HDD에만 의미가 있어요. SSD에서는 오히려 수명을 단축시킬 수 있습니다.
10. 파일 시스템(NTFS, FAT)과 포맷
HDD나 SSD에 파일을 저장하려면 파일 시스템이라는 규약이 필요합니다.
어떤 위치에 어떤 파일이 있는지 관리하는 "색인" 역할이에요.
FAT (File Allocation Table)
파일이 어느 섹터들에 저장되어 있는지 목록을 관리하는 테이블입니다.
FAT16, FAT32, exFAT 등 다양한 버전이 있어요.
NTFS (New Technology File System)
Windows에서 사용하는 현대적인 파일 시스템입니다. FAT보다 훨씬 많은 기능을 지원해요.
(맥의 경우 APFS)
항목 FAT32 NTFS
| 최대 파일 크기 | 4GB | 제한 없음 (이론적) |
| 저널링 | ❌ | ✅ (오류 복구 가능) |
| 권한 관리 | ❌ | ✅ |
| 최대 볼륨 크기 | 2TB | 수 PB |
MBR과 부트로더
0번 트랙 0번 섹터에는 특별한 코드가 들어갑니다.
바로 MBR(Master Boot Record)이에요.
운영체제를 시작시키는 부트로더(Bootloader) 코드가 여기에 저장되어 있어요.
컴퓨터를 켜면 BIOS/UEFI가 MBR을 읽고 → 부트로더를 실행 → OS 커널을 로드하는 순서로 부팅이 진행됩니다.
포맷(Format)을 한다는 건 기존 파일 시스템을 지우고 새로운 파일 시스템으로 초기화하는 것입니다.
예를 들어 FAT32로 된 USB를 NTFS로 바꾸는 것이 포맷이에요.
11. SSD의 논리적 구조 — HDD와 무엇이 다른가
SSD(Solid State Drive)는 HDD와 달리 회전하는 자기 디스크 대신 낸드 플래시(NAND Flash) 메모리 칩을 사용합니다.
쉽게 말하면 "USB 메모리처럼 생긴 대용량 저장 장치"예요.
HDD vs SSD 핵심 비교
항목 HDD SSD
| 저장 매체 | 자기 디스크(플래터) | 낸드 플래시 칩 |
| 접근 방식 | 물리적 헤드 이동 (기계식) | 전기 신호 (전자식) |
| 속도 | 느림 (100~200 MB/s) | 빠름 (500MB/s ~ 7GB/s) |
| 소음 | 있음 (회전음, 헤드 이동음) | 없음 |
| 충격에 강함 | 약함 (헤드 손상 위험) | 강함 |
| 단편화 영향 | 큼 (헤드 이동 필요) | 없음 (어디나 같은 속도) |
| 수명 제한 | 기계적 마모 | 쓰기 횟수 제한 (수십만~수백만 회) |
| 가격 | 쌈 (GB당) | 비쌈 (GB당) |
SSD의 논리적 구조
SSD는 HDD의 트랙/섹터 대신 다음 구조를 사용합니다.
SSD 내부 구조
[ 페이지(Page) ] → 읽기/쓰기의 최소 단위 (보통 4KB ~ 16KB)
↓
[ 블록(Block) ] → 삭제의 최소 단위 (페이지 64~256개 묶음)
↓
[ 다이(Die) / 칩(Chip) ]
⚠️ SSD의 중요한 특성: 덮어쓰기(overwrite)가 불가능합니다!
새 데이터를 쓰려면 블록 전체를 먼저 지우고(erase), 다시 써야 해요.
이 때문에 **FTL(Flash Translation Layer)**이라는 소프트웨어 계층이 중간에서 논리 주소와 물리 주소를 매핑해주고,
**웨어 레벨링(Wear Leveling)**으로 특정 블록에 쓰기가 집중되지 않도록 분산시킵니다.
SSD에서 조각 모음을 하면 안 되는 이유
HDD는 파일이 흩어지면 헤드가 이동해야 해서 느려지지만, SSD는 어느 위치나 동일한 속도로 접근합니다.
그래서 단편화로 인한 성능 저하가 없어요.
오히려 조각 모음을 하면 불필요한 쓰기가 발생해 수명만 단축됩니다.
마무리
디지털 회로의 기초부터 파일 시스템까지, 처음엔 별개처럼 보이던 개념들이 사실 하나의 큰 흐름으로 연결되어 있어요.
트랜지스터(반도체)
↓
게이트(논리 회로)
↓
가산기(전가산기)
↓
연산장치(ALU)
↓
CPU + 메모리 계층
↓
파일 시스템
↓
우리가 쓰는 OS/애플리케이션
이 구조를 머릿속에 그려두면,
"왜 4GB RAM이 한계였나",
"왜 0.1 + 0.2가 0.3이 아닌가",
"SSD는 왜 조각 모음이 필요 없나" 같은 질문들이 자연스럽게 해소됩니다.
다음 포스팅에서는 운영체제가 이 위에서 어떻게 프로세스와 메모리를 관리하는지 이어서 정리해볼게요 🙂
#디지털회로 #컴퓨터구조 #CPU #메모리 #전가산기 #보수 #IEEE754 #파일시스템 #HDD #SSD #NTFS #FAT #반도체 #캐시메모리 #운영체제 #CS지식 #ComputerScience #DigitalCircuit #ComputerArchitecture #Memory #FileSystem #개발자 #CS기초 #기술블로그
'✨ 1일 1개발지식' 카테고리의 다른 글
| [비전공자 전공자 되기 Part 5] 🧠 개발자라면 알아야 할 프로그래밍 기초 개념 정리 — 고급어부터 SDK까지 (0) | 2026.03.24 |
|---|---|
| [비전공자 전공자 되기 Part 4] 💻 개발자라면 알아야 할 운영체제 핵심 개념 정리(커널과 OS..등) (1) | 2026.03.23 |
| [비전공자 전공자 되기 Part 2] 💻 컴퓨터는 어떻게 데이터를 이해할까? — 비트(bit)부터 이미지까지 (1) | 2026.03.16 |
| [비전공자 전공자 되기 Part 1] 🌐 웹은 어떻게 지금의 모습이 되었을까? : 전체적인 구조와 흐름 (2) | 2026.03.12 |
| ☕ JVM, JRE, JDK의 차이점은? (0) | 2025.12.20 |