CPU

김재현·2023년 7월 31일

Server

목록 보기
1/2
post-thumbnail

CPU

CPU: Central Processing Unit 의 약자로 컴퓨터의 연산과 제어를 담당하는 핵심 하드웨어이다.
컴퓨터의 '뇌' 와 비유되어 프로그램의 명령어를 해석하고 실행하여 컴퓨터의 동작을 조정한다.

컴퓨터의 가장 핵심적인 부분으로 전반적인 성능에 영향을 미치고,
멀티코어 CPU를 사용하여 다중 작업을 동시에 처리함으로 써 시스템 처리 속도를 향상시킨다.

1. 제어 유닛(Control Unit)

프로그램의 명령어를 읽어 해석하고, 이해된 명령어에 따라 다른 하드웨어 구성 요소들을 조정하고 제어한다.
CPU의 명령어 실행 순서를 결정하며 레지스터와 캐시 메모리를 관리한다.

2. 산술 논리 연산 장치(ALU, Arithmetic Logic Unit)

산술 연산(덧셈, 뺄셈, 곱셈, 나눗셈 등)과 논리 연산(AND, OR, NOT 등)을 수행한다.
ALU는 데이터를 처리하고 계산하는 역할을 한다.

3. 레지스터(Register)

CPU 내에 위치한 소량의 고속 메모리로, 데이터를 저장하고 처리하는 데 사용된다.
레지스터는 일시적으로 프로그램이나 계산 결과를 저장하거나, CPU 간에 데이터를 주고받는 데 사용된다.

4. 캐시 메모리(Cache Memory)

CPU와 메인 메모리(램) 사이에 위치한 속도가 빠른 메모리이다.
메인 메모리에 접근하는 데 비해 캐시 메모리의 접근 속도가 더 빠르기 때문에, 빈번하게 사용되는 데이터와 명령어를 미리 캐시 메모리에 저장해두어 CPU의 성능을 향상시킨다.

5. 버스(Bus)

CPU 내의 구성 요소들과 다른 하드웨어 간에 데이터와 명령어를 전송하는 통로이다.
데이터 버스와 주소 버스, 제어 버스로 구성되어 있다.

CPU cores and threads

CPU의 코어와 스레드는 컴퓨터의 성능과 작업 처리 능력에 영향을 미치는 중요한 요소이다.

1. 코어(Core)

CPU의 코어는 각각의 독립적인 계산 유닛이다.
즉, CPU의 코어가 많을수록 더 많은 작업을 동시에 처리할 수 있다.
예를 들어, 코어가 4개인 CPU는 4개의 작업을 동시에 처리할 수 있다.
이러한 멀티코어 프로세서는 멀티태스킹과 멀티스레딩 작업에서 더 효율적으로 작동할 수 있다.

2. 스레드(Thread)

스레드는 CPU에서 실행되는 가장 작은 단위의 작업이다.
CPU의 스레드 수는 코어의 개수와 밀접한 관련이 있다.
스레드는 각각의 코어에서 실행되며, 코어당 여러 개의 스레드가 실행될 수 있다.
예를 들어, 코어당 2개의 스레드가 실행될 수 있는 CPU는 4코어 8스레드라고 표현된다.
이러한 멀티스레딩 기술을 사용하면, 하나의 코어가 여러 작업을 처리할 수 있으므로 CPU의 성능을 향상시킬 수 있다.

Cores

리눅스에서는 다음 명령어를 사용하여 CPU의 코어 및 스레드 수를 확인할 수 있다.

1. 코어 수 확인하기

# cat /proc/cpuinfo | grep processor | wc -l

2. 스레드 수 확인하기

# cat /proc/cpuinfo | grep "cpu cores" | uniq | awk '{print $4}'

Clock Speed

CPU가 초당 실행할 수 있는 사이클 수를 의미한다.
사이클 수 = CPU 내부에서 발생하는 신호의 주파수(Ghz 단위로 표기)

L1 ~ L3 Cache

CPU 속도 및 성능 향상을 위해 데이터를 임시 저장하는 메모리 계층이다.
속도: L1 > L2 > L3
용량: L1 < L2 < L3

Hyper-Threading

하나의 물리적 코어가 운영 체제에서 두 개의 논리적 코어처럼 보이게 하는 기술로,
여러 작업을 동시에 처리하면서 CPU 성능을 높이는 게 목적이다.

  • 장점: 동시에 많은 작업을 처리 가능하다.
  • 단점: 모든 애플리케이션의 성능 향상을 보장하진 않는다.

하이퍼스레딩 성능 저하 이유
1. CPU 자원 경합
두 논리 코어는 L1/L2 캐시, 실행 유닛, 파이프라인, TLB 등을 공유
자원을 동시에 필요로 하는 워크로드에서 서로 자원을 사용하려는 현상이 생겨 처리 속도 저하
2. 캐시 미스
두 스레드가 같은 코어 캐시를 공유하므로 서로 다른 데이터가 같은 캐시로 올라올 때 캐시 교체가 많아져 미스율 증가
메모리 접근 패턴이 랜덤한 프로그램에서는 메모리 병목 증가
3. 실시간 또는 지연 민감형 워크로드
하이퍼스레딩은 OS 스케줄러가 하나의 물리 코어에 두 스레드를 배치하므로, 한 스레드가 자원을 독점할 수 없어 지연(Latency)이 증가
4. OS 스케줄러의 비효율적 스레드 배치
특정 OS나 커널 버전에서는 논리 코어를 물리 코어와 동일하게 인식해 스케줄링 시 비효율적 스레드 배치 발생

SMT(Simultaneous Multi-Threading)

하나의 물리 CPU 코어가 여러 개의 스레드를 동시 실행=하도록 하는 기술이다.
보통 단일 스레드는 CPU 파이프라인 자원(명령어 디코더, ALU, FPU,...)을 100% 활용하지 못하고 유휴 상태가 발생한다.
이 유휴 시간을 다른 스레드가 활용하도록 하여 CPU 자원 효율을 높인다.

AVX(Advanced Vector Extensions)

인텔과 AMD CPU에 적용된 벡터 기반 SIMD(단일 명령어 다중 데이터) 명령어 세트이다.
즉, 하나의 명령어로 여러 개의 데이터를 한번에 병렬처리 할 수 있게 만든 기술이다.

SIMD(Single Instruction, Multiple Data)
하나의 명령어로 여러 개의 데이터를 동시 처리하는 병렬 연산 방식이다.

0개의 댓글