저번 글에는 CPU의 Architecture에 대해 알아보았습니다
그러면 실제 서버나 노트북을 구매할때 어떤 CPU를 구입해야 운영하는 서비스에 알맞은 성능을 발휘 할 수 있는지 알려면, CPU 구성요소에 대해 조금 더 알아보며 명령어까지 학습하면 좋을 것 같습니다.
CPU : 컴퓨터에서 모든 연산과 명령을 처리하는 핵심 장치
CPU의 기능?
물리적인 CPU 개수 확인 명령어
grep "physical id" /proc/cpuinfo | sort -u | wc -l

위 사진에서 "물리적인" CPU의 갯수는 1개 입니다.
Core : CPU 내부의 처리 유닛으로, 하나의 코어가 하나의 명령어 흐름을 처리할 수 있으며, 하나의 물리적인 칩 아에 여러개의 Core가 존재 가능합니다.
Core의 기능?
Core의 개수 확인 명령어
grep "core id" /proc/cpuinfo | sort | uniq | wc -l

위 사진에서 확인한 Core의 개수는 4개 입니다.
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)
위의 내용을 종합해 보자면
물리적인 CPU는 1개, Core는 4개 Thread는 8개이므로
1개의 Core 당 2개의 Thread가 가용하다고 볼 수 있습니다.
한번에 볼 수 있는 명령어는
lscpu | egrep "Socket|Core|Thread"

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

그러면 궁금증이 생깁니다. Core수가 많고, Thread가 많으면 무조건 좋은 CPU일까요?
반은 맞고 반은 틀린 이야기 입니다.
CPU의 성능을 결정하는 요소는 많은 것들이 있는데, 그 중 대표적인 몇가지만 알아보겠습니다.
Core와 Thread는 앞에서 서술했기 때문에, Clock과 Cache Memory에 대해 알아보겠습니다
현재 서버의 Clock을 확인하려면
lscpu

위의 사진처럼 2400MHz = 2.4GHz 초당 약 24억 Cycle을 돌 수 있습니다.
Clock Speed ↑ / 성능 ↑
위의 언급된 것처럼 Clock Speed가 빠르면 무조건 좋을까요?
아래의 예시를 보며 판단해보시죠!
A가 B보다 Clock Speed는 좋지만 IPC가 낮아 CPU B가 더 우수한 성능을 보이며
IPC가 높을 수록 성능이 좋은 것을 알 수 있습니다!
IPC ↑ / 성능 ↑
Cache Memory도 계층적 구조로 나뉘게 됩니다.
| 계층 | 위치 | 용량 | 속도 | 설명 |
|---|---|---|---|---|
| L1 Cache | CPU Core 내 | 수십 KB | 매우 빠름 (1~2ns) | 데이터/명령어 분리됨 (L1d, L1i) |
| L2 Cache | CPU Core/Die | 수백 KB ~ 1MB | 빠름 (3~10ns) | 통합 캐시 |
| L3 Cache | CPU 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 ↑ / 성능 ↑