컴퓨터 구조 - 저전력 컴퓨터 시스템
저전력 컴퓨터 시스템
1. 개요
이 부분은 임베디드 시스템에 많이 사용되는 부분이다.
특히 모바일 기기의 경우 배터리 유지 시간이 매우 큰 이슈인데, 배터리 유지 시간을 늘리기 위해서는 배터리 자체 용량을 늘리는 것도 방법이 되겠지만 파워 사용량 자체를 줄이는게 더 낫다.
특히 파워를 줄이면 그에 따라 열 발산도 줄어들게 되고 여러모로 이득이 많다. 그렇다면 어떻게 파워 소모를 줄일 것이냐에 대한 것이 문제인데 크게 두 부분으로 나뉜다.
2. Dynamic Power Management (DPM, 동적 파워 소모 관리)
파워 매니저를 통해서 파워소모를 제어하는 방법이다.
아예 해당 부분의 회로를 꺼버리거나 하는 방식으로 소모를 제어하는데 회로 상태는 ON/OFF로 나뉜다.
회로를 껐다가 키는데 대기시간이 들지 않고 추가적인 파워소모가 필요하지 않다면 별도의 관리도 필요없겠지만 아쉽게도 회로를 껐다가 키는데 대기시간이 들고 추가적인 파워소모가 들어가기 때문에 스케줄링이 필요하다.
※ 스케줄링에 앞서 알아야될것
회로를 끄고 키는데 추가 Power가 든다. 금을 캐려면 금이 필요하다는 소리만큼이나 뜬금없고 뭔가 싶지만 간단하게 예를 들어보자 컴퓨터를 키고 꺼야한다면, 작업 중인 내용을 저장하고 꺼야할 것이다. 그렇다면 SSD혹은 HDD와 같은 보조 기억장치에 현재 작업중인 데이터를 모조리 저장해야할 것이다. 원래라면 CPU와 RAM에만 POWER를 쓰면 되겠지만 꺼야하기 때문에 보조 기억장치에까지 POWER를 쓰게 되는 것이다. 이는 반대로 킬때도 마찬가지인데 컴퓨터를 키게되면 커널을 보조 기억장치에서 읽어와서 RAM에 올려야한다. 이 역시 그냥 컴퓨터가 켜져있다면 CPU와 RAM에만 POWER를 쓰고 필요할때만 보조 기억장치에 POWER를 쓰면 되겠지만 킬때 필요한 초기화 작업때문에 POWER가 더 들어가는 것이다. 이와 비슷한 것이라고 생각하면 된다.
사실 POWER만 더 드는게 아니다. 컴퓨터를 키고 끌때 버튼만 누른다고 1ms의 지연없이 켜지거나 꺼지지 않는다. 회로 역시 마찬가지이다. 어느정도의 지연시간이 드는 것이다. 이 역시 어떤 job이 들어올때 해당 회로가 꺼져있다면 키고 해당 job을 수행하기 까지 지연시간이 드는 것이다. 아래의 그림을 보자.
- $T_{sd}$ : 꺼지기까지 딜레이
- $T_{wu}$ : 켜지기까지 딜레이
- $T_{bs}$ : 꺼지기전 시간
- $T_{bw}$ : 켜지기전 시간
위와 같이 4개의 딜레이가 있기 때문에 막 끄고 킬 수 없는 것이다. 그렇다면 이 idle 한 시간이 언제되고 얼마나 이어질지 예측하면 된다.
※ 예측에 앞서 알아야할 것
무조건 idle한 시간이 생겼다고 꺼버릴건 아니다. 아래의 그림을 보자.
각 검은 색 그래프의 면적이 시간당 POWER 소비양이다. 기본적으로 끄고 키는데 추가적인 Power가 소비된다.
이 경우 off 해있을 때 Power 소비량을 $P_{off}$ 라고 했을 때 적어도 회로를 껐다 키는 쪽이 더 작아야
회로를 끄는데 Power 소비 절감 효과가 있으며 이를 정하는 것은 $P_{off}$ 가 유지되는 시간이다.
1) 예측 모델링 - Timeout
특정 시간을 두고 해당 회로가 꺼지게 만드는 것이다. 가령, 노트북에서 전원이 연결되지 않았을 때 몇분 후 절전 모드로 들어가는 것과 같은 것이라고 생각하면 된다.
이 경우도 고정된 시간으로 지정할 수 있고, 적응형으로 그때그때 다른 시간마다 Timeout이 되게 설정할 수 있다.
2) 예측 모델링 - 확률에 근거
확률 기반 모델링으로 마르코브 결정 과정(Markov Decision Process)라고 한다.
확률에 근거하여 회로를 끌지 말지 결정하게 된다.
3. Dynamic Voltage Scaling (DVS, 동적 전압 변화)
1) 개요
전압과 클럭수는 같이 내리던가 같이 올라가야한다(비례가 아니라 같이 조정해야한다)
그리고 클럭수가 올라간다면 CPU의 성능은 올라간다(전압과 같이 올리는 것을 오버클럭이라고 하기도 한다) 위 내용을 잘 숙지한채로 아래의 그림을 살펴보자.
아래의 그림은 데드라인이 있는 job에 대한 그림이다.
앞서 서술했던 DPM의 경우에는 IDLE TIME이 길어질 것 같으면 꺼버린다. 전압은 그대로 유지한채 회로를 꺼버리는 것이라 Deadline이 있는 job의 경우 Deadline 보다 먼저 끝내고 대기시간이 있다.
하지만 이는 효율성 면에서 그렇게 좋지 않다고 볼 수 있다. 데드라인 전까지 프로세서는 놀고 있는 것이기 때문이다. 항상 CPU는 busy한게 좋으나 Power 소모를 줄이기 위해 전압과 클럭을 줄여서 데드라인까지만 받은 JOB을 완료하도록 조절하는 것이다.
2) 지연시간
물론 전압과 클럭을 조절하는데에도 지연시간이 필요한데, 몇십 밀리세컨드 정도의 시간이 소요된다.
정확하게는 전압을 조절할때 사인파 그리듯 약간의 변동이 있으며 이를 안정화하는데 그만큼 걸리는 것이다.
3) 클럭 조절 절차
성능을 결정하는 것은 클럭이며 이 클럭을 높이거나 낮추기 위해서 전압이 조절되는 것이다. 따라서 클럭을 높이기 위해서는 전압 부터 높이고 이후에 클럭을 높여야하며, 클럭을 낮추기 위해서는 클럭을 먼저 낮춘 후에 전압을 낮춰야한다.
컴퓨터내 구조로 설명하자면 micro processor에서 목표 클럭을 AC/DC Converter에 보내면 Converter가 해당 Voltage로 조절하기 시작하고 이 Voltage를 micro processor에 별도로 붙어있는 VCO에서 감지하게 되면 클럭을 조절하면 된다고 알림을 보낸다.
위와 같은 절차는 컴퓨터 시스템 내에서 구현이 되어있으며 ARM 11과 같은 칩에도 포함되어있다.
4) Inter-task vs Intra-task
a. Inter-task scaling
이러한 스케일링은 작업 시작 시 발생하며 작업이 완료될때까지 변경되지 않는다. 흔히들 OS 수준의 다중 작업 스케줄링에서 많이 사용되는 방식이다.
b. Intra-task scaling
스케일링이 sub-task에서 발생하며 각 sub-task에서 서로 다른 클럭으로 설정되는 것이다.
5) Big-little CPU with DVFS
성능 좋고 Voltage 요구량이 높은 CPU와 성능이 낮지만 Voltage 요구량이 작은 CPU를 스마트폰에서 운용하는 데 필요에 따라 전환해가면서 쓰는 것으로 Voltage 조정이 가능하여 QoS는 유지하되 Voltage는 낮춰서 사용하는 방식이다.
※ 추가 업데이트 및 검증 예정이고, 올라간 부분도 아직 완벽하지 않으니 참고만 바란다.
참고자료
- Computer Organization and Design-The hardware/software interface, 5th edition, Patterson, Hennessy, Elsevier
- 서강대학교 이혁준 교수님 강의자료 - 고급 컴퓨터 구조
- Introduction to Intel® Architecture, The Basics
- Performance and power of big and little processor for web page loading [Zhu et al, HPCA ‘13]
- Paleologo, G.A., L., Benini, A., Bogliolo, and G., De Micheli. “Policy optimization for dynamic power management.” . In Proceedings 1998 Design and Automation Conference. 35th DAC. (Cat. No.98CH36175) (pp. 182-187).1998.