DVFS = Dynamic Voltage Frequency Scaling.
DVFS는 동적 전압 스케일링이라는 의미로서 전력 절감의 기술 중의 하나이다. 즉 필요에 의해서 시스템의 코어 전압과 주파수를 조정함으로써 성능을 변화시킬 수 있는 방법을 의미합니다.
사용되는 부품의 인가 전압을 동적으로 높이거나 낮춤으로서 부품의 소비 전력을 조정하게 되는데 동적 전압 스케일링은 에너지가 제한된 건전지를 사용하는 노트북이나 휴대용 기기에서 소비 전력을 줄이기 위해 전을 낮추지만, 반면 컴퓨터의 성능을 높이기 위해서는 전압을 높인다.
ARM의 성공적인 요인은 저전력의 기술을 잘 이용한 것과 같이 저전력 CPU와 리눅스 운영체계의 결합을 통해서 현재의 모바일 혁명을 가져온 것이다.
* Frequency : 우선 CPU Frequency에서 단위는 Hz입니다. Hz는 단위 시간 1초 동안 주기적인 현상이 반복되는 횟수를 의미하는데 예를 들어서 1 MHz이면 1초에 100만 번 주기적인 현상이 반복되는 것을 의미합니다.
여기서 더 나아가 CPU의 클럭 (Clock)은 컴퓨터에서 발생하는 동기적인 신호로, 해당 신호 동안 하나의 일을 처리한다고 생각한다면 CPU 2.0 GHz일 때 1초에 20억 번의 동기적 신호가 발생한다는 것을 의미합니다. ( 즉 CPU의 동작 클럭이 클수록 높은 성능을 발휘하는 것을 의미함 )
DVFS 이론
기본적인 소비 전력의 식은 다음과 같습니다.
알파는 Swithcing activity factor이며 C는 회로의 정전 용량, V는 공급 전압, f는 동작 클록수를 의미합니다. 소비 전력은 전압의 제곱에 비례하기 때문에 이 전압을 조정하여 소비 전력을 제어할 수 있게 됩니다. 또한 각 회로에는 특정 양의 정전 용량이 있게 마련인데 정전용량은 주어진 전류가 주어진 전압의 변경을 위해서 얼마나 오랜 시간이 걸리는가에 대한 수치를 의미합니다.
전압을 바꾸기 위해서는 전하의 충전 및 방전이 필요합니다. 또한 전류는 전압과 관련 있기 때문에 동작 시간은 그 회로에 인가되는 전압에 관계가 있습니다. 높은 전압을 인가함으로써 정전 용량은 충전 및 방전을 더 빠르게 함으로써 회로의 더 빠른 동작을 가능하게 하며 더 높은 구동 주파수를 가능하게 합니다.
DVFS는 하단과 같이 2가지로 나뉩니다. 동적 전압 스케일링이 클럭 게이팅과 동적 주파수 스케일링과 함께 전력 절감과 성능 향상을 위해서 사용됩니다. 그리고 2개의 개념이 합쳐진 topic이 바로 DVFS가 되겠습니다.
1. Dynamic frequency scaling
2. Dynamic voltage scaling
1. Dynamic Frequency Scaling
주파수를 조절하여 성능을 조절하는 방법으로 낮은 workload에 저전력을 부과하거나 cooling cost 및 노이즈 상황을 줄임으로서 배터리 소모를 절약하는데 기여합니다.
해당 방법은 CPUFreq라는 linux framework를 이용하며 해당 framework는 Processor의 성능 요구 상황을 모니터링하고 이에 따른 frequency를 조절하게 됩니다.
CPU Freq의 구성요소 2개 - CPU Frequency governor + CPU Frequency Driver
- CPU Frequency governor
: 시스템의 성능(Performance)을 모니터링하면서 Frequency 조절이 필요할 때 Policy 내에서 Frequency Limit를 확인하여 Driver에 적절한 Frequency 조절 요청을 수행하는 역할을 합니다.
즉 CPU frequency governor는 CPUfreq policy 내에서 무슨 주파수를 사용할 것인지를 결정합니다.
* CPUfreq policy : 주파수 제한과 사용될 governor로 구성되며 각각의 CPU 코어의 최대, 최소의 Frequency 그리고 최대와 최소 사의 가능한 값들이 존재하는데 이러한 선택 가능한 option을 제공해주는 것을 policy라고 합니다. 그리고 이는 Frequency Table에 기반하여 생성됩니다.
CPU Frequency Framework 내의 대표적인 Governor 종류
- Performance vs Powersave ( CPU를 최고 주파수로 설정 vs CPU를 최저 주파수로 설정, 반대의 관계 )
- Conservative ( 느린 Ondemand, 가능한 최저 속도에서 동작하도록 구현되어 있음 )
- Userspace ( 보통 테스트를 위해서 사용되며 사용자가 지정한 주파수로 동작하게 함 )
- Ondemand ( 현재 사용량에 따른 Freq 설정, CPU는 주파수를 빠르게 변경할 능력이 필요함 )
- Interactive ( Ondemand처럼 CPU에 위치한 부하에 따라 주파수를 변경하나 훨씬 빠르게 반응함 )
- CPU Frequency Driver
: Governor의 결정에 따라서 실제로 Frequency 조절을 수행하는 역할. 요청된 Frequency 값에 대해서 OPP List에서 확인 후 변경 가능한 값일 때 해당 값을 반영하여 Frequency 변경을 수행합니다.
* OPP List - Operating Performance Point List
오늘날 복잡한 SoCs (System on chip)는 다수의 sub-modules로 접합되어 구성이 되어있는데 동작 환경에서 각각의 모듈들은 사용되는 경우가 다르며 또한 모듈들 모두 항상 최고의 성능을 뽑아내기 위해서 높은 frequency를 유지할 필요가 없습니다. 때문에 각각의 모듈들이 동작 특성에 따른 domain으로 묶을 수 있는데 저 전압/주파수의 짝 그룹과 그리고 높은 전압/주파수의 그룹으로 나뉠 수 있습니다. 이러한 전압/주파수 pair에 대한 집합을 OPP라고 하며 각각의 domain에 대해 support 합니다.
예시 : MPU device가 다음과 같은 조건을 support 할 때
- 300 MHz at minimum voltage of 1V
- 800 MHz at minimum voltage of 1.2V
- 1 GHz at minimum voltage of 1.3V
3가지를 OPP에서는 다음과 같이 표현하게 됩니다.
{300000000, 1000000}
{800000000, 1200000}
{1000000000, 1300000}
2. Dynamic Voltage Scaling
마찬가지로 Dynamic Voltage Scaling 방법은 전압을 조절하여 파워 관리를 하는 방법으로 전압을 올릴 때를 overvolting이라고 하며 전압을 내릴 때 undervolting이라고 합니다. undervolting은 power를 보존하기 위해 수행되며 주로 랩톱이나 모바일 장치에서 사용됩니다. overvolting 같은 경우 성능을 위해서 높은 주파수를 지원하기 위해서 사용됩니다(overclocking)
MOSFET 기반의 디지털 회로를 구동하기 위해서는 전압을 적용하는데 각각의 노드들의 logical 한 상태를 표현하기 위해서입니다. 각각의 노드들의 전압은 고전압과 저전압 사이의 값을 가지며 logic gate로 입력이 전해졌을 때 transition을 하게 되는데 트랜지스터들이 gate를 toggle 시켜줍니다.
각각의 노드들은 일정 양의 capacitance를 가지고 있습니다. Capacitance는 주어진 전류를 가지고 얼마나 전압 변화를 할 수 있는가에 대한 척도로 고전압을 가하면 capacitance는 충전 또는 방전이 빠르게 일어나며 재빠른 동작이 가능하도록 고 주파수를 허용합니다.
'전공 관련 (Major) > 임베디드 소프트웨어 (Embedded Software)' 카테고리의 다른 글
toolchain 이란 (0) | 2021.04.03 |
---|---|
펌웨어, 커널, 운영 체제의 개념과 차이 (0) | 2021.01.19 |
댓글