[CS]컴퓨터 시스템과 CPU

kimminjunnn·2025년 4월 1일

CS

목록 보기
3/34

💻 컴퓨터와 CPU

📌 컴퓨터는 어떤 요소로 이루어져 있나요?

라는 질문에 저는 단순한 컴퓨터의 부품, 요소 보다는 컴퓨터가 작동하는 시스템은 어떤 요소일지 정리해보았습니다.

여담으로 우리에게 익숙한 Computer.
Compute 를 해주는 녀석일텐데 Compute에 뜻은?
'계산하다' 입니다.

컴퓨터 정의

컴퓨터는 방대한 정보를 저장하고 검색하고 처리하며, 프로그래밍이 가능한 전자적 기계 장치 또는 자동으로 계산을 수행하고 다른 기계장치들을 제어하는 전자 기기다. 프로그램을 사용해 정보를 입 · 출력하고 계산을 자동으로 수행한다.
출처 : 위키백과

🔹 컴퓨터 시스템

컴퓨터 시스템은 하드웨어, 소프트웨어, 데이터, 사용자로 구성될 수 있습니다.

이들은 서로 유기적으로 작동하며 컴퓨터의 동작을 가능하게 합니다.


🔹 하드웨어 (Hardware)

하드웨어는 컴퓨터의 물리적인 부분으로, 다음과 같은 구성 요소를 포함합니다:

  • CPU or 프로세서: 중앙에서 연산은 처리하는 장치
    둘의 차이를 알 필요가 있어보인다. 후에 언급하겠음.
  • 메모리: 데이터를 저장하는 장치
  • 버스: 구성 요소 간 데이터 전달

버스가 조금 생소한 개념이라 조금 더 설명하겠습니다.

✅ 버스란?

버스(Bus)는 컴퓨터 시스템 내의 구성 요소들 간에 데이터를 전달하기 위한 통신 통로입니다.
CPU, 메모리, 입출력 장치 등 여러 하드웨어 컴포넌트들이 버스를 통해 서로 연결되고 데이터를 주고받습니다.


🧱 버스의 주요 역할

  • 데이터를 전송한다 (ex. CPU ↔ 메모리)
  • 장치 간 주소 정보를 전달한다
  • 어떤 장치가 언제 동작해야 할지를 제어 신호로 조정한다

즉, 컴퓨터의 하드웨어 부품들을 연결하는 통합된 경로라고 볼 수 있음.


🔧 버스의 구성

버스는 일반적으로 다음의 세 가지 라인으로 구성됩니다:

버스 종류설명
데이터 버스 (Data Bus)실제 데이터가 전달되는 통로
ex. 10101010 같은 데이터
주소 버스 (Address Bus)데이터를 보내거나 받을 메모리 주소를 전달
CPU가 "어디"에 접근할지 지정
제어 버스 (Control Bus)읽기/쓰기 같은 동작 제어 신호를 전달
메모리 접근, I/O 동작 등 지시


🧠 예시로 이해하기

CPU가 메모리에 있는 데이터를 읽는 과정 예시

  1. CPU가 주소 버스에 주소를 보냄 (ex. 0x1A3F)
  2. CPU가 제어 버스에 "읽기(Read)" 신호를 보냄
  3. 메모리가 해당 주소의 데이터를 데이터 버스를 통해 CPU로 전달

🧩 버스의 종류 (구분 기준)

ex 시내버스인지, 시외버스인지 등등 어디랑 연결되어있는지에 따라 이름을 다르게 붙임

1. 내부 버스 (Internal Bus)

  • CPU 내부의 레지스터, ALU, 제어장치 간 연결
  • 매우 짧고 빠름

2. 시스템 버스 (System Bus)

  • CPU ↔ 메모리, 입출력 장치 간 연결
  • 우리가 흔히 말하는 메인 버스

3. 입출력 버스 (I/O Bus)

  • I/O 장치와 시스템 간 통신을 담당
  • 예: PCI, USB, SATA 등

💡 버스의 병목(Bottleneck)

  • 모든 장치가 공유된 버스를 사용하기 때문에,
  • 한 번에 하나의 장치만 버스를 사용할 수 있음 → 버스 병목 현상 발생 가능
  • 이를 개선하기 위해 고속 캐시, DMA(Direct Memory Access), 버스 아비트레이션(Bus Abitration) 기술 등이 등장함

DMA(Direct Memory Access)CPU를 거치지 않고, 입출력 장치가 메모리와 직접 데이터 전송을 수행하는 방식을 말합니다.

버스 아비트레이션: 여러 장치가 동시에 버스를 사용하려 할 때, 누구에게 먼저 권한을 줄지 결정하는 과정


  • 입출력 장치 (I/O Devices): 사용자와 상호작용 (마우스, 키보드, 모니터 등)
  • 기타: 그래픽 카드, 사운드 카드, 네트워크 카드 등

하드웨어는 데이터를 처리하고 저장하며, 사용자와의 상호작용을 가능하게 합니다.


🔹 소프트웨어 (Software)

소프트웨어는 컴퓨터 시스템을 제어하고 동작시키는 프로그램이나 데이터의 집합입니다.
크게 두 가지로 나뉩니다:

🧩 시스템 소프트웨어

  • 운영체제(OS)와 같은 시스템의 동작을 관리하는 소프트웨어입니다.
  • 하드웨어와 응용 소프트웨어 사이의 인터페이스 역할을 하며,
    자원 관리, 작업 스케줄링, 파일 시스템 관리 등을 수행합니다.

🧩 응용 소프트웨어

  • 사용자의 요구에 따라 동작하는 소프트웨어입니다.
  • 예: 워드프로세서, 스프레드시트, 그래픽 디자인 프로그램 등

🔹 데이터 (Data)

데이터는 컴퓨터 시스템에서 처리되고 저장되는 정보입니다.

  • 숫자, 문자, 이미지, 음성 등 다양한 형태로 존재하며,
    컴퓨터가 작업을 수행할 때 사용됩니다.

🔹 사용자 (User)

사용자는 컴퓨터 시스템을 사용하는 사람 또는 기관을 의미합니다.

  • 응용 소프트웨어를 실행하고, 데이터를 생성하거나 조작할 수 있습니다.
  • 입력 장치를 통해 컴퓨터와 상호작용하고,
    출력 장치를 통해 결과를 확인합니다.

📌 CPU는 어떤 요소로 이루어져 있나요?

🧠 CPU의 핵심 구성 요소 3가지

CPU는 보통 다음의 세 가지 핵심 부품으로 구성됩니다:

  1. 제어 장치 (Control Unit)
  2. 레지스터 (Register)
  3. 산술 논리 연산 장치 (ALU: Arithmetic Logic Unit)

🔸 1. 제어 장치 (Control Unit, CU)

: 말 그대로 CPU를 컨트롤하는 장치이다.
ex)운전자

✅ 역할:

  • 프로그램 명령어를 가져오고(Fetch), 해석하고(Decode), 실행 흐름을 제어(Execute)
  • ALU, 레지스터, 메모리, 입출력 장치 등과 동기화 역할을 함

📦 포함 구성 요소:

  • Program Counter (PC): 다음 실행할 명령어의 주소 저장하는 레지스터
  • Instruction Register (IR): 명령어 레지스터, 현재 실행 중인 명령어를 저장
  • Instruction Decoder: 명령어의 이진 코드를 해석하여 어떤 동작인지 분석
  • Control Signal Generator: ALU, 레지스터, 버스 등에 보낼 Control Signal 생성

등등 사실 MAR,MDR 등등 더 많은데 일단 이정도 선에서 정리했습니다. 더 자세한 정보가 필요하다면 CPU중 Control Unit 에 대해 더 찾아보시는 것을 추천드립니다.

💬 비유하자면, 지휘자 역할을 해. 각 부품이 언제 어떤 일을 해야 할지 알려주는 역할!


🔸 2. 레지스터 (Register)

ex)차안의 도구들

레지스터는 CPU 내부의 초고속 임시 저장 장치로,
명령어 처리와 연산 과정에서 데이터를 저장하거나 제어 정보를 유지하는 데 사용됩니다.


📦 레지스터의 분류

1. 제어 및 상태 레지스터

이름설명
PC (Program Counter)다음 명령어의 주소를 저장
IR (Instruction Register)현재 실행 중인 명령어 저장
Flags Register (상태 레지스터)Zero, Carry, Overflow 등 상태 비트 저장

2. 일반 목적 레지스터 (GPR, General Purpose Register)

  • 계산이나 임시 저장 등에 자유롭게 사용됨
  • 예: R0 ~ Rn (RAX, RBX, ECX, EDX 등 아키텍처에 따라 이름 다름)

3. 특수 목적 내부 레지스터 (설계/마이크로명령 관점)

이건 CPU 내부 마이크로 연산 제어 흐름에서 주로 등장하는 임시 저장용 레지스터들이야.

레지스터설명
TMPREG (Temporary Register)임시 저장 공간. 연산 중간 결과, 주소값 등을 잠깐 저장
RREG (Read Register)메모리 또는 레지스터에서 읽은 값을 담는 레지스터
CREG (Control Register)마이크로명령어 해석 시 제어 신호 저장
OUTREG (Output Register)ALU의 연산 결과를 저장해 다음 처리 단계로 전달
ACC (Accumulator)일부 구조에서 사용하는 누산기. 결과를 누적 저장

이런 레지스터는 마치 내부 CPU 설계도를 그릴 때 나오는 부품 느낌이고,
ALU 연산 처리 흐름이나 마이크로오퍼레이션 순서 제어에 핵심적인 역할을 해.


🔸 3. 산술 논리 연산 장치 (ALU)

ALU(산술 논리 연산 장치)는 "Arithmetic(산술) Logic Unit"의 약자로 CPU 내부에서 산술 연산과 논리 연산을 담당하는 핵심 컴포넌트입니다.

📌 CPU가 계산하거나 판단하는 모든 연산은 ALU를 통해 수행됩니다.


🧩 ALU의 주요 기능

기능 종류설명예시
산술 연산덧셈, 뺄셈, 곱셈, 나눗셈 등5 + 3, R1 - R2
논리 연산AND, OR, NOT, XOR 등A AND B, ~C
비교 연산두 값의 대소 비교A > B, A == B
시프트 연산비트를 좌/우로 이동A << 1, B >> 2

🛠️ ALU 구성 요소

구성 요소설명
입력 레지스터 (Input Registers)연산에 필요한 피연산자들이 들어옴 (보통 레지스터에서 가져옴)
산술 회로덧셈기(adder), 감산기(subtractor) 등을 포함
논리 회로AND, OR, NOT 등을 수행하는 논리 게이트
시프트 회로비트를 좌/우로 이동
플래그 레지스터 (Flags)연산 결과의 상태를 저장 (Zero, Carry, Overflow 등)
결과 레지스터 (Output Register)연산 결과를 저장해서 다음 처리 단계로 전달

만약 ALU가 어떻게 연산을 하는 지 궁금하다면 해당 원리에 대해 따로 찾아봅시다.

📌 세 구성요소의 관계 흐름

[1] 제어 장치가 명령어를 메모리에서 가져오고 해석함
[2] 필요한 데이터를 레지스터에서 가져오거나 저장
[3] 연산이 필요하면 ALU에 지시
[4] 연산 결과를 다시 레지스터나 메모리에 저장

📌 CPU는 어떻게 동작하나요?

✅ 핵심 개념: 명령어 사이클 (Instruction Cycle)

CPU는 명령어 사이클을 반복하면서 프로그램을 실행합니다.
이 사이클은 다음과 같은 단계로 이루어집니다:

  1. Fetch (가져오기)
  2. Decode (해독하기)
  3. Execute (실행하기)
  4. Store (저장하기)

이 과정은 매우 빠르게 반복되며, 컴퓨터가 우리가 원하는 작업을 수행할 수 있도록 합니다.


🧩 각 단계 자세히 보기

🔸 1. Fetch - 명령어 가져오기

  • Program Counter(PC)가 가리키는 주소의 명령어를 메모리에서 읽어옴
  • 읽어온 명령어는 Instruction Register(IR)에 저장됨
  • PC(Program Counter)는 다음 명령어를 가리키도록 변경됨

구성 요소 사용: PC, 메모리, IR, CU


🔸 2. Decode - 명령어 해석

  • CU(Control Unit)가 IR에 저장된 명령어를 해석함
  • 어떤 연산을 수행할지, 어떤 레지스터를 쓸지 판단함
  • 필요한 제어 신호 생성 (ALU 동작, 데이터 이동 등)

구성 요소 사용: IR, CU, 제어 신호 생성 로직


🔸 3. Execute - 명령어 실행

  • ALU가 실제 연산을 수행 (산술, 논리, 비교 등)
  • 메모리 접근이나 I/O 동작도 이 단계에서 실행됨
  • 결과가 OUTREG, ACC 같은 레지스터에 저장됨

구성 요소 사용: ALU, 레지스터, CU, 버스


🔸 4. Store - 결과 저장

  • 연산 결과를 일반 목적 레지스터(GPR) 또는 메모리에 저장
  • 다음 명령어를 수행할 준비를 함

구성 요소 사용: 레지스터, 메모리, 버스


면접대비질문

🤔 CPU와 프로세서(Processor)의 차이는?

✅ 결론부터 말하면?

CPU는 프로세서의 한 종류이며, 전통적으로 가장 대표적인 일반 목적 프로세서입니다.
다시 말해, 프로세서(Processor)더 넓은 개념, CPU는 그 중 하나입니다.

🤔 왜 컴퓨터 하드웨어 구성요소를 설명할 때 "프로세서"가 아닌 "CPU"라고 부르나요?

✅ 핵심 답변

전통적인 컴퓨터 시스템에서는 CPU가 유일하고 중심적인 연산 장치였기 때문에,
컴퓨터의 구성 요소를 설명할 때는 "CPU"라는 용어가 일반적으로 사용되었습니다.


❓ 지금은 CPU보다 "프로세서"라는 용어가 더 적합한가?


✅ 결론

현대 컴퓨터 시스템을 설명할 때는 "프로세서(Processor)"라는 용어가 더 포괄적이고 적절합니다.
하지만 기초 컴퓨터 구조나 교육적 맥락에서는 여전히 "CPU"라는 표현이 널리 사용됩니다.


🧠 이유 정리

🔹 과거에는 CPU가 유일한 연산 장치였다

  • 전통적인 컴퓨터 구조에서는 CPU 하나가 모든 연산을 수행했음
  • 그래서 컴퓨터의 핵심 구성 요소로 CPU만 언급해도 충분했음

🔹 지금은 다양한 프로세서가 함께 동작하는 시대

현대 시스템에는 여러 종류의 연산 유닛이 존재함:

프로세서 종류역할
CPU범용 연산 처리 (운영체제, 애플리케이션 등)
GPU병렬 연산, 그래픽 처리
NPU / TPU인공지능, 머신러닝 연산
DSP디지털 신호 처리
ISP / VPU 등이미지 및 영상 처리

→ 이처럼 CPU 외의 특수 목적 프로세서들이 함께 존재하며 협업하는 구조임


📌 그래서 요즘은 이렇게 구분함:

설명 맥락적합한 용어
컴퓨터 구조 이론 설명CPU (전통적 중심 장치이기 때문)
현대 시스템 아키텍처 설명Processor (CPU + GPU + 기타 유닛 포함)
SoC 설명, 칩 설계 등Processing Unit / Core / Processor 등 사용
면접이나 기술 문서에서"CPU는 Processor의 한 종류"라고 구분하는 게 정확함

💬 면접 답변 예시

"과거에는 CPU가 컴퓨터 내 유일한 연산 장치였기 때문에 구성 요소 설명 시 중심적으로 다뤄졌지만,
현대 컴퓨터 시스템은 GPU, NPU 등 다양한 특수 목적 프로세서들이 함께 동작하므로
전체를 통칭하는 'Processor'라는 용어가 더 적절하다고 생각합니다.
물론 교육적 맥락이나 구조 설명에서는 여전히 CPU가 기준이 되기 때문에,
맥락에 따라 구분하여 사용하는 것이 중요합니다."


🔚 요약 정리

질문답변 요약
지금은 CPU보다 프로세서가 더 적합한가?현대 시스템 설명에는 "프로세서"가 더 정확
하지만 컴퓨터 구조 설명에서는 여전히 "CPU" 중심 표현이 자연스러움
profile
Frontend Engineers

0개의 댓글