POWER
Power Dissipation
시간이 지나며 chip power은 계속 증가하는 추세를 띄고 있습니다.
Power ∝ Packaging cost
Chip Power Density (면적당 파워 소모량)
집적도(density) ⬆ -> operating frequency ⬆ -> Power frequency ⬆ -> 발열 ⬆
전력이 높을수록
- 발열이 많이 발생 ->packaging cost, cooling cost 증가
- Noise에 취약 -> 신뢰성 감소
Power Dissipation Sources
$P_{total} = P_{static} + P_{dynamic}$
Stanby Power(Static Power)
$V_T$ (문턱접압) ⬇ -> leakage current ⬆ -> static power ⬆
$P_{dynamic} = P_{switching} + P_{shortcircuit}$
$P_{switching}$ : Capacitance를 charge, discharge하기 위한 power
- input = 0일 때 Vdd 전압만큼 전류가 흘러서 output 노드가 Vdd까지 voltage가 올라가서 1로 인식되어 capacitor의 capacitance = 1이 됨 (Charge)
- input = 1일 때 output 노드가 GND와 연결되어 voltage가 내려가 0으로 인식되어 capacitor의 capacitance = 0이 됨 (Discharge)
$P_{shortcircuit}$ : Short- circuit power consumption
$V_{in} 이 0->1로 변하거나 1->0으로 변하는 과정에서 NMOS, PMOS 둘 다 켜질 때 소모되는 전력
$P_{static} = (I_{sub} + I_{gate} + I_{junction}) * V_{DD}$
$I_{sub}$ : Subthreshold leakage(Source, Drain 사이 흐르는 전류)
$ I_{gate}$ : gate leakage(Gate, Channel 사이로 흐르는 전류)
$ I_{junction}$ : Junction에 의해 생기는 leakage(PN접합에서 발생하는 전류)
Power & Energy
$P(t) = I(t) * V(t)$
Energy
$E = \int_{0}^{T} P(t) \, dt$
Average power(Power consumption)
$P_{avg} = \frac{1}{T} \int_{0}^{T} P(t) \, dt$
Power in Circuit Elements
1. Voltage source
$P_{VDD}(t) = I_{DD}(t) * V_{DD}(t)$
$ V_{DD}(t)$ : constant
2. Resistor
$P_R(t) = \frac{V_R^2(t)}{R} = I_R^2(t)R$
3. Capacitor
$E_c = \int_{0}^{\infty} I(t)V(t)dt = \int_{0}^{\infty} C \frac{dV}{dt} V(t) dt = C \int_{0}^{V_c} V(t) dV = \frac{1}{2} C V_c^2$
Charging a capacitor
공급된 총 에너지(Voltage source에서 소모되는 E)
$E_{V_{DD}} = \int_{0}^{\infty} I(t)V_{DD} dt = \int_{0}^{\infty} C_L \frac{dV}{dt} V_{DD} dt = C_L V_{DD} \int_{0}^{V_{DD}} dV = C_L V_{DD}^2$
Capacitor에 저장된 Energy
$E_c = \frac{1}{2} C_L V_{DD}^2$
전체 공급된 에너지가 $ C_L V_{DD}^2$인데 capacitor에 저장된 에너지는 $ \frac{1}{2} C_L V_{DD}^2$이므로 나머지 $ \frac{1}{2} C_L V_{DD}^2$ 는 발열형태로 변환됩니다.
Switching Power dissipation
Transition : charge, discharge되는 한 사이클
$Power = \frac{Energy}{T} = C_L V_{DD}^2 $
$T = transition 개수 * (time\,for\,a\,transition) = \frac{transition}{f}$
$Power = \frac{Energy}{transition} * f = C_L V_{DD}^2f$
위 수식에서 볼 수 있듯이 transistor size와 관련없다는 것을 알 수 있습니다.
Switching waveforms
왼쪽 위부터 오른쪽 아래 사진까지 차례대로 fig1~ fig6이라 하겠습니다.
fig 1 : $V_{in}$이 1 -> 0 -> 1이 될 때의 상황입니다.
fig 2 : $V_{in}$이 1->0이 될 때 PMOS가 활성화되며 $I_{p}$가 커지며 $V_{in}$이 0->1이 될 때 PMOS가 비활성화되며 $I_{p}$가 작아집니다. 이때 short circuit current가 발생합니다. Short circuit current는 fig5에서 더 선명하게 확인할 수 있습니다.
fig 3 : $P_p = I_p(V_{DD} - V_{out})$
fig 4 : $V_{out} = \frac{1}{C} \int I_c \, dt$
fig 5 : fig 2 와 반대의 형태를 띕니다.
fig 6 : fig 3과 반대의 형태를 띕니다.
Activity Factor
Clock frequnecy가 f라 할 때 $f_{sw} = \alpha f$, α = activity factor이다.
$P_{switching} = \alpha C V_{DD}^2 f$
같은 시간동안 clock이 switching 되는 수라고 생각하면 쉬울 것이다.
Lowering Switching Power
Power ⬇ -> Capacitance ⬇ -> transistor size ⬇ -> Wire length ⬇
$P_{switching} = C_L V_{DD}^2 P_{0->1} f$
$C_L$ : Capacitance
$ V_{DD}^2 $ : Supply Voltage
$ P_{0->1} $ : Activity factor(얼마나 자주 스위칭하는지)
$f$ : Clock frequency
Static Power
Critical path : Delay가 가장 큰 path
Critical path가 leakage current의 대부분을 차지하며 normal $V_t$가 쓰이며 논리 게이트와 메모리의 대부분에서 High $V_t$가 보통 쓰입니다.
Critical path의 경우 normal $V_t$가 쓰이는 이유는 critical path는 전체 시스템의 속도에 직접적인 영향을 미치므로 스위칭 속도가 중요하기 때문입니다. 따라서 normal $V_t$를 사용할 때 high $V_t$를 사용할 때보다 스위칭속도가 빠르기에 normal $V_t$를 사용합니다.
Static Power : Normal $V_t$ >> Gate leakage > Junction leakage
Low Power Design
Principles for power reduction
$P = \alpha C V^2 f$
Power가 $v^2$과 반비례하기 때문에 power을 줄이기 위해서 supply voltage를 줄이는 방법이 제일 효과적입니다.
그렇게 하기 위해서는 다음의 3가지 방법이 존재합니다.
- Reducing switching activity
- Reducing physical capacitance
- Low power design techniques
- Clock gating, DVFS(body biasing), Gate sizing(Cell swap), Power gating
Clock gating
동작을 하지 않는 모듈이 있을 때 필요없는(redundant)한 clock을 차단하여 전력소모 감소
즉, clock signal이 toggle 되지 않도록 gating하는 것입니다.
Enable signal을 추가하여 clock gating을 수행합니다.
Enable signal이 없을 때는 clock을 masking합니다.( 특정 조건에서 클럭 신호를 차단하거나 변형하여 대상 모듈로 전달되지 않도록 하는 것 )
1. Local Gating (로컬 게이팅)
- Local Gating은 개별적인 하위 모듈이나 작은 서브 회로에 클럭 게이팅을 적용하는 방식입니다.
- 주로 특정 플립플롭, 레지스터 그룹, 또는 소규모 서브 모듈을 대상으로 클럭 신호를 차단합니다.
2. Global Gating (글로벌 게이팅)
- Global Gating은 클럭 신호의 상위 경로(전역 클럭 트리)에서 클럭을 게이팅하여, 큰 모듈 또는 시스템 전체의 클럭 신호를 차단하는 방식입니다.
- 클럭 게이팅 로직이 시스템 또는 서브시스템 단위에서 동작합니다.
Variable Threshold Voltage
$V_{th}$의 종류를 다양하게 쓰는 것이 total system performance 유지하고 leakage power를 낮추는 방법입니다.
설계 후 $V_th$가 다른 transistor로 교체하려면 공정비용이 증가하기 때문에 cell swaping 또는 body biasing을 사용해서 비용을 낮출 수 있습니다.
위 두가지 방법 중 cell swaping에 대해서 설명하겠습니다.
Cell swaping
Low-Vth(LVT) : 빠르지만 누설 전류가 큽니다
High-Vth(HVT) : 느리지만 누설전류가 낮습니다.
위 그림에서 화살표 부분이 critical path 즉, delay가 가장 많은 경로입니다.
Critical path는 낮은 $V_th$ (LVT) 를 필요로 합니다.
이렇게 cell swaping을 할 때 전체 시스템의 성능은 유지하면서 leakage power를 줄이는 방법입니다.
Body biasing
FBB(Forward Body Bias) : Body-Source voltage($V_{BS}$)을 양수로 만들어 $V_{th}$를 낮추고 스위칭 속도를 높이는 데 사용
RBB(Reverse Body Bias) : $V_{BS}$를 음수로 만들어 $V_{th}$를 높이고 누설 전류를 줄이는 데 사용됨.
$V_{BBp}, V_{BBn}$ : 추가적인 voltage line을 추가해서 실제 source에 걸리는 접압과 body에 걸리는 전압 차이가 발생하도록 하는 역할을 합니다. -> $V_{th}$가 크면 RBB(HVT 역할), $V_{th}$가 작으면 FBB(LVT 역할)을 합니다.
Power Gating
Leakage current를 가장 크게 줄일 수 있는 방법
보통은 왼쪽 그림과 같이 head switch를 하며 오른쪽 그림처럼 switch가 아래에 있으면 put switch라고 합니다.
Head switch의 경우 leakage current가 put switch보다 감소한다는 장점이 있기에 head switch를 보통 사용합니다.
정상적으로 동작하는 회로가 아래쪽에 있으며 그 위쪽에 VDD와 회로 사이에 스위치가 있는 상태입니다.
회로가 동작할 때는 스위치를 켜놓은 상태로 동작을 시키고 아래의 회로가 동작이 필요 없을 때 이것을 Idle state로 가서 회로가 쉬고 있을 때 즉, sleep 모드일 때 이 스위치를 끊어주게 됩니다.
그러면 VDD하고 ground에 path가 없어지고 virtual VDD 상의 전위가 결국 ground로 같이 동일하게 묶이게 되면서 내부 신호가 전부 다 ground로 가서 전위차가 사라져 leakage current도 없게 되고, 그 결과 static current, leakage current가 사라져서 static power가 거의 없어집니다.
- 장점 : 완전히 leakage current를 거의 0에 가깝게 없앨 수 있음
- 단점 : 스위치가 더 추가됨(Area상 문제), performance 상에서는 약간의 degradation, 그러니까 virtual VDD 같은 경우는 IR drop에서 실제 VDD보다 조금 낮아지기에 logic들의 delay가 약간씩 늘어나며 performance 감소
위 사진처럼 enable signal이 급격하게 변하면 In-rush current가 발생하기 때문에 wake up 동작을 천천히 해야합니다.
좀 더 자세한 동작 방식을 알아봅시다.
위에서 말했듯, Enable_few, Enable_rest를 나눠서 하는 이유는 wake up 동작을 천천히 하기 위함입니다.
Power gating을 할 때 내부의 state가 사라지는 현상을 방지하기 위해 retention cell이 존재합니다.
Retention cell이 있기에 power이 없어도 내부 state를 유지하고 wake up 동작을 하면 빠르게 동작을 복구합니다.
따라서 power gating을 하면 leakage current를 줄일 수 있다는 장점은 있지만, 복잡도는 증가한다는 단점이 있습니다.
DVFS(Dynamic Voltage & Frequency Scaling)
동작 전압/ 주파수의 다양한 크기를 사용하는 방법입니다.
첫번째 그래프의 전압과 주파수를 각각 $V_1, f_1$ 이라 한다면 두 번째 그래프의 전압과 주파수는 각각 $ V_2, f_2$ 이며 $V_2 = \frac {1}{2}V_1, f_2 = \frac{1}{2} f_1$이기 때문에 시간은 2배 걸리지만, $ E_2 = \frac{E_1^2}{4} $이 되어 75%의 에너지를 아낄 수 있습니다.
voltage scaling method | ||
Multi VDD | 부품마다 고정된 전압 사용 | Level shifter로 voltage 구분 |
DVFS | 부하에 따라 전압, 주파수 동시 조정 | Discrete하게 동작 포인트가 나뉘어져 있음 |
AVS | 부하 및 온도에 따라 전압 조정 | 칩이 최적의 voltage point를 찾아서 동작 |
NTC(Near Threshold Computing)
Power이 60배 줄어들고 에너지가 6~8배 줄어든다는 장점이 있지만 성능 또한 10배 줄어든다는 단점이 있으며 variation이 더 커져 near threshold voltage에서 동작시킬 때 기존 variation이 30%였다면 near threshold voltage에서는 delay voltage가 400%라는 더 큰 단점이 있습니다.
다시 말하면, 칩이 동작을 할 때 variation이 항상 있는데 30%의 variation을 가지고 있다고 하면 1nm로 동작하다가 어떤 경우에는 1.3nm으로 동작합니다. 따라서 variation이 커지게 되면 그만큼 performance 손실이 더 커지므로 메모리와 같은 구성요소들의 픽셀이 fail이 일어날 확률이 증가합니다.
따라서 variation이 있기에 설계를 할 때 worst case에 맞춰서 설계를 합니다.
위 첨부한 사진들은 강석형 교수님의 허락을 받아 KMOOC 시스템 반도체 설계 과목의 강의자료에서 발췌한 것입니다.
'강의 정리 > POSTECH 시스템반도체설계 강의 정리' 카테고리의 다른 글
KMOOC 시스템 반도체 설계 - Week 1(Introduction & CMOS) (0) | 2024.12.10 |
---|---|
SoC 구조 및 설계 (0) | 2024.11.11 |
K-MOOC SoC 정리 (0) | 2024.10.31 |