[Hardware] CPU, Core, Thread의 개념

Asher·2025년 4월 15일

Hardware

목록 보기
2/3
post-thumbnail

0. 도입

저번 글에는 CPU의 Architecture에 대해 알아보았습니다
그러면 실제 서버나 노트북을 구매할때 어떤 CPU를 구입해야 운영하는 서비스에 알맞은 성능을 발휘 할 수 있는지 알려면, CPU 구성요소에 대해 조금 더 알아보며 명령어까지 학습하면 좋을 것 같습니다.


1. CPU란?

  • CPU : 컴퓨터에서 모든 연산과 명령을 처리하는 핵심 장치

  • CPU의 기능?

    • 명령어를 해석하고 실행
    • 산술 연산, 논리 연산, 입출력 제어
  • 물리적인 CPU 개수 확인 명령어

    grep "physical id" /proc/cpuinfo | sort -u | wc -l

위 사진에서 "물리적인" CPU의 갯수는 1개 입니다.

2. Core란?

  • Core : CPU 내부의 처리 유닛으로, 하나의 코어가 하나의 명령어 흐름을 처리할 수 있으며, 하나의 물리적인 칩 아에 여러개의 Core가 존재 가능합니다.

  • Core의 기능?

    • 각 Core는 독립적으로 명령어 처리 가능
    • 멀티코어라면 동시에 여러 작업을 병렬로 처리 가능
  • Core의 개수 확인 명령어

    grep "core id" /proc/cpuinfo | sort | uniq | wc -l

위 사진에서 확인한 Core의 개수는 4개 입니다.

3. Thread란?

  • Thread : Core가 동시에 처리할 수 있는 작업 흐름 단위

  • Thread의 기능?

    • Core 내에서 동시성 향상
    • Thread는 하나의 프로그램 내부에서 실행되는 작은 단위
  • Thread의 개수 확인 명령어

    grep "processor" /proc/cpuinfo | wc -l

위 사진에서 확인한 Thread의 개수는 8개 입니다.

1개의 물리 Core에서 여러개의 Thread를 쓸 수 있는 이유는
Hyper-Threading == SMT(Simultaneous Multi-Threading)이 있어 가능합니다!
Intel → Hyper-Threading
AMD → SMT(Simultaneous Multi-Threading)


4. CPU vs Core vs Thread

위의 내용을 종합해 보자면
물리적인 CPU는 1개, Core는 4개 Thread는 8개이므로
1개의 Core 당 2개의 Thread가 가용하다고 볼 수 있습니다.

한번에 볼 수 있는 명령어는

lscpu | egrep "Socket|Core|Thread"

  • CPU, Core, Thread를 비교한 표를 아래에 적어두겠습니다.
특징CPUCoreThread
정의컴퓨터의 두뇌, 명령어 해석 및 실행의 핵심 하드웨어 장치CPU 내부에 있는 독립적인 연산 처리 장치 (물리적 단위)소프트웨어적인 작업 흐름 또는 실행 단위 (논리적 단위)
역할명령어 처리, 데이터 연산, 시스템 제어, 주소 지정 등독립적인 명령어 스트림 실행, 병렬 처리코어 내에서 동시성 향상, 멀티태스킹 성능 향상
물리적/논리적물리적인 하드웨어 칩물리적인 하드웨어 단위논리적인 실행 단위 (하드웨어적으로 지원될 수 있음)
독립성전체 시스템의 작동을 총괄각 코어는 독립적으로 작업 수행 가능하나의 코어 내에서 여러 스레드가 번갈아 가며 또는 동시에 실행
성능 영향전체 시스템 성능의 가장 중요한 요소멀티태스킹 및 병렬 처리 성능에 큰 영향코어의 효율성을 높여 전반적인 처리량 향상에 기여
수량일반적으로 시스템에 1개CPU 칩 내에 1개 이상 존재 가능 (멀티 코어)코어당 1개 또는 2개 이상 존재 가능 (하이퍼스레딩/SMT 지원 시)

위 CPU를 그림으로 그려보자면 아래의 사진처럼 구성되있음을 알 수 있습니다.

  • 예시 사진

5. CPU의 성능

그러면 궁금증이 생깁니다. Core수가 많고, Thread가 많으면 무조건 좋은 CPU일까요?

반은 맞고 반은 틀린 이야기 입니다.

CPU의 성능을 결정하는 요소는 많은 것들이 있는데, 그 중 대표적인 몇가지만 알아보겠습니다.

  • Core
  • Thread
  • 클럭(Clock) Speed
  • IPC
  • Cache Memory

Core와 Thread는 앞에서 서술했기 때문에, Clock과 Cache Memory에 대해 알아보겠습니다

Clock?

  • CPU가 초당 몇 번의 명령어 사이클(Clock Cycle)을 실행할 수 있는지를 나타낸다.
  • 단위는 Hz(헤르츠)로 표현한다.
  • 1Hz(헤르츠)는 1초에 1번의 Clock Cycle을 의미한다.

현재 서버의 Clock을 확인하려면

lscpu

위의 사진처럼 2400MHz = 2.4GHz 초당 약 24억 Cycle을 돌 수 있습니다.

Clock Speed ↑ / 성능 ↑

IPC?

  • IPC(Instructions Per Cycle)는 1클럭 사이클당 처리할 수 있는 명령어 수를 의미한다.
  • IPC = 초당 실행된 명령어 수 / 초당 클럭 사이클 수

위의 언급된 것처럼 Clock Speed가 빠르면 무조건 좋을까요?
아래의 예시를 보며 판단해보시죠!

  • 예시
    CPU A: 4GHz, IPC 1.0 → 4G instr/sec
    CPU B: 3GHz, IPC 2.0 → 6G instr/sec

A가 B보다 Clock Speed는 좋지만 IPC가 낮아 CPU B가 더 우수한 성능을 보이며
IPC가 높을 수록 성능이 좋은 것을 알 수 있습니다!

IPC ↑ / 성능 ↑

Cache Memory?

  • CPU 내부 또는 가까이에 위치한 임시 저장 공간
  • 자주 사용하는 데이터나 명령어를 미리 저장해두고, CPU가 빠르게 접근하도록 합니다.

Cache Memory도 계층적 구조로 나뉘게 됩니다.

계층위치용량속도설명
L1 CacheCPU Core 내수십 KB매우 빠름 (1~2ns)데이터/명령어 분리됨 (L1d, L1i)
L2 CacheCPU Core/Die수백 KB ~ 1MB빠름 (3~10ns)통합 캐시
L3 CacheCPU Core 외부수 MB ~ 수십 MB느림 (10~20ns)모든 코어가 공유

L1 → L2 → L3 → 주기억장치 순으로 탐색하며 Cache Hit율이 올라갈 수록 성능은 향상됩니다.

위의 그림을 보면
L1d cache(데이터 캐시) : 32KiB
L1i cache(명령어 캐시) : 32KiB
L2 cache : 256KiB
L3 cache : 12288KiB

을 알 수 있습니다!

마찬가지로 Cache 크기가 커지면 성능도 좋아지겠죠?

Cache Memory ↑ / 성능 ↑

profile
System Engineer의 발전기록

0개의 댓글