핵심 인사이트 (3줄 요약)
- 앞서 배운 C-State(Core State)가 "CPU가 놀 때(Idle) 어떻게 잠을 재울 것인가?"에 대한 수면 모드라면, **P-State(Performance State)**는 "CPU가 일할 때(Active, C0) 얼마나 빡세게 뛸 것인가?"에 대한 달리기 모드다.
- P-State는 운영체제(OS)가 현재의 작업 부하를 보고 하드웨어의 클럭(Clock)과 전압(Voltage)의 단계를 0부터 n까지 조절하는 DVFS (동적 전압 주파수 스케일링)의 ACPI 표준 구현체다.
- P0 상태일 때가 CPU가 허락한 가장 빠르고 전기를 많이 먹는 상태이며, 번호가 커질수록(P1, P2...) 천천히 걷는 절전 모드가 된다.
Ⅰ. P-State의 개념: 일하는 중에도 기어 변속이 필요하다
CPU가 C-State를 벗어나 완전히 깨어나서 연산을 수행하는 상태를 C0 상태라고 합니다. 그런데 C0 상태라고 해서 무조건 100% 풀 파워로 달릴 필요는 없습니다.
- 게임을 돌릴 때는 5GHz로 미친 듯이 달려야 합니다.
- 웹 브라우저에서 스크롤을 내릴 때는 2GHz로 설렁설렁 걸어도 충분합니다.
이때 OS(윈도우/리눅스)는 CPU의 부담감을 측정하여, C0 상태 내부에서 자동차의 기어를 바꾸듯 P-State를 조절합니다. P-State의 단계는 CPU 제조사가 공장에서 구워둔 전압/클럭 테이블에 따라 결정됩니다.
📢 섹션 요약 비유: C-State는 쉴 때 '의자에 앉을지(C1) 침대에 누울지(C6)'를 정하는 것이고, P-State는 달리기(C0)를 할 때 '전력 질주(P0)를 할지 빠른 걸음(P2)으로 걸을지' 페이스를 조절하는 호흡법입니다.
Ⅱ. P-State의 등급과 터보 부스트(Turbo Boost)
일반적으로 숫자가 낮을수록 고성능입니다.
- P0 (Maximum): 기본 스펙상 낼 수 있는 가장 높은 클럭과 전압. (예: 4.0GHz)
- P1, P2... Pn (Throttled): 전기를 아끼기 위해 클럭과 전압을 낮춘 상태. (예: Pn은 800MHz)
터보 부스트의 비밀 (P-State의 꼼수)
최신 인텔/AMD CPU는 **"터보 부스트(Turbo Boost)"**라는 기능을 제공합니다. 기본 클럭이 4.0GHz인데 5.0GHz까지 순간적으로 튀어 오르는 기능입니다.
이 터보 부스트는 ACPI 규격상 어떻게 처리될까요? OS는 P0 이상의 상태를 모릅니다. 그래서 하드웨어는 P0 상태를 **'터보 부스트가 터진 5.0GHz'**로 속여서 OS에 보고하고, 기본 클럭인 4.0GHz를 P1 상태로 둡니다. 즉, OS가 "가장 빠르게 달려(P0)!"라고 명령하면, CPU 하드웨어가 스스로 온도와 전력 여유분을 계산해서 알아서 5.0GHz로 오버클럭을 때려버리는 것입니다.
📢 섹션 요약 비유: P1이 사람이 뛰는 최고 속도라면, P0는 부스터를 달고 뛰는 속도입니다. 단, 부스터(P0)는 CPU의 체온이 100도를 넘지 않는 찰나의 순간(수십 초)에만 허락되는 한정판 기술입니다.
Ⅲ. 하드웨어 P-State (HWP / CPPC)의 등장
과거에는 OS(윈도우)가 "너 지금 50% 정도 힘드네? P3 모드로 내려가"라며 1밀리초(1ms) 단위로 명령을 내렸습니다. 하지만 현대의 클라우드 워크로드는 1마이크로초 단위로 트래픽이 튀기 때문에 OS의 판단이 너무 굼떴습니다.
해결책: Intel Speed Shift (HWP, Hardware P-States) / AMD CPPC 인텔 6세대(스카이레이크)부터는 OS가 기어를 변속하는 권한을 포기했습니다. OS는 단지 "이 프로그램은 성능이 중요해(또는 배터리가 중요해)"라는 **방향성(Hint)**만 던져줍니다. 그러면 **CPU 내부에 달린 마이크로컨트롤러(PCU)**가 1나노초 단위로 작업량을 분석해 OS 몰래 독단적으로 클럭을 P0부터 Pn까지 미친 듯이 휙휙 바꿔버립니다. 속도가 수십 배 빠르고 정교해졌습니다.