Chapter 12

전력: 동적·누설·DVFS

게임을 30분 하면 휴대폰이 손난로처럼 따뜻해지고 배터리가 20% 넘게 줄어든다. 그 에너지는 어디로 갔을까? 화면이 꺼진 채 하룻밤을 보내도 배터리가 몇 %밖에 줄지 않는 것은 또 어떻게 가능할까? 답은 같은 곳에 있다. 칩 안에서 수십억 개의 아주 작은 커패시터가 1초에 수십억 번 충전되고 방전되며, 꺼져 있어야 할 트랜지스터로도 전류가 조금씩 샌다. 이 장에서는 그 두 가지 전력의 정체를 직접 재 보고, SoC가 전압·주파수를 쉴 새 없이 바꾸고 블록을 통째로 끄면서 같은 일을 더 적은 에너지로 해내는 방법을 배운다.

스위칭 한 번의 값

디지털 회로의 모든 신호선은 결국 작은 커패시터다. 게이트 출력은 다음 게이트들의 입력(게이트 산화막), 그 사이를 잇는 배선, 자기 자신의 드레인 접합을 함께 끌고 다닌다. 이것들을 하나로 묶어 출력에 매달린 부하 커패시턴스 \(C\)라 부른다. 신호를 0에서 1로 바꾼다는 것은 이 커패시터를 전원 전압 \(V\)까지 충전하는 일이고, 1에서 0으로 바꾼다는 것은 그 전하를 접지로 버리는 일이다(인버터의 구조는 2장).

아래 그림은 CMOS 인버터 하나가 부하 \(C\)를 구동하는 모습이다. 입력이 0이면 위쪽 PMOS가 켜져 전원에서 전하가 흘러들고, 입력이 1이면 아래쪽 NMOS가 켜져 전하가 접지로 빠진다. 오른쪽 장부는 전원이 내준 에너지가 어디로 갔는지를 실시간으로 적는다. 전압과 커패시턴스를 바꾸고, 입력 데이터의 종류도 바꿔 보자.

지난 사이클 수0
충전 횟수 / 사이클 = α—
사이클당 평균 에너지—
α·C·V² (공식)—
그림 12-1. 만져 보기충전할 때 전원은 \(Q\cdot V = CV^2\)를 내주지만 커패시터에 남는 것은 \(\tfrac12 CV^2\)뿐이고, 나머지 절반은 PMOS의 저항에서 곧바로 열이 된다. 방전할 때는 저장된 \(\tfrac12 CV^2\)가 NMOS에서 열이 된다. 결국 한 번 충전·방전할 때마다 \(CV^2\)가 전부 열로 사라진다. 클럭은 사이클마다 한 번 충전되므로 α = 1, 무작위 데이터는 0→1 전이가 네 사이클에 한 번꼴이라 α ≈ 0.25다.

여기서 놀라운 점은 PMOS의 저항값이 결과에 들어가지 않는다는 것이다. 저항이 크면 천천히 충전되고 작으면 빨리 충전될 뿐, 저항에서 열로 사라지는 에너지는 언제나 \(\tfrac12 CV^2\)다. 즉 에너지를 줄이려면 \(C\)나 \(V\)를 줄이거나, 충전 횟수 자체를 줄여야 한다. 트랜지스터를 더 좋게 만들어도 이 식을 피할 수는 없다. 특히 전압은 제곱으로 들어가므로 가장 강력한 손잡이다.

$$E_{\text{충전}} = \underbrace{Q V}_{\text{전원이 내줌}} = C V^2 = \underbrace{\tfrac12 C V^2}_{\text{PMOS 열}} + \underbrace{\tfrac12 C V^2}_{\text{저장 → 방전 때 NMOS 열}}$$
\(C\)는 출력에 매달린 전체 커패시턴스(다음 게이트 입력 + 배선 + 자기 접합), \(V\)는 전원 전압. 게이트 하나의 \(C\)는 3 nm급 공정에서 대략 0.1~1 fF, 1 mm 배선은 약 100~200 fF다.
전압을 0.8 V에서 0.6 V로 낮추면 한 번 충전할 때의 에너지는 얼마나 줄까?

그림 12-1에서 확인하기 전에 먼저 계산해 보자.

답 보기

\((0.6/0.8)^2 = 0.5625\), 즉 44% 가까이 준다. 전압을 25% 낮췄는데 에너지는 거의 절반이 됐다. 대신 트랜지스터가 내는 전류가 줄어 충전이 느려진다. 이 대가가 무엇인지는 4절에서 본다.

칩 전체로 키우기: P = αCV²f

칩 전체의 전력은 그림 12-1의 인버터 수십억 개를 더한 것이다. 모든 노드의 커패시턴스를 더한 값을 \(C\), 사이클마다 실제로 0→1로 바뀌는 노드의 비율을 활동 계수(Activity factor) \(\alpha\), 1초에 반복하는 사이클 수를 클럭 주파수 \(f\)라 하면 동적 전력(Dynamic power)은 다음과 같다.

$$P_{\text{dyn}} = \alpha\, C\, V^2 f \;+\; P_{\text{단락}}$$
\(\alpha C\)를 묶어 유효 스위칭 커패시턴스 \(C_{\text{eff}}\)라고도 한다. \(P_{\text{단락}}\)은 입력이 천천히 바뀌는 동안 PMOS와 NMOS가 잠깐 동시에 켜져 흐르는 단락 전류로, 보통 동적 전력의 10% 안팎이다.

숫자를 넣어 보자. 큰 CPU 코어 하나에 스위칭될 수 있는 커패시턴스가 모두 6 nF쯤 있고, 그중 평균 15%가 매 사이클 바뀐다고 하자. 1.0 V, 3.2 GHz라면 \(0.15 \times 6\,\text{nF} \times 1^2 \times 3.2\,\text{GHz} \approx 2.9\) W다. 1 V에서 2.9 W라는 것은 코어 하나에 약 3 A가 흐른다는 뜻이기도 하다. 이 큰 전류를 칩 안까지 안정적으로 보내는 문제는 13장에서 다룬다.

동적 전력—
사이클당 에너지—
전원 전류—
V만 10% 낮추면 (×0.81)—
그림 12-2. 만져 보기가로축은 로그 눈금의 전력이다. 슬라이더를 움직여 점이 어느 기기의 전력 영역에 오는지 보자. 기준 표식은 대략값이다. 휴대폰 SoC는 손에 쥐는 기기라 지속 전력이 3~5 W로 묶이는데(13장), 큰 코어 하나가 최고 클럭에서 그 예산을 거의 다 써 버린다.

네 손잡이는 서로 성격이 다르다. \(C\)는 설계할 때 정해진다. 트랜지스터 크기, 배선 길이, 회로 구조가 결정한다. \(\alpha\)는 설계와 소프트웨어가 함께 정한다. 쓰지 않는 회로의 클럭을 끊으면(8절의 클럭 게이팅) 그 회로의 \(\alpha\)는 0이 된다. 버스에 같은 데이터를 계속 싣거나, 값이 거의 바뀌지 않게 부호화하는 것도 \(\alpha\)를 줄인다. \(V\)와 \(f\)는 칩이 동작하는 도중에도 바꿀 수 있는 손잡이다. 이 둘을 함께 바꾸는 기술이 6절의 DVFS다.

클럭 자체가 가장 바쁜 신호다

클럭은 사이클마다 반드시 한 번 오르내리므로 \(\alpha = 1\)이고, 칩의 모든 플립플롭까지 가지를 뻗은 거대한 배선망(클럭 트리)을 구동한다. 그래서 클럭 분배만으로 칩 동적 전력의 20~40%를 쓰는 일이 흔하다. 클럭 트리는 14장에서 자세히 본다.

꺼진 스위치로 새는 전류

이상적인 스위치라면 꺼졌을 때 전류가 0이어야 한다. 실제 트랜지스터는 그렇지 않다. 게이트 전압이 문턱 전압 \(V_{th}\)보다 낮아도, 채널의 전자 중 열에너지가 큰 일부는 장벽을 넘어 흘러간다. 이것이 문턱 아래 누설(Subthreshold leakage)이다. 볼츠만 분포를 따르기 때문에 이 전류는 게이트 전압에 지수적으로 반응한다.

$$I_{\text{sub}} \approx I_0\, e^{(V_{GS}-V_{th})/(n\,kT/q)}, \qquad S = n\,\frac{kT}{q}\ln 10 \approx 60\text{–}90\ \text{mV/decade}$$
\(kT/q\)는 열전압(25 °C에서 25.7 mV), \(n\)은 1.0~1.5의 비이상 계수, \(S\)는 전류를 10배 바꾸는 데 필요한 게이트 전압인 문턱 아래 기울기(subthreshold swing). 실온의 이론 한계는 \(n=1\)일 때 약 60 mV/decade다.

이 식에서 두 가지가 바로 읽힌다. 첫째, \(V_{GS}=0\)일 때의 누설 \(I_{\text{off}}\)는 \(V_{th}\)를 \(S\)만큼 낮출 때마다 10배 늘어난다. 빠른 트랜지스터를 원해 \(V_{th}\)를 낮추면 누설이 폭발한다. 둘째, 온도가 오르면 \(kT/q\)가 커져 기울기가 완만해지고, 동시에 \(V_{th}\)도 1 K당 약 1 mV씩 내려간다. 두 효과가 겹쳐 누설은 온도에 거의 지수로 늘어난다. 아래 그래프에서 곡선을 좌우로 끌어 \(V_{th}\)를 바꾸고, 온도를 올려 보자.

꺼짐 전류 Ioff—
켜짐 전류 Ion (0.75 V)—
Ion/Ioff—
25 °C 대비 누설—
그림 12-3. 끌어 보기세로축은 로그 눈금의 드레인 전류(채널 폭 1 µm당), 가로축은 게이트 전압이다. 곡선을 좌우로 끌면 \(V_{th}\)가 바뀐다. 문턱 아래(왼쪽)에서는 직선(지수 함수), 위에서는 완만한 곡선이 된다. 회색 점선은 25 °C 곡선이다. 모델은 EKV형 근사식에 \(n = 1.4\), \(dV_{th}/dT = -0.8\) mV/K를 쓴 교육용 값이다.
칩 온도가 25 °C에서 85 °C로 오르면 누설 전력은 몇 배쯤 될까?

그림 12-3에서 \(V_{th}\) = 0.3 V로 두고 온도만 바꿔 보기 전에 짐작해 보자. 2배? 5배? 20배?

답 보기

이 모델에서는 약 13배다. 온도가 20 °C 오를 때마다 대략 2.5배씩 늘어나는 셈이다. 실제 칩에서도 60 °C 상승에 누설이 수 배~10여 배 늘어나는 것이 보통이다. 게임을 오래 하면 칩이 뜨거워지고, 뜨거워진 칩은 같은 일을 해도 전력을 더 쓰고, 그래서 더 뜨거워진다. 이 양성 되먹임이 13장의 열 폭주 이야기다.

누설에는 다른 경로도 있다. 아주 얇은 게이트 산화막을 양자 터널링으로 뚫는 게이트 누설, 드레인-기판 접합의 역방향 전류, 짧은 채널에서 드레인 전압이 장벽을 낮추는 DIBL(Drain-induced barrier lowering) 효과 등이다. 2000년대 중반 90~65 nm 공정에서 누설이 동적 전력에 맞먹을 만큼 커지자, 업계는 high-k 게이트 절연막(게이트 누설 대책)과 FinFET, 이어서 GAA 나노시트(채널을 게이트로 감싸 \(S\)를 이상값 가까이 회복)로 대응했다. 그래도 수십억 개의 트랜지스터가 조금씩 새는 양을 합치면 크다. 뜨거운 플래그십 SoC에서 누설은 전체 전력의 10~30%를 차지한다.

다중 문턱 전압 셀

공정은 보통 \(V_{th}\)가 다른 트랜지스터를 3~5종(ULVT, LVT, SVT, HVT 등) 제공한다. 설계 도구는 타이밍이 빠듯한 임계 경로에만 빠르지만 새는 저 \(V_{th}\) 셀을 쓰고, 여유가 있는 경로는 느리지만 덜 새는 고 \(V_{th}\) 셀로 바꾼다. 같은 회로에서 누설을 수 배 줄이는 흔한 기법이다.

전압과 주파수는 같이 움직인다

그렇다면 전압을 마음껏 낮추면 될까? 문제는 속도다. 게이트 하나의 지연은 부하 \(C\)를 충전하는 데 걸리는 시간 \(t \approx CV/I_{\text{on}}\)이고, 켜짐 전류 \(I_{\text{on}}\)은 \(V - V_{th}\)가 작아질수록 빠르게 줄어든다. 짧은 채널 트랜지스터에서는 이 관계를 알파 전력 법칙(Alpha-power law, Sakurai–Newton 1990)으로 잘 근사한다.

$$I_{\text{on}} \propto (V - V_{th})^{a}, \qquad f_{\max} \propto \frac{I_{\text{on}}}{C V} \propto \frac{(V - V_{th})^{a}}{V}, \qquad a \approx 1.2\text{–}1.5$$
긴 채널의 이상적 MOSFET은 \(a = 2\)이지만, 짧은 채널에서는 속도 포화로 \(a\)가 1에 가까워진다. 임계 경로의 게이트 지연 합이 최대 클럭을 정한다는 것은 2장에서 보았다.

전압을 높이면 더 빠르게 돌릴 수 있고, 빠르게 돌리려면 전압을 높여야 한다. 그래서 칩은 주파수마다 그 주파수를 안전하게 낼 수 있는 최소 전압을 표로 갖고 있다. 아래 왼쪽 그래프의 점을 곡선을 따라 끌어 보자. 오른쪽은 같은 동작점에서의 전력이다.

전압—
최대 주파수—
코어 전력 (동적 + 누설)—
사이클당 에너지—
그림 12-4. 끌어 보기왼쪽 곡선 위의 점을 끌어 동작점을 옮긴다. 작은 점들은 SB-1 큰 코어의 P-state(6절의 표)다. 점이 곡선보다 조금 아래(같은 전압에서 더 낮은 주파수)에 있는 것은 공정 편차·온도·전원 잡음에 대비한 여유(가드밴드)를 두었기 때문이다. 오른쪽 전력 곡선은 저전압 쪽에서는 거의 직선이지만, 위로 갈수록 가파르게 휜다. 3.3 GHz에서 1.65 GHz로 절반을 낮추면 전력은 4분의 1 아래로 준다. 모델: \(a = 1.3\), \(V_{th} = 0.3\) V, \(C_{\text{eff}} = 1.05\) nF, 누설은 뜨거운 상태 기준.

전압과 주파수가 대략 비례한다고 보면 \(P \propto V^2 f \propto f^3\)이다. 성능을 10% 더 얻으려면 전력을 약 33% 더 써야 하고, 반대로 성능을 30% 포기하면 전력은 거의 3분의 1로 준다. 이 비대칭이 휴대폰 칩 설계의 기본 전략을 만든다. 코어를 여러 개 두고 각자 낮은 전압·주파수로 돌리는 편이 코어 하나를 아주 빠르게 돌리는 것보다 에너지 효율이 좋다. 작은 효율 코어와 큰 성능 코어를 함께 두는 big.LITTLE 구조(4장)도 같은 생각에서 나왔다. 같은 성능이라도 작은 코어가 더 낮은 곡선 위에 있다.

곡선 위쪽 끝은 비싸다

오른쪽 그래프에서 3.0 GHz → 3.3 GHz(+10%)에 드는 전력 증가를 보자. 최고 클럭은 짧은 순간(앱 실행, 스크롤 시작)에만 쓰고, 몇 초 넘게 유지하면 열 한계에 걸린다. 벤치마크 점수의 최고 클럭과 실제 사용의 지속 클럭이 다른 이유다.

에너지가 가장 적은 전압

전력이 아니라 일 하나를 끝내는 데 드는 에너지를 보자. 배터리가 정말로 신경 쓰는 것은 이것이다. 연산 한 번의 동적 에너지는 \(\alpha C V^2\)이므로 전압을 낮출수록 줄어든다. 그런데 누설 전력은 연산이 끝날 때까지 계속 흐른다. 전압을 문턱 근처까지 낮추면 회로가 극도로 느려져서, 한 연산에 걸리는 시간 동안 새는 에너지가 급격히 커진다.

$$E_{\text{op}}(V) = \underbrace{\alpha C V^2}_{\text{동적}} + \underbrace{P_{\text{leak}}(V)\cdot \frac{1}{f(V)}}_{\text{누설} \times \text{연산 시간}}$$
문턱 아래에서 \(f(V)\)는 지수로 줄어들기 때문에 두 번째 항이 폭발한다. 두 항의 합이 가장 작은 전압이 에너지 최소점(Minimum energy point, MEP)이다.
에너지 최소점 전압—
그때 주파수—
공칭(1.0 V) 대비 에너지—
그림 12-5. 만져 보기연산 하나의 에너지(공칭 전압의 동적 에너지 = 1)를 전압에 따라 그렸다. 누설 비중을 키우거나 활동 계수를 줄이면(회로 대부분이 놀고 있으면) 최소점이 오른쪽으로 옮겨 간다. 그래프 위를 눌러 아무 전압의 값도 읽을 수 있다. \(V_{th} = 0.35\) V, \(n = 1.5\)의 EKV형 모델.

대부분의 조건에서 최소점은 문턱 전압 근처, 0.3~0.5 V에 있다. 그곳의 에너지는 공칭 전압의 몇 분의 1이지만 주파수는 수십~수백 분의 1로 떨어진다. 이렇게 문턱 근처에서 동작시키는 설계를 문턱 근처 컴퓨팅(Near-threshold computing, NTC)이라 부른다. 속도가 중요하지 않은 센서 허브, 웨어러블, 항상 켜진 음성 감지 회로가 이 영역을 노린다. 다만 문턱 근처에서는 공정 편차에 따라 트랜지스터마다 속도가 크게 달라지고, SRAM이 안정적으로 동작하기 어려워 실제 설계는 까다롭다.

DVFS와 거버너

할 일이 많을 때는 전압과 주파수를 올리고, 적을 때는 내린다. 이것이 동적 전압·주파수 조절(DVFS, Dynamic voltage and frequency scaling)이다. 칩은 미리 검증한 동작점 목록(P-state 또는 OPP, Operating performance point)을 갖고 있고, 운영체제의 거버너(Governor)가 몇 ms마다 다음 동작점을 고른다. 주파수를 올릴 때는 PMIC에 전압을 먼저 올리라고 요청해 안정되기를 기다린 뒤 PLL 주파수를 바꾸고, 내릴 때는 반대 순서로 한다. 한 번 전환에 수십 µs가 걸린다.

SB-1 큰 코어 P-stateP0P1P2P3P4P5P6P7

문제는 거버너가 미래를 모른다는 것이다. 사용자가 화면을 스크롤하면 60분의 1초마다 프레임 하나를 그려야 하는데, 프레임마다 일의 양이 다르다. 너무 낮은 클럭을 고르면 프레임이 마감(vsync)을 놓쳐 화면이 끊기고(jank), 너무 높으면 에너지를 낭비한다. 아래 시뮬레이터에서 같은 작업에 거버너를 바꿔 끼워 보자.

SIMULATOR

DVFS 거버너 실험실

2초 동안 에너지—
평균 전력—
마감 위반—
평균 주파수—
모든 거버너 비교를 누르면 같은 작업에 다섯 가지 설정을 돌린 결과가 여기에 표로 나온다.
맨 위 줄의 막대 하나가 작업 하나다(도착 → 완료, 빨간색은 마감 위반, 세로 눈금은 마감). 가운데는 거버너가 고른 주파수, 아래는 코어 전력이다. 0.25 ms 단위로 2초를 시뮬레이션한다. 전력 모델은 그림 12-4와 같고, 유휴 상태는 클럭만 멈추면 그 전압의 누설을, 깊은 유휴 상태에서는 8 mW를 쓴다. 깊은 유휴는 0.5 ms 쉰 뒤에 들어가고, 깨울 때 0.4 ms와 50 µJ이 든다. DVFS 전환 지연은 무시했다.
"스크롤 60 fps"에서 performance와 powersave 중 어느 쪽이 에너지를 더 많이 쓸까? 그리고 어느 쪽이 프레임을 놓칠까?

깊은 유휴 상태를 켠 채로 생각해 보자.

답 보기

powersave는 0.6 GHz로 버티지 못해 거의 모든 프레임을 놓친다. 놓친 일은 쌓여서 결국 코어가 내내 바쁘다. performance는 마감을 다 지키지만 일할 때 전력이 4 W가 넘어 에너지가 가장 크다(powersave의 세 배 이상). 그 사이의 거버너들이 흥미롭다. ondemand는 사용률이 80%만 넘으면 최고 클럭으로 뛰어올라 마감은 지키지만 에너지를 꽤 쓴다. schedutil은 에너지를 가장 아끼지만, 프레임마다 일의 양이 들쭉날쭉하면 평균에 맞춘 클럭으로는 무거운 프레임을 놓친다. 오히려 작업을 잘 아는 사람이 고른 고정 P-state(수동 P3)가 마감도 지키고 에너지도 적다. 거버너가 "미래를 모른다"는 문제가 그대로 드러난다. 표본 주기를 늘려 보면 반응이 늦어져 결과가 더 나빠지는 것도 볼 수 있다.

그래서 실제 휴대폰은 거버너에게 힌트를 준다. 화면을 터치하는 순간 미리 클럭을 올리는 입력 부스트, 화면에 보이는 앱의 작업에 최소 사용률을 걸어 두는 uclamp, 큰 코어와 작은 코어 중 어디에 작업을 둘지 정하는 에너지 인지 스케줄링(EAS), 열 상태에 따라 최고 P-state를 막는 열 관리(13장)가 함께 돈다. 코어마다 전압을 따로 줄 수 없는 칩이 많아서, 같은 클러스터의 코어들은 가장 바쁜 코어에 맞춰 같은 전압을 쓰기도 한다.

빨리 끝내고 쉴까, 천천히 할까

사진 한 장을 1초 안에 처리해야 한다고 하자. 높은 클럭으로 0.4초 만에 끝내고 0.6초 동안 잠드는 레이스 투 아이들(Race-to-idle)이 좋을까, 낮은 클럭으로 마감 직전까지 천천히 하는 편이 좋을까? 4절의 세제곱 법칙만 보면 답은 "천천히"다. 하지만 코어가 일하는 동안에는 코어만 깨어 있는 게 아니다. DRAM, 인터커넥트, 캐시, 다른 블록들도 함께 깨어 있어야 하고, 이들의 전력은 코어 클럭과 무관하게 시간에 비례해서 쌓인다.

에너지가 가장 적은 P-state—
최고 클럭 대비—
그림 12-6. 만져 보기12억 사이클 작업을 1초 마감 안에 끝낼 때, P-state마다 1초 동안 쓴 총에너지를 쌓았다(코어 동적·코어 누설·나머지 시스템·유휴). 회색 막대는 마감을 넘기는 P-state다. "나머지 전력"을 올리면 최적점이 오른쪽(빠른 클럭)으로 옮겨 가는 것을 보자.

나머지 시스템 전력이 작으면 낮은 클럭이 이기고, 크면 빨리 끝내고 모두를 재우는 편이 이긴다. 유휴 상태에서 얼마나 깊이 잘 수 있는지도 중요하다. 클럭만 멈추고 전원은 켜 둔다면 쉬는 동안에도 누설이 흐르므로, 일할 때의 전압이 낮은 편이 유리해진다. 실제 시스템의 최적점은 보통 곡선 중간의 "효율 좋은 지점"에 있으며, 휴대폰 칩 회사들은 이 지점을 P-state 표에서 찾아 스케줄러에 알려 준다.

클럭 게이팅과 전원 게이팅

가장 확실한 절약은 쓰지 않는 회로를 멈추는 것이다. 방법은 두 단계다. 클럭 게이팅(Clock gating)은 블록으로 들어가는 클럭을 AND 게이트(실제로는 글리치를 막는 래치 기반 ICG 셀)로 막아 \(\alpha\)를 0으로 만든다. 한 사이클 만에 걸고 풀 수 있어 거의 공짜이고, 현대 설계 도구는 플립플롭 묶음마다 자동으로 넣는다. 하지만 전원은 켜져 있으니 누설은 그대로다.

전원 게이팅(Power gating)은 블록과 전원 사이에 큰 스위치 트랜지스터(헤더 또는 푸터)를 넣어 전원 자체를 끊는다. 누설까지 거의 없어지지만 대가가 있다. 꺼지면 레지스터 내용이 사라지므로 필요한 상태를 저장해 두거나(리텐션 플립플롭), 켤 때 다시 초기화해야 한다. 꺼진 블록의 출력이 떠서 이웃 블록을 오작동시키지 않도록 격리 셀(Isolation cell)도 둔다. 다시 켤 때는 블록 전체의 전원망 커패시턴스를 충전해야 하고, 갑자기 큰 전류가 흐르지 않도록 스위치를 조금씩 순서대로 켜야 해서 수 µs~수백 µs가 걸린다.

손익분기 유휴 시간—
선택한 유휴 시간—
판단—
그림 12-7. 끌어 보기오른쪽 그래프의 세로선을 끌어 쉬는 시간을 정한다(가로·세로 모두 로그 눈금). 켜 둔 채 쉬면 누설 에너지가 시간에 비례해 쌓이고, 끄면 고정 비용(꺼진 동안 스위치로 새는 약 2%의 누설 포함)만 든다. 두 직선이 만나는 점이 손익분기 시간이다. 왼쪽 그림의 스위치가 판단에 따라 열리고 닫힌다.
$$t_{\text{BE}} = \frac{E_{\text{전환}}}{P_{\text{leak}} - P_{\text{off}}}$$
쉬는 시간이 \(t_{\text{BE}}\)보다 길 것으로 예상될 때만 전원을 끈다. 운영체제의 cpuidle 거버너는 상태마다 "목표 체류 시간"(target residency)과 "복귀 지연"(exit latency)을 갖고, 다음 인터럽트까지의 시간을 예측해 상태를 고른다.

이제 칩 전체로 넓혀 보자. SB-1은 블록마다 따로 끌 수 있는 전원 도메인(Power domain)으로 나뉘어 있다. 아래 다이에서 블록을 누를 때마다 상태가 켜짐 → 클럭 정지 → 전원 차단 순으로 바뀐다. 상황을 고르고, 일하지 않는 블록을 꺼서 전력을 얼마나 줄일 수 있는지 보자. 일하는 블록을 꺼 버리면 기능이 멈춘다(빨간 테두리). 전력·클럭 관리 블록은 다른 블록을 깨워야 하므로 항상 켜진 도메인(AO, Always-on)에 있다.

SIMULATOR

SB-1 전원 도메인 스위치

블록을 누를 때마다 상태가 바뀐다.
CG 빗금 = 클럭 정지
OFF 어두운 칸 = 전원 차단
빨간 테두리 = 일해야 하는데 꺼져 멈춘 기능
SoC 전력—
그중 누설—
멈춘 기능—
대기 배터리 (19 Wh)—
블록을 눌러 보세요. 처음에는 모든 블록이 켜져 있다. 대기 상황에서 "놀면 전원 차단"을 누르면 전력이 열 배 넘게 준다.
열지도 색은 블록의 전력 밀도(W/mm²)다. 누설은 면적에 비례하고(45 °C에서 약 2 mW/mm², 온도에 지수로 증가), 전원을 끊으면 3%만 남는다. 동적 전력은 1장의 작업별 활동률 모델을 썼다. 대기 배터리 시간은 화면을 뺀 SoC 전력 + 기타 20 mW로 계산한 대략값이다.

대기 상태의 휴대폰이 며칠을 버티는 비결이 여기에 있다. 화면이 꺼지면 큰 코어, GPU, NPU, ISP는 물론 대부분의 캐시까지 전원을 끊고, 항상 켜진 작은 영역(PMU, 음성 감지 DSP, 모뎀의 일부, 타이머)만 남긴다. DRAM은 스스로 내용을 유지하는 셀프 리프레시 모드로 들어간다(7장). 그 결과 SoC 대기 전력은 수 mW~수십 mW까지 내려간다.

항목대략값비고
휴대폰 SoC 지속 전력약 3~5 W순간 최대 10 W 이상, 열 한계로 수십 초~수 분만 (2024년 플래그십)
큰 코어 하나 최고 클럭약 3~5 W약 1.0~1.1 V, 3.3~4.3 GHz (2023~2025년)
작은 코어 하나약 0.1~0.4 W최고 2 GHz 안팎
누설 비중약 10~30%뜨거운 상태(85 °C 이상)에서 큼
클럭 분배 전력동적 전력의 약 20~40%클럭 게이팅으로 크게 줄임
DVFS 전환 시간약 10~100 µs전압 조정기 응답 + PLL 재고정
코어 전원 게이팅 복귀약 수십 µs~1 ms상태 복원 포함, 깊은 상태일수록 길다
SoC 대기 전력 (화면 꺼짐)약 5~30 mWDRAM 셀프 리프레시, 모뎀 페이징 포함 시 더 큼
문턱 아래 기울기 S약 65~80 mV/decFinFET·GAA, 실온. 이론 한계 60 mV/dec

핵심 정리

  1. 커패시터를 한 번 충전·방전하면 \(CV^2\)가 모두 열이 된다. 칩 전체로는 \(P_{\text{dyn}} = \alpha C V^2 f\). 전압이 제곱으로 들어가는 가장 강한 손잡이다.
  2. 꺼진 트랜지스터도 문턱 아래 누설로 전류가 샌다. 누설은 \(V_{th}\)와 온도에 지수로 반응해서, 뜨거운 칩은 같은 일에 전력을 더 쓴다.
  3. 높은 주파수에는 높은 전압이 필요하므로 전력은 주파수의 세제곱에 가깝게 는다. 에너지만 보면 문턱 근처에 최소점이 있지만 속도는 크게 떨어진다.
  4. DVFS 거버너는 사용률을 보고 P-state를 고른다. 너무 느리면 마감을 놓치고 너무 빠르면 에너지를 낭비한다. 레이스 투 아이들이 이기는지는 나머지 시스템 전력과 유휴 상태의 깊이에 달렸다.
  5. 클럭 게이팅은 동적 전력을, 전원 게이팅은 누설까지 없앤다. 전원 게이팅은 전환 비용이 있어 손익분기 시간보다 오래 쉴 때만 이득이다.

확인 퀴즈

Q1. 부하 커패시터 C를 전압 V로 한 번 충전할 때 전원이 내주는 에너지와, 그중 충전 과정에서 PMOS에서 열이 되는 에너지는?

전원은 Q·V = CV²를 내주고, 커패시터에 ½CV²가 저장되며, 나머지 ½CV²는 PMOS 저항값과 상관없이 열이 된다. 방전 때 저장된 ½CV²도 NMOS에서 열이 된다.

Q2. 다른 조건이 같을 때 동적 전력을 가장 크게 줄이는 변화는?

\(0.8^2 \times 0.8 = 0.512\)로 약 49% 감소. 나머지는 모두 30% 감소(×0.7)다. 전압이 제곱으로 들어가기 때문에 전압을 함께 낮추는 것이 가장 효과적이다.

Q3. 문턱 아래 기울기가 80 mV/decade인 트랜지스터에서 문턱 전압을 160 mV 낮추면 꺼짐 전류는 대략 몇 배가 되는가?

80 mV마다 10배이므로 160 mV는 10² = 100배다. 빠른 저 \(V_{th}\) 셀을 임계 경로에만 쓰는 이유다.

Q4. 에너지 최소점이 문턱 전압 근처에 생기는 이유로 옳은 것은?

동적 에너지는 V²로 계속 줄지만, 연산 시간 1/f(V)가 문턱 아래에서 지수로 길어지므로 누설 × 시간 항이 커진다. 두 항의 합이 최소인 곳이 MEP다.

Q5. 레이스 투 아이들(최고 클럭으로 빨리 끝내고 깊이 잠들기)이 가장 유리해지는 조건은?

시간에 비례해 쌓이는 나머지 전력이 크면 일하는 시간을 줄이는 이득이 코어 전력의 세제곱 증가보다 커진다. 쉬는 동안 거의 0에 가깝게 잘 수 있어야 이 이득이 산다.

Q6. 어떤 블록은 켜 둔 채 쉬면 누설이 40 mW이고, 전원을 끊었다 다시 켜는 데 8 µJ이 든다(꺼진 동안 누설은 무시). 전원을 끄는 것이 이득이 되는 최소 유휴 시간은?

\(t_{\text{BE}} = 8\,\mu\text{J} / 40\,\text{mW} = 0.2\) ms. 이보다 짧게 쉴 것이라면 클럭만 멈추는 편이 낫다.