컴퓨터 시스템의 하드웨어는 여러 구성 요소로 이루어져 있으며, 각각의 역할과 상호작용을 통해 프로그램이 실행된다.
주요 구성 요소는 버스(Bus), 프로세서(CPU), 입출력 장치(I/O), 메인 메모리(Main Memory)로 나눌 수 있다.

| 버스 종류 | 역할 |
|---|---|
| 데이터 버스 | CPU ↔ 메모리 ↔ I/O 장치 간 데이터를 전송 |
| 주소 버스 | 메모리나 I/O 장치의 위치(주소)를 지정 |
| 제어 버스 | CPU가 데이터 읽기/쓰기 명령을 제어 |
한 개의 워드를 구성하는 바이트 수는 시스템마다 보유하는 기본 시스템 변수이다.
(오늘 날 대부분의 컴퓨터들은 4바이트(32비트) 또는 8바이트(64비트)이다.)
컴포넌트가 서로 워드를 교환하는 과정 :

| 구성 요소 | 역할 |
|---|---|
| 연산 장치 (ALU, Arithmetic Logic Unit) | 덧셈, 뺄셈, 논리 연산 등의 연산 수행 |
| 제어 장치 (CU, Control Unit) | 명령어 해석 및 실행 흐름 제어 |
| 레지스터 (Register) | CPU 내부의 초고속 메모리 (명령어, 주소, 연산 결과 저장) |
| 캐시 메모리 (Cache) | 자주 사용하는 데이터를 저장하는 고속 메모리 |
| 파이프라이닝 (Pipelining) | 명령어를 분할하여 동시에 실행해 성능 향상 |
| 프로그램카운터(ProgramCounter) | 메인 메모리의 기계어 인스트럭션을 가르킴 |
1️⃣ 직접 메모리 접근(DMA, Direct Memory Access)
2️⃣ 인터럽트(Interrupt) 기반 입출력
3️⃣ 프로그램 I/O 방식
| 계층 | 속도 | 크기 | 특징 |
|---|---|---|---|
| 레지스터 | 🟢 매우 빠름 | 🔴 매우 작음 | CPU 내부에 있음 |
| 캐시 메모리 | 🟢 빠름 | 🔴 작음 | CPU와 RAM 간 속도 차이 해결 |
| RAM (주기억장치) | 🟡 보통 | 🟡 중간 | 실행 중인 프로그램이 위치 |
| HDD/SSD (보조기억장치) | 🔴 느림 | 🟢 매우 큼 | 비휘발성 데이터 저장 |
| 메모리 | 특징 |
|---|---|
| RAM | 휘발성(전원 끄면 데이터 삭제), 프로그램 실행 시 사용 |
| ROM | 비휘발성, 부팅 시 필요한 기본 데이터 저장 (BIOS) |
| 캐시(Cache) | CPU와 RAM 간 속도 차이를 줄이기 위한 고속 메모리 |
| 가상 메모리 | RAM이 부족할 때 하드디스크 일부를 임시 메모리로 사용 |
1️⃣ 프로그램 실행
2️⃣ CPU 처리
3️⃣ I/O 장치 연동
4️⃣ 결과 저장 및 출력
🔹 버스: 데이터, 주소, 제어 신호를 주고받는 회선.
🔹 CPU: 컴퓨터의 두뇌, 연산 수행 (ALU, CU, 레지스터 포함).
🔹 I/O 장치: 외부와 데이터 교환 (키보드, 마우스, 프린터 등).
🔹 메인 메모리(RAM): 실행 중인 프로그램 저장, 빠른 데이터 접근 가능.
💡 컴퓨터의 모든 하드웨어는 서로 연결되어 데이터를 주고받으며 동작함!
CPU는 프로그램을 실행할 때 명령어(Instruction) 를 받아서 처리하는데, 그 과정에서 가장 기본적으로 수행하는 작업이 적재(Load), 저장(Store), 작업(Execute), 점프(Jump) 입니다.
💬 "메모리에서 데이터를 가져와 레지스터에 저장하는 과정"
💾 ➡️ 🏗 (RAM → CPU 레지스터)
📌 예제
📍 "엄마가 냉장고에서 우유를 꺼내 컵에 따른다."
📍 컴퓨터에서
LOAD R1, [0x1000] ; 메모리 주소 0x1000에서 값을 가져와 R1에 저장
→ 메모리에 저장된 데이터를 CPU 레지스터로 불러옴.
💬 "레지스터에 있던 데이터를 다시 메모리로 저장하는 과정"
🏗 ➡️ 💾 (CPU 레지스터 → RAM)
📌 예제
📍 "컵에 따른 우유를 다시 냉장고에 넣는다."
📍 컴퓨터에서
STORE [0x1000], R1 ; R1에 있는 값을 메모리 주소 0x1000에 저장
→ CPU가 처리한 결과를 RAM이나 저장장치에 저장.
💬 "불러온 데이터를 바탕으로 연산하는 과정"
🧠 ➡️ 🔢 (CPU 내부 연산 수행)
📌 예제
📍 "우유에 초코 가루를 섞는다."
📍 컴퓨터에서
ADD R1, R2, R3 ; R2와 R3의 값을 더해서 R1에 저장
→ CPU가 연산(덧셈, 뺄셈, 논리 연산 등)을 수행.
💬 "특정 위치의 명령어로 이동하는 과정"
↪️ 🏃 (현재 실행 중인 코드 → 다른 코드 위치)
📌 예제
📍 "요리 중 우유가 없으면, 슈퍼마켓으로 간다."
📍 컴퓨터에서
assembly
복사편집
JUMP 0x2000 ; 주소 0x2000으로 실행 흐름 변경
JZ 0x3000 ; 결과가 0이면 주소 0x3000으로 이동
→ 프로그램의 흐름을 변경하는 역할 (if문, 반복문 등).
| 동작 | 역할 | 예제 (일상) | 예제 (컴퓨터) |
|---|---|---|---|
| 적재 (Load) | 메모리 → CPU 레지스터 | 냉장고에서 우유를 꺼내 컵에 따른다 | LOAD R1, [0x1000] |
| 저장 (Store) | CPU 레지스터 → 메모리 | 컵의 우유를 다시 냉장고에 넣는다 | STORE [0x1000], R1 |
| 작업 (Execute) | CPU에서 연산 수행 | 우유에 초코 가루를 섞는다 | ADD R1, R2, R3 |
| 점프 (Jump) | 코드 실행 위치 변경 | 우유가 없으면 슈퍼마켓으로 간다 | JUMP 0x2000 |