OS 설계가 전력 소비를 줄일 수있는 이유는 무엇입니까?


11

안드로이드 및 iOS와 같은 OS는 배터리 수명을 개선하기 위해 어떻게 든 최적화되었다는 것을 읽었습니다.

내 이해는 CPU가 특정 시간에 특정 수의 작업을 실행한다는 것이므로 필요한 작업 수를 줄이면 응용 프로그램 속도를 높일 수 있다고 생각하지만 CPU는 여전히 y 시간에 x 작업을 수행 하므로 그렇게해서는 안됩니다. 힘에 영향을 미칩니 까?

또한 프로세스가 더 많은 RAM을 차지하는 경우 더 많은 전력을 소비합니까?

답변:


15

스마트 폰, 랩톱 및 데스크탑 PC에 들어가는 일반적인 CPU는 클럭 속도가 다릅니다. 스케줄러가 유휴 시간이 있음을 감지하면 클럭 속도를 줄이고 CPU 시간에 대해 경쟁하는 프로세스가 더 있으면 다시 증가시킬 수 있습니다.

배터리 구동 장치에 최적화 된 CPU는 각각 자체 클럭을 가진 많은 기능 구성 요소로 구성되는 경향이 있습니다 (예 : ARM Cortex A8 ). 한 구성 요소가 유휴 상태 인 경우 운영 체제에서 구성 요소를 끄거나 시계를 줄이면 전원이 절약됩니다. 예를 들어, 많은 멀티 코어 CPU (예 : 고급 모바일 장치의 CPU)에서 각 코어를 개별적으로 켜거나 끌 수 있습니다. ARM은이 게임에 특히 적합합니다. 이는 대부분의 스마트 폰에 ARM CPU가있는 이유 중 하나입니다.

전자 부품의 클럭 속도를 변경하거나 클럭을 끄는 것을 전원 관리라고 합니다. 정확한 하드웨어 모델에 의존하는 배터리 구동 장치를위한 운영 체제 작성 및 최적화의 복잡한 부분 인 경향이 있습니다.

CPU는 주변 장치에도 적용됩니다. 백라이트 디스플레이는 예를 들어 라디오와 같은 스마트 폰의 주요 전력 소비 원입니다. CPU 운영 체제는 주변 장치의 전원 관리에 중요한 역할을합니다. 보조 칩은 전원 관리를 수행하는 자체 펌웨어도 실행합니다.

응용 프로그램은 전력 소비를 낮추는 데있어 역할을 수행합니다. 운영 체제가 작동하도록해야합니다. 응용 프로그램이 할 수있는 최악의 일은 폴링 (루프 실행) while (not_ready()) {}입니다. while (not_ready()) {usleep(100);}프로세서가 저전력 모드로 전환 할 수있는 충분한 시간을 허용하지 않거나, 그렇지 않은 경우, 각각의 비정상적인 웨이크 업은 에너지 낭비를 의미 하므로 작은 지연을 도입해도 도움이되지 않습니다. 따라서 운영 체제 API는 애플리케이션이 폴링하지 않아도되도록 대신 일종의 이벤트 메커니즘을 구독하고 관련 이벤트가 통지 될 때까지 유휴 상태를 유지할 수 있도록 설계해야합니다. 애플리케이션은 이러한 메커니즘을 활용해야하므로 전체 소프트웨어 스택의 설계가 전력 소비에 영향을 미칩니다.

인텔의 Powertop 유틸리티 를 사용하여 PC의 전력 소비에 대한 책임에 대한 정보를 얻을 수 있습니다 . 스마트 폰은 일반적으로 얼마나 많은 전력 애플리케이션이 소비하고 있는지 확인할 수 있습니다. 애플리케이션에 의한 전력 소비를 정확하게 계산하는 것은 어렵습니다. 컴포넌트가 두 애플리케이션에 대해 웨이크 업하는 경우, 웨이크 업 시간은 그 중 하나를 임의적으로 또는 전혀 고려하지 않을 수 있습니다. 주변 장치의 전력 소비도 항상 담당 응용 프로그램에서 쉽게 추적 할 수있는 것은 아닙니다.

RAM 칩은 비트 중 어느 비트가 활성 프로세스의 데이터를 저장하는지 알지 못하므로 이러한 방식으로 선택적으로 끌 수 없습니다. 프로세스의 전력 소비는 사용하는 메모리의 양과 관련이 없습니다 (RAM 액세스가 전력을 소비하는 경우를 제외하고 동일한 메모리를 재사용하거나 다른 RAM 영역을 사용하는 것은 전력 소비와 관련이 없습니다).


4

프로세서 성능 측면에서 OS가 수행 할 수있는 주요 작업은 응용 프로그램의 폴링을 방해하는 API를 제공하는 것입니다. (또한 커널과 장치 드라이버 내부에있는 모든 폴링을 제거하십시오.) 아무 것도 할 필요가 없을 때마다 프로세서를 절전 절전 상태로 전환 할 수 있습니다.

모든 장치에는 요청 후 사용자 앱이 절전 모드로 전환 된 후 결과가 준비 될 때만 다시 깨울 수있는 방법이 필요합니다.

분명히 폴링 루프는 프로세서가 완전히 깨어 있고 쓸데없는 멍청이와 점프를 계속하기 때문에 재앙입니다. 그러나 더 미묘하지만 사용자 앱이 타이머를 설정하고 타이머 알람을 깨우고 확인하는 나쁜 경우가 있습니다. 어떤 상태에서는 타이머를 재설정하고 다시 절전 모드로 돌아갑니다.

이 부분에 대해서는 잘 모르지만 프로세서 코어 자체를 깨우지 않고 긴 반복 인터럽트 문자열을 처리하기 위해 DMA (직접 메모리 액세스) 컨트롤러를 사용하는 창의적인 방법이있을 수도 있다고 생각합니다.


3

OS의 주요 역할은 가능한 한 하드웨어와 독립적으로 런타임 환경을 제공하는 것입니다. 누가 어떤 하드웨어를 사용하는지, 언제 그리고 어떻게 누군가가 하드웨어를 사용하는지 알고 있습니다. 이를 통해 OS는 사용하지 않을 때 하드웨어 전력 소비를 줄일 수 있습니다.

최신 하드웨어는 다음과 같은 여러 가지 방법으로 전력 소비를 줄입니다.

  • 사용하지 않는 주변 장치 및 프로세서의 일부 종료 (부동 소수점 산술 단위, 프로세서 코어 등)
  • 덜 사용되는 부품의 다운 클로킹 (프로세서 코어 포함)
  • 현재 클록 주파수에 맞게 전원 공급 장치 조정 (프로세서 작동 전압을 수백 mA 씩 즉시 변경 가능)

프로세스가 더 많은 RAM을 차지하면 더 많은 전력을 소비합니까?

실제로는 아닙니다. 그럼에도 불구하고 시스템에 1GB의 DRAM이 있지만 일부 메모리 컨트롤러와 함께 512MB 만 사용하는 경우 DRAM의 일부를 새로 고치는 것을 중지하여 전력 소비를 줄일 수 있습니다. LPDDR 은 부분 새로 고침을 지원하여 자체 새로 고침 중에도 동일한 작업을 수행합니다 (프로세서가 중지 된 동안 모바일 장치에서 대부분 적용됨).

아시다시피, 최신 아키텍처에서는 전력 소비를 줄이는 여러 가지 방법이 있지만 OS에서 처리해야합니다. PASR과 같은 일부 기능은 사용하기가 매우 까다롭기 때문에 OS에서 메모리 관리를 조정하고 일시 중지 / 다시 시작 절차를 구현하려면 많은 작업이 필요합니다.


참고 : RAM을 많이 사용하는 프로세스와 직접 관련이있는 것은 아니지만 RAM을 많이 사용하면 파일 시스템 캐싱이 줄어들어 에너지 효율성 (성능뿐만 아니라)을 손상시킬 수 있습니다.
Paul A. Clayton

3

의심의 여지없이 OS는 다양한 목록을 유지 관리합니다. 이 목록 중 2 개는 준비 목록과 타이머 목록입니다. 준비 목록은 실행할 준비가 된 작업 / 스레드를 식별합니다. 타이머 목록은 시간 초과로 차단 된 상태의 작업 / 스레드를 식별합니다.

OS에 빈 준비 목록이 있다고 가정하십시오. 즉, 실행할 준비가 된 작업이 유휴 상태입니다 (유휴 상태 임). x86과 같은 일부 프로세서에는 외부 인터럽트 (예 : 틱 인터럽트)에 의해 깨어날 때까지 프로세서가 중지되도록 OS에서 호출 할 수있는 중지 명령이 있습니다. 이 기간 동안 전력 소비가 적습니다. 이 기술은 타이머 목록에서 엿봄으로써 더욱 향상 될 수 있습니다. 유휴 상태이고 타이머 틱에서 작업을 가장 빨리 깨울 수있는 것이 100 틱 떨어진 경우, 틱 속도가 일시적으로 100 배 느리도록 수정 될 수 있습니다. 이런 식으로 프로세서는 최대 100 틱 인터럽트까지 처리 할 필요가 없기 때문에 더 오랜 시간 동안 더 적은 에너지를 소비 할 수 있습니다.

외부 인터럽트가 도달하면 틱 속도를 다시 계산해야합니다. 외부 인터럽트가 작업을 준비한 경우 틱 속도는 정상으로 돌아갑니다. 그렇지 않은 경우, 잠자 게하는 진드기 수를 새로운 (느린) 진드기 비율과 함께 다시 계산해야합니다.

도움이 되었기를 바랍니다.


2

다른 답변에 추가하려면 :
귀하의 질문은 iOS 및 Android를 운영 체제로 간주하지만 "운영 체제"는 그 일부입니다.
Android와 iOS는 모두 프레임 워크이며 실제 OS의 일부로 간주되지 않지만 전력 소비를 줄이는 데 많은 부분을 포함합니다.
예를 들어, Android는 의도적으로 애플리케이션 개발자가 숨겨 졌을 때 상태를 저장할 수 있도록하여 적극적으로 사용하지 않을 때 프로세스를 종료하여 준비된 스레드의 양을 줄이고 코어 종료 및 클럭 속도 감소를 허용합니다.
"OS"에는 적응 형 밝기, Wi-Fi 절전 상태, 정리 스레드, 일정 풀링, LED 표시기, 셀룰러 대기 동작 및 전력 소비에 크게 영향을 미치는 기타 측면을 설정하는 기능이 있습니다.
또한 일부 모바일 플랫폼은 GPU가 그래픽에 더 적합하고 모바일 환경에 상대적으로 새로 추가되어 점점 더 많은 그래픽 관련 OS 부분으로 이동하고 있기 때문에 CPU / GPU 사용률 최적화를 위해 열심히 노력해 왔습니다. GPU는 CPU에서 작업을 지우고 CPU 전원 최적화 사용을 허용합니다 (대부분의 경우 시스템 전체의 속도를 높임).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.