온도 제어와 에너지 관리

매니코어OS
이동: 둘러보기, 검색

온도,전력 및 에너지 관리 기술

컴퓨터 시스템의 전력 소모를 조절하는 기술은 그 목적에 따라 크게 두가지로 구분할 수 있다. 한가지는 하드웨어를 과도한 전력 소모와 온도 증가로 부터 보호하기 위한 전력 관리 기술 (Power management technique)이고, 다른 하나는 연산 비용을 감소시키는 것을 목적으로 하는 에너지 효율적 컴퓨팅 (Energy-efficient computing) 이다. 두가지 기술은 서로 다른 목적을 가지고 있긴 하지만, 각 요소 기술이 적용되는 부분과 기술이 시스템에 미치는 영향이 매우 밀접하게 연관되어 있으므로 효율적 시스템을 구축하기 위해서는 서로 다른 기술들이 잘 이해되고 적절히 연결되어야 한다. 본 과제에서는 매니코어 시스템의 가용성 유지를 위한 온도, 전력 관리 기술과 에너지 절감 기술에 대한 연구를 진행하고 있다.

이 글에서는  온도, 전력 및 에너지 관리 기술의 목적과 특징에 대해서 설명하고 본 과제를 통해 연구 개발된 기술에 대해 소개하고자 한다.

전력 관리 기술 (Power Management Technique)

컴퓨터 시스템의 각 장치들이 소모하는 전력은 모두 열로 방출되는데 높은 온도와 전력 소모는 장치 고장의 원인이 될 수 있기 때문에 온도와 전력 소모를 일정 수준 이하로 유지하는것은 시스템 설계시 가장 우선적으로 고려되어야 할 요소이다. 반도체는 온도가 올라가면 저항도 함께 증가하여 전력 소모가 늘어나는 특징을 가지고 있기 때문에 온도와 전력 제어는 가용성 유지라는 동일한 목적을 가지고 있으며, 같은 기법을 통해 달성 될 수 있다. 따라서 온도와 전력 제어를 동일한 범주의 연구로 간주될 수 있다.

소프트웨어에서 전력 및 온도를 제어하는 기술이 필요하게 된 것은 예측할 수 없는 환경 변화와 다양한 워크로드 특성 때문이었다. 동적 전력 관리(Dynamic power management:DPM), 동적 온도 관리 (Dynamic thermal management: DTM) 등으로 소개 되는 Power-aware computing 기술은 실시간으로 소모되는 전력과 온도를 측정하여, 적정 기준 이상이 될 경우 동작 속도를 낮추거나 일시적으로 중단시키는것이 기본이다. 이 분야의 연구들은 아래의 목록과 같이 분류될 수 있다.

  • 전력 제어 및 관리 (Power control & management)
    • 전력을 적정 수준 이하로 제어하는 기법에 대해 연구한다. 기술에서 달성하고자 하는 목표는 시스템이 안전한 범위 내에서 동작하도록 제어하는 것이다. 불가피한 성능 저하나, 총 비용 증가 등의 부작용을 감수하기도 한다.
    • 전력 소모를 줄이는 throttling 을 위해 동작 주파수 및 전압을 조절하는 DVFS(Dynamic voltage and frequency scaling)를 비롯하여 메모리 제한 (Memory throttling), 유휴 삽입 (Idle injection) 등의 기법을 활용한다. 공통적으로 자원 사용을 제한하여 전력 소비량을 조절하는 방식이다.
    • 데이터 센터와 같은 대규모 시스템을 위한 power capping 도 전력 제어 기술을 바탕으로 한다. 이 연구는 가용성 유지를 위한 전력 제어 보다 더 적극적으로 전력 소모를 조절하는것이 특징이다. 전체 시스템을 고려하여 각 노드의 전력 소비를 동적으로 제어해야할 때, 혹은 요구된 서비스 비용에 맞추어 성능을 제공하고자 할 때 이와 같은 기술을 적용할 수 있다.
  • 온도 제어 및 관리 (Thermal control & management)
    • 온도를 적정 수준 이하로 제어하는 기법이다. 온도를 낮추려면 소모 전력을 줄여야 하기 때문에 power throttling을 통해 구현된다. 다만, 온도의 경우 전력 보다 증가하는 속도가 느리고 주변 환경의 영향을 크게 받기 때문에, 두가지 원인에 의한 throttling이 동시에 일어나는 일은 드물고, 전력이나 온도 제어 중 한가지 기능 만으로 두가지 문제를 모두 해결하는 것은 불가능 하다.

에너지 효율적 컴퓨팅 (Energy-efficient Computing)

대규모 컴퓨팅 시스템을 구성하고 운영할 때 비용 및 환경적 측면에서 에너지 소모를 줄이는 것은 매우 중요한 과제이다. 컴퓨터를 운영하기 위해 소모하는 에너지 비용을 줄이는것을 목적으로 하는 기술은 모두 enegy-efficient computing으로 구분할 수 있다. 시스템의 비용 효율을 높이는 것을 목적으로 하기 때문에 전력 소모를 줄이기 위해 과도한 성능 저하를 유발하거나, 전체 비용이 증가하는 것을 허용하지 않으며, 시스템은 늘 안전한 상황에 있다고 가정하고 있으므로, 위에서 설명한 전력 관리 기술과는 그 맥을 달리한다.

최근 에너지 효율성을 개선하기 위한 연구는 워크로드가 실행과 관련된 에너지 소비를 줄이는 기술과, 여러 단계로 구분된 Idle 상태를 활용하는 기술로 구분할 수 있다.

  • Static Energy 효율 개선
    • Static energy는 프로세서의 사용 여부와는 관계없이 장치를 켜두기 위해 소모하는 에너지를 의미한다. 프로세서를 사용하지 않을 때 Clock gating 등의 기법을 통해 이 에너지를 줄이는 것이 가능하다.
    • 대기 상태의 전력관리 : 인텔의 경우 C-state를 통해 코어가 사용되지 않을 때 대기전력을 줄이는것을 지원한다. 이러한 대기 전력 관리는 클록 게이팅과 전압 낮추기, 캐시 비우기 등을 포함하고 있다. 클록 게이팅은 사용되지 않는 회로에 클럭이 인가되지 않게 하여 전력 소모를 줄이는 기법이다. 이 방식은 대기 상태 (Idle state)의 프로세서의 소모전력을 획기적으로 줄일 수 있는 반면, 클럭을 다시 인가시키는데 시간이 걸리기 때문에 프로세서가 사용되는 도중에 수시로 사용될 수는 없는 방법이다. 더 많은 전력을 아낄 수 있게 될 수록 동작 가능한 상태로 돌아오는데 필요한 지연시간이 길어진다.
  • Dynamic Energy 효율 개선
    • Dynamic energy는 프로세서에서 실제로 연산을 수행하기 위해 소모하는 에너지를 의미한다. DVFS, Idle injection 등의 방법으로 소모 전력을 조절 할 수 있다.
    • 과거에는 DVFS를 통해 전력 소모를 조절할 경우  발생하는 성능 변화와 비용 증가 사이에서 가장 효율적인 지점을 찾는 연구를 주로 수행하였으며, 최근에는 비 효율적인 구조나 동작을 개선하여 불필요한 전력 소모를 줄이는 방향으로 연구 방향이 바뀌고 있다.

Power-aware Computing의 패러다임의 변화

과거 Power-aware Computing은 전력 관리와 에너지 효율성 개선 문제를 정확하게 구분하지 않고 다루고 있었다. 이러한 연구는 대부분 DVFS 기술을 활용하고 있는데, 연구가 진행된 시기의 프로세서는 대부분 동작 주파수를 낮추었을때 감수해야하는 성능 저하보다, 전력 소모 감소 비율이 더 큰 특징을 가지고 있었다. 프로세서를 구성하고 있는 CMOS들이 스위칭될때 소모하는 전력은 주파수의 세제곱에 비례하여 증가하는데, 이러한 특징이 프로세서에서 그대로 드러나고, 주파수는 낮춘다는 것만으로도 에너지를 쉽게 아낄수 있었다.

하지만, DVFS는 더이상 마법과 같이 에너지 소모를 줄여주는 수단이 아니다. 컴퓨터 시스템에서 전력 및 에너지 효율이 중요하게 다루어지면서, 최신의 프로세서들은 최적의 에너지 효율을 제공할 수 있도록 동작 주파수 구간을 설계한다. 이러한 프로세서의 전력 소모에 비례하여 성능이 결정된다.

또한 Static power의 비중이 늘어난 것도 DVFS의 효용을 감소시키는 원인 중에 하나이다. 멀티 코어의 시대로 넘어 오면서 프로세서는 인터커넥트, 캐시 등을 위해 많은 면적을 할애하고 있으며 이 소자들은 전원이 켜지면 지속적으로 전력을 소모하는 특징을 가진다. 앞서 소개한 대기상태의 전력 관리를 통해 static power를 줄일 수 있게 되면서, 적절한 속도로 천천히 실행하는것과 빨리 실행시켜버리고 더 많이 쉬도록 하는 경우에서 어느쪽이 더 에너지 효율적인지를 단정할 수 없게 되었다.

프로세서의 전력 효율 개선과 하드웨어적으로 지원되는 전력 관리 기술들은 소프트웨어에서 에너지 효율을 개선하기 위해서 수행해야할 역할을 바꾸었다. 우리는 이 과제를 통해 최신 기술들이 적용된 매니코어 환경에서 실행되는 운영체제가 응용들이 보다 효율적으로 에너지를 소모할 수 있도록 지원하는 기술을 연구하고 있다.

매니코어를 위한 온도/전력 관리 기술

반도체는 온도가 올라갈 때 저항을 증가시키는 성질을 가지고 있기 때문에 온도가 증가하면 소모되는 전력도 함께 증가한다. 온도로 인해 추가적으로 발생하는 전력을 Power dissipation 이라고 하고, 온도 증가가 소모 전력으로 이어지고 다시 온도가 증가하는 문제를 Thermal Runaway 라고 한다. 프로세서의 온도가 높이 올라가면 신뢰성이 감소되고, 내구성이 저하 될 수 있으며, 심각한 고장을 일으키기도 한다. 프로세서를 위한 온도 관리는 이러한 위험 요소들로 부터 프로세서를 보호하는것을 목적으로 한다.

매니코어 시스템에서는 사용되는 DVFS 와 사용 코어 수와 같이 자원 사용량 조절을 위한 선택의 폭이 넓어지며, 고려해야 하는 상항도 복잡해지게 된다. 그렇기 때문에 그 중 가장 적합한 방법을 하드웨어 수준에서 선택하는 것에는 한계가 있다. 우리는 달라진 매니코어 환경을 고려하여 적합한 전력 및 온도 관리 기법에 대해 연구하였다.

실시간 온도 예측

프로세서에서 제공하는 동적 온도 관리 기법은 기본적으로 온도 센서를 통해 측정되는 현재 온도를 바탕으로 대응하는 방식이다. 이러한 사후 온도 조절 방식에서는 프로세서가 온도를 낮추기 위해서 전력제한을 걸었다가 다시 원상복귀 시키는 과정을 반복하면서 아래의 왼쪽 그림과 같이 정상 온도와 이상 고온을 반복적으로 오르내리게 될 가능성이 있다. 이러한 온도 불안정한 변화는 시스템의 성능을 예측하기 어렵게 만들고, 성능을 변경하기 위한 오버헤드를 발생시키며 반복적으로 프로세서를 고온에 노출시켜 신뢰도를 떨어뜨릴 수 있다. 이러한 동적 온도 관리 기법의 한계는 소프트웨어를 통해 예측에 기반하여 온도를 관리를 하는 것으로 극복될 수 있다. 이 연구에서는 주변 환경의 급격한 변화, 다양한 워크로드의 실행에도 관계없이 최고 온도를 일정하게 유지할 수 있도록 하는 기술을 연구하였다.



Fluctuation.png

냉각 효율 기반 온도 예측 모델

Thermalgraph.png

프로세서가 워크로드를 실행할 때 관측되는 온도 변화에 따라 위 그림과 같이 유지(Sustain), 상승(Attack), 하강(Decay)의 세가지 상태로 구분할 수 있다. 각 상태별 열적 상태는 아래 그림과 같이 설명될 수 있다. 상승 상태에서는 프로세서에서 냉각 가능한 열량 보다 더 많은 열을 방출하는 경우, 유지 단계에서는 동일한 양의 열을, 하강 단계에서는 적을 열을 방출한다.



Thermalstate.png

이때 냉각 가능 열량은 프로세서의 온도와 주변 온도와의 차이에 비례한다. 이 냉각 가능 열량 유지 단계에서의 전력과 온도 측정 데이터를 수집하여 계산할 수 있다. 어떤 시점에서 온도와 전력을 안다면 해당 온도에 대한 냉각 용량을 알 수 있으며, 이 값을 소모 전력에서 빼면 온도 상승에 영향을 주는 열량을 파악할 수 있다. 온도 변화에 영향을 주는 열량과 온도 변화 사이의 관계를 관측하면 온도-전력 비례 계수 또한 계산 할 수 있다. 이 두가지 정보를 활용하면 다음 시점의 온도를 예측하는것이 가능해진다.



Thermalpred.png​​​​​​​

위 그림은 냉각 가능 용량과 온도-전력 비례 계수를 사용하여 온도 예측이 어떻게 이루어질 수 있는지 보여주는 그림이다. 두 값을 통해 짧은 시간 이후의 온도를 예측하고 예측된 온도 값을 이용하여 그 이후의 값을 예측하는 방식이다. 이때 워크로드가 소모하는 전력 소모 특징은 변하지 않는 다고 가정하고, 온도 증가에 따른 누수 전력의 변화를 고려하여 해당 시점의 전력 소모량을 예측한다.

이러한 온도 예측 기술을 활용하면 매우 낮은 오버헤드만으로 실시간으로 온도 변화를 예측하고, 급격한 온도 변화에 대비하는 것이 가능하다

특허

  • 반도체 장치를 위한 실시간 온도 예측 장치 및 방법, 등록 10-1621655 (출원 10-2015-0059150)

Thermal Margin Preservation: QoS 보장을 위한 온도 관리

프로세서의 온도 관리는 프로세서가 고온에서 동작하면서 발생할 수 있는 고장과 신뢰성 저하로 부터 프로세서를 보호하는 것을 최우선으로 고려하기 때문에 실행중이 워크로드에 대한 고려 없이 온도가 정해진 값 이상으로 올라갈 경우 강제적으로 소모 전력과 성능을 줄인다. 이러한 강제적 온도 관리는 다양한 우선 순위의 태스크가 동시에 실행되는 시스템에서 우선 순위가 높은 워크로드가 우선 순위가 낮은 워크로드로 인해 성능에 영향을 받는 문제가 생길 수 있다.


Tm problem.png

위 그림은 온도로 인해 우선순위가 높은 태스크가 영향을 받는 상황을 설명하는 그림이다. 우선 순위가 높지 않은 워크로드가 온도 상한(Trip point)를 넘지 않도록 프로세서를 사용하는 상황에서 높은 성능을 요구하며, 자원 사용 밀도가 높은 워크로드가 새롭게 시작하였을 때 시간의 흐름에 따라 프로세서의 온도의 변화를 나타내었다. High performance burst란 자원을 밀도있게 사용하며 높은 성능을 요구하는 워크로드가 실행된 상황을 의미한다. 새롭게 시작된 워크로드는 프로세서의 온도가 상한점 이상으로 상승 시킬 수 있다. 온도가 올라가면 프로세서는 강제적으로 성능을 저하시키게 되므로 높은 우선 순위의 워크로드는 낮은 성능에서 실행되게 된다.

이러한 문제를 해결하기 위해서 본 과제에서는 우선 순위 따라 온도 상한을 다르게 주는 Thermal Margin Preservation(TMP) 기법을 제안하였다. Thermal Margin은 프로세서의 온도 상한점 보다 낮은 온도로 유지하여 갑자기 시작된 다른 워크로드가 온도를 상승 시킬 여지를 남겨 둔다는 의미로 결정된 명칭이다.

아래 그림은  우선 순위에 따라 상한온도를 다르게 설정할 경우 위에서 설명된 문제가 어떻게 해결되는 지를 보여준다. 시스템은 우선순위가 낮은 응용을 실행하는 동안은 하드웨어적 온도 상한점에서 정해진 마진을 남겨둔 온도를 새로운 온도 상한으로 설정하게된다. 이때 우선순위가 높은 응용이 새롭게 시작되면, 온도 상한을 재설정하여 온도를 더 높일 수 있는 여지를 제공한다. 따라서 워크로드는 요구되는 높은 성능을 보장받으면서 실행될 수 있게 된다.

Tm solved.png​​​​​​​


우선 순위가 낮은 워크로드의 경우 자유롭게 온도를 높일 수 있던 기존의 방법 보다는 더 느리게 실행될 수 있지만, 우선 순위가 높은 워크로드의 성능이 보장하는 것이 가능하다. 또한 우선 순위별로 제공가능한 최대 성능이 차등화 되고 워크로드간 불필요한 성능 간섭을 줄일 수 있기 때문에 성능 예측과 서비스 품질 보장이 요구되는 시스템에 필요한 기술이다.

논문

특허

  • Thermal management apparatus and method using dynamic thermal margin, and semiconductor processor device, non-volatile data storage device and access control method using the same, 미국 특허 출원 15/221,909

공개 소프트웨어

매니코어 시스템의 에너지 효율성 개선

Energy Efficient Polling 기법

필수적이지 않은 연산의 가장 대표적인 것은 polling 이다. polling은 프로그램이나 장치들이 어떤 상태에 있는지를 주기적으로 확인하고 사용 가능한 시점이 되면 요청을 처리하도록 하는 동기화 방식이다. polling은 장치의 상태가 변할 때 발생하는 신호를 통해 깨어나서 요청을 처리하는 인터럽트와는 달리 주기적으로 깨어나 상태를 확인하는 연산을 수행하기 때문에 요청 지연 시간이 길어지면 길어질수록 더 많은 연산을 수행하게 된다. 이러한 단점에도 불구하고, 인터럽트에 비해 빠른 응답시간 빠르고 대역폭이 큰 장치를 지원하기에 적합하기 때문에 네크워크 통신의 처리는 polling 기법을 활용하여 구현된다.

매니코어 환경에서는 코어들이 동시에 네크워크 통신을 사용할 때 매우 쉽게 contention이 관측될 수 있는데, 그때 각 코어가 polling을 수행하고 있다면, 전체 프로세서의 관점에서는 매우 많은 자원이 불필요하게 소모되는 문제가 발생할 수 있다. 아래의 왼쪽 그림은 네트워크에서 경쟁이 발생했을때 각 코어의 지연시간이 증가하면서 늘어날 불필요한 에너지 소모를 보이고자 하였다. 이때 polling 주기가 길어져서 대기 중에 적게 깨어날 수 있다면, 성능 저하 없이 이러한 불필요한 에너지 소모를 줄이는 것이 가능할 것이다. Energy efficient polling은 커널 안에서 contention을 관측하여 polling 주기를 동적으로 조절 하는 기술이다.

Energy efficient poll b.pngEnergy efficient poll a.png​​​​​​​

Appendix

프로세서의 전력 제어 기법

DVFS

DVFS는 싱글 코어 프로세서 (Single core processor)로 부터 사용된 온도 및 전력 제어 기술로써 대부분의 프로세서에서 활용되고 있다. 프로세서를 구성하는 CMOS 게이트가 스위칭 동작을 수행할 때 전력 소모량 P = C·V2·f로 계산 되며, 이때 C는 스위치의 정전 용량, V는 동작 전압, f는 동작 주파수 이다. CMOS gate는 전압이 높을 수록 더 빠르게 충전될 수 있기 때문에 동작 주파수는 전압에 비례하여 결정되므로 전력 소모량은 동작 주파수의 세제곱에 비례하게된다. CMOS 게이트의 비중이 높은 과거의 프로세서 에서는 줄어드는 성능 보다 더 많은 전력을 절감하는 것이 가능했다.

하지만 최근 프로세서는 프로세서를 구성하는 캐시의 면적이 늘어나고CMOS게이트의 비중이 줄면서 전력 소모가 동작 주파수에 비례하여 변하고, 프로세서의 사용과는 무관하게 정적으로 소모되는 전력의 비율이 증가하는 경향을 보인다. 프로세서 내부에 주파수와 전압을 조절하기 위한 회로를 추가하는 것은 비용이 높아 최근의 프로세서는 DVFS 를 통해 조절 가능한 주파수의 단계와 범위를 줄이는 추세이다.

그러나 전력 소모를 줄였을 때 프로세서가 소모하는 에너지가 줄지 않거나 증가하고, 성능이 느려지는 문제가 있음에도 DVFS는 여전히 가장 기본적인 전력 관리 기능으로 제공되어 있다. 이는 프로세서의 최대온도 (Peak temperature)를 낮춰 줌으로 써 냉각을 위한 비용을 줄이고 프로세서를 보호할 수 있기 때문이다. 인텔 프로세서 에서는 P-State(Performance state)로 코어들이 동작하는 속도에 따라 프로세서의 상태를 구분하고 전력 소모와 속도를 조절 할 수 있도록 한다.

Clock gating

사용되지 않는 부분의 소모 전력을 줄이기 위해 사용되는 가장 기본적인 방법은 클록 게이팅(Clock gating) 이다. 클록 게이팅은 사용되지 않는 회로에 클럭이 인가되지 않게 하여  동적 전력 소모를 없애는 방법이다. 이 방식은 유휴(Idle) 상태의 프로세서의 소모전력을 획기적으로 줄일 수 있는 반면 클럭을 다시 인가시키는데 시간이 걸리기 때문에 프로세서가 사용되는 도중에 수시로 사용될 수는 없는 방법이다. 사용되지 않는 프로세서의 전력 소모를 줄이는 방법에는 클록 게이팅외에도 인가되는 전압을 낮추고 캐시를 비우는 등의 방법도 포함되어 있으며, 더 많은 전력을 아낄 수 있게 될 수록 동작 가능한 상태로 돌아오는데 필요한 지연시간이 길어진다.

Idle injection

유휴 상태는 HLT 명령을 통해 연산을 수행하지 않는 슬립 상태와 클록 게이팅을 통해 전력 소모를 최대한으로 줄인 딥 슬립(Deep sleep) 상태가 있다. 워크로드가 실행되는 동안에는 상태가 변경되는 동안 지연시간이 긴 딥 슬립은 상태가 되는 것은 어렵지만, 코어가 슬립과 실행을 짧은 주기로 반복하게 하여 전력 소모를 조절하는것이 가능하다. 이러한 기법을 아이들 인젝션(Idle injection)이라고 한다.