CPU 기본 구조와 동작 원리

주요 구성 요소

구성 요소역할
프런트엔드명령어를 가져오고 경계를 찾으며 해독한다.
분기 예측기조건문과 함수 호출의 다음 경로를 예측한다.
스케줄러·리오더 버퍼준비된 명령어를 실행 유닛에 보내고 프로그램 순서대로 결과를 확정한다.
정수 ALU덧셈, 논리, 비교, 주소 계산 등을 수행한다.
FPU·벡터 유닛부동소수점과 SIMD 벡터 연산을 수행한다.
로드·스토어 유닛캐시와 메모리에서 데이터를 읽고 쓴다.
레지스터현재 연산에 필요한 가장 가까운 저장 공간이다.
캐시느린 DRAM 접근을 줄이기 위한 고속 메모리다.
인터커넥트코어, 캐시, 메모리, I/O 다이를 연결한다.

파이프라인

한 명령어가 모든 단계를 끝낼 때까지 기다리면 실행 유닛이 자주 비게 된다. 파이프라인은 여러 명령어의 서로 다른 단계를 겹쳐 처리한다. 단계가 깊으면 높은 클럭을 얻기 쉬울 수 있지만, 분기 예측이 틀렸을 때 버려야 하는 작업이 늘어날 수 있다. 2000년대 초 NetBurst 계열은 긴 파이프라인과 높은 클럭을 중시한 대표 사례다.

비순차 실행과 명령어 은퇴

프로그램 순서상 앞선 명령어가 메모리를 기다리는 동안, 데이터 의존성이 없는 뒤쪽 명령어를 먼저 실행할 수 있다. 이를 비순차 실행(Out-of-Order Execution)이라 한다. 다만 프로그램이 보는 결과는 원래 순서와 일치하도록 은퇴 단계에서 확정한다.

분기 예측과 추측 실행

분기 예측기는 조건문이 어느 경로로 진행될지 미리 추정한다. 예측이 맞으면 파이프라인이 계속 움직이고, 틀리면 추측 실행 결과를 버리고 올바른 경로를 다시 채운다. 성능에 중요하지만, 추측 실행과 캐시 상태가 결합되면 보안 문제가 될 수 있으므로 CPU 마이크로코드와 운영체제 완화책이 사용된다.

캐시 계층

  • L1 캐시: 코어에 가장 가깝고 작다. 명령어와 데이터 캐시가 분리되는 경우가 많다.
  • L2 캐시: L1보다 크지만 지연이 늘어난다. 코어 전용 또는 소수 코어 공유 구조가 있다.
  • L3 캐시: 여러 코어가 공유하는 마지막 단계 캐시가 일반적이다.
  • SLC(System Level Cache): 모바일 SoC에서 CPU뿐 아니라 GPU·NPU·ISP가 공유할 수 있다.
  • 3D 적층 캐시: 캐시 다이를 수직으로 적층해 용량을 늘린다. 열과 클럭 설계의 제약도 고려해야 한다.

메모리 컨트롤러와 채널

현대 CPU는 메모리 컨트롤러를 패키지 또는 다이에 통합하는 경우가 일반적이다. 채널 수가 많으면 이론적 대역폭을 늘릴 수 있지만, 실제 성능은 DIMM 구성, 속도, 타이밍, NUMA 배치와 프로그램의 접근 패턴에 따라 달라진다.

SMT와 하이브리드 코어

  • SMT: 한 물리 코어가 둘 이상의 하드웨어 스레드 상태를 유지해 실행 유닛의 빈 시간을 활용한다. 코어가 두 배가 되는 것은 아니다.
  • 하이브리드 코어: 성능 지향 코어와 효율 지향 코어를 함께 배치한다. 운영체제 스케줄러와 펌웨어가 적절한 코어에 작업을 배치해야 한다.

정상 동작 확인

Windows에서는 작업 관리자와 HWiNFO 같은 도구로 코어 수, 클럭, 사용률, 온도와 전력을 확인할 수 있다. Linux에서는 다음 명령을 사용할 수 있다.

lscpu
  • 목적: ISA, 코어·스레드, NUMA, 캐시 정보를 확인한다.
  • 실행 환경: Linux 터미널
  • 권한: 일반 사용자
  • 주의: 가상 머신에서는 하이퍼바이저가 노출한 정보만 보인다.
cat /proc/cpuinfo
  • 목적: 논리 CPU별 식별 정보와 기능 플래그를 확인한다.
  • 실행 환경: Linux
  • 권한: 일반 사용자
  • 주의: 제품의 전체 플랫폼 지원 여부를 보증하는 자료는 아니다.

영상 자료

구조와 특징

쉽게 이해하기

CPU는 프로그램의 명령을 읽고 계산·제어 작업을 하는 프로세서다. 흔히 “컴퓨터의 두뇌”라고 부르지만 실제 PC는 CPU·RAM·GPU·저장장치·각종 컨트롤러가 함께 동작한다.

관련 문서

참고 자료