핵심 인사이트 (3줄 요약)
- CPU가 100% 열심히 일할 때의 상태를 **C0 (Active)**라고 부른다.
- OS 스케줄러가 코어에 할당할 작업이 없어
HLT (Halt)나MWAIT명령어를 내리면, 코어는 전기를 아끼기 위해 수면 상태인 **C1, C3, C6 (숫자가 클수록 깊은 수면)**로 단계적으로 진입한다.- C1이 클럭만 멈추는 선잠(Clock Gating)이라면, C6는 아예 코어 내부의 캐시를 비우고 전압 선을 싹둑 끊어버리는 기절 상태(Power Gating)로, 멀티코어 시대에 남는 코어를 재워 발열을 막는 가장 기본적인 전력 관리 기술이다.
Ⅰ. C0 상태의 전력 낭비와 HLT 명령어
CPU는 멍청해서 "일해라"라는 명령이 없으면 아무 일도 안 하면서 전기만 계속 퍼먹습니다.
- C0 (Active 상태): 코어가 덧셈을 하거나, 캐시를 뒤지거나, 분기 예측을 하며 바쁘게 땀(열)을 흘리는 정상 작동 상태입니다.
- 만약 운영체제(Windows)가 큐를 봤는데 줄 코드가 없습니다(Idle). 과거에는 빈 루프(
while(1))를 돌며 전기를 활활 태웠지만, 이제는 OS가 **HLT (Halt, 멈춰!)**라는 기계어 명령을 코어에 꽂아 넣습니다.
이 HLT 명령을 기점으로 코어는 C0에서 벗어나 수면 1단계(C1)로 빠져듭니다.
📢 섹션 요약 비유: 식당 주방장(코어)에게 주문(작업)이 없습니다. 주방장은 주문이 올 때까지 빈 프라이팬을 미친 듯이 볶으며 가스비를 날립니다(C0의 낭비). 매니저(OS)가 다가와 "주문 올 때까지 가스 불 끄고 의자에 앉아 있어라!(HLT)"라고 명령하는 것입니다.
Ⅱ. 코어 C-State의 3단계 수면(Sleep) 깊이
코어가 얼마나 깊게 잠드느냐에 따라 켜는 속도(Latency)와 아끼는 전기가 다릅니다.
1. C1 State (선잠 / Clock Gating)
- 조치: 코어 내부의 연산기(ALU, FPU)로 들어가는 시계(Clock) 신호만 똑 끊습니다 (클럭 게이팅).
- 상태: 스위칭이 멈춰 동적 전력은 절약되지만, 메인 전압($V_{DD}$)은 계속 들어와서 누설 전력은 발생합니다.
- 복귀: 인터럽트가 오면 0.1 마이크로초 만에 팟! 하고 깨어나 즉시 일합니다.
2. C3 State (깊은 잠 / L1/L2 캐시 비우기)
- 조치: 클럭을 끄는 걸 넘어, 코어 내부의 L1, L2 캐시에 있던 데이터를 전부 윗단(L3 캐시나 RAM)으로 복사해서 치워버립니다. 그리고 캐시에 들어가는 전압을 확 낮춥니다.
- 복귀: 깨어날 때 캐시를 다시 채워야 하므로 수십 마이크로초가 걸립니다.
3. C6 State (기절 / Power Gating)
- 조치: 코어의 메인 전원 선 자체를 물리적인 스위치(Sleep Transistor)로 끊어버립니다 (전력 게이팅). 전압이 0V가 되므로 누설 전력조차 100% 사라져 전력 소모가 0W가 됩니다. 코어 내부의 레지스터 상태(문맥)는 코어 밖의 특수 메모리에 피난시켜 둡니다.
- 복귀: 전압을 다시 올리고 상태를 복원하느라 수백 마이크로초가 걸려 심한 지연이 생깁니다.
C-State 심도 다이어그램 (ASCII)
┌── C0 (열일) ─────────────────────────────────────────────────────────────┐
│ 전압 1.2V / 클럭 5GHz (100% 활성) │
└──────┬───────────────────────────────────────────────────────────────────┘
▼ (HLT 명령어)
┌── C1 (선잠) ─────────────────────────────────────────────────────────────┐
│ 전압 1.2V / 클럭 0Hz (ALU 등 일부만 멈춤. 즉각 기상 가능) │
└──────┬───────────────────────────────────────────────────────────────────┘
▼ (시간 경과)
┌── C6 (기절) ─────────────────────────────────────────────────────────────┐
│ 전압 0.0V / 클럭 0Hz (코어 메인 전원 물리적 차단. 누설 전력 0W) │
└──────────────────────────────────────────────────────────────────────────┘
📢 섹션 요약 비유:
- C1 (선잠): 의자에 앉아 눈만 감고 있습니다. 부르면 즉시 일어납니다. (대기 전력 소모)
- C3 (깊은 잠): 책상을 싹 치우고 탈의실 침대에 눕습니다. 깨어나면 책상을 세팅할 시간이 필요합니다.
- C6 (기절): 아예 퇴근해서 집으로 가버렸습니다. 전등, 난방비를 100% 아낄 수 있지만, 다시 출근해서 일하기까지(지연 시간) 가장 오래 걸립니다.
Ⅲ. 터보 부스트(Turbo Boost)와의 환상적인 콜라보
다중 코어(8코어) 시대에 이 C-State는 엄청난 시너지를 냅니다. 게임을 켰는데 이 게임이 코어 2개밖에 못 씁니다.
- 나머지 6개 코어는 놀고 있으므로, 하드웨어가 이 6개를 가장 깊은 수면인 C6(0W) 상태로 강제 기절시킵니다.
- 6개 코어가 먹을 뻔했던 전기와 온도 여유분(TDP Headroom)이 텅 비게 됩니다.
- CPU는 이 텅 빈 전기 여유분을 일하고 있는 2개의 코어(C0)에 몰아주어, 원래 3GHz로 돌던 코어를 5GHz로 미친 듯이 오버클럭(Turbo Boost) 시켜버립니다!
즉, 남는 코어를 철저히 죽여서 번 돈(전력)으로, 일하는 코어에 보너스(클럭)를 쏟아부어 단일 스레드 성능(STP)을 극한으로 끌어올리는 것이 현대 CPU의 가장 위대한 전력 관리 마법입니다.