İşletim sistemi tasarımı neden güç tüketimini azaltabilir?


11

Android ve iOS gibi işletim sistemlerinin pil ömrünü uzatmak için bir şekilde optimize edildiğini okudum.

Anladığım kadarıyla, bir CPU belirli bir zamanda belirli sayıda işlem gerçekleştirir, bu yüzden gerekli işlem sayısını azaltarak uygulamaları hızlandırabileceğinizi düşünürüm, ancak CPU yine de y içinde x işlem yapacağından , gücü etkiler mi?

Ayrıca, bir işlem daha fazla RAM kullanıyorsa, daha fazla güç tüketir mi?

Yanıtlar:


15

Akıllı telefonlara, dizüstü bilgisayarlara ve hatta masaüstü bilgisayarlara giren yaygın CPU'ların değişken bir saat hızı vardır. Programlayıcı boşta kalma süresi olduğunu tespit ettiğinde, saat hızını düşürebilir ve CPU zamanı için rekabet eden daha fazla işlem varsa tekrar artırabilir.

Pille çalışan cihazlar için optimize edilmiş CPU'lar, her biri kendi saatine sahip birçok işlevsel bileşenden oluşur (örnek: ARM Cortex A8 ). Bir bileşen boşta olduğunda, işletim sistemi gücü kapatabilir (veya saatini azaltabilir). Örneğin, çok çekirdekli birçok CPU'da (ileri teknoloji mobil cihazlardakiler gibi), her çekirdek ayrı ayrı açılıp kapatılabilir. ARM, bu oyunda özellikle iyidir, bu da çoğu akıllı telefonun ARM CPU'larına sahip olmasının nedenlerinden biridir.

Saat hızının değiştirilmesi veya elektronik bileşenlerin saatinin kapatılması güç yönetimi olarak bilinir . Tam donanımlı donanım modeline birçok bağımlılığı olan, pille çalışan bir aygıt için bir işletim sistemi yazmanın ve optimize etmenin karmaşık bir parçası olma eğilimindedir.

CPU için gereken çevre birimleri için de geçerlidir. Arkadan aydınlatmalı ekran, örneğin bir akıllı telefonun ardından radyoyu kullanan büyük bir güç tüketicisidir. CPU işletim sistemi, çevre birimlerinin güç yönetiminde rol oynayabilir; ikincil yongalar ayrıca güç yönetimini de gerçekleştiren kendi yazılımlarını çalıştırır.

Uygulamaların güç tüketimini düşük tutma konusunda oynayacakları rolleri vardır: işletim sisteminin işini yapmasına izin vermelidirler. Bir uygulamanın yapabileceği en kötü şey yoklamadır - bir döngüyü çalıştırmaktır while (not_ready()) {}. while (not_ready()) {usleep(100);}İşlemcinin düşük güç moduna girmesi için yeterli zaman tanımadığından ya da eğer öyleyse, her uygun olmayan uyanma enerji israfı anlamına geldiği için küçük bir gecikme yapmak bile yardımcı olmaz. Bu nedenle, işletim sistemi API'leri, uygulamaların hiçbir zaman yok olmasına gerek kalmayacak, bunun yerine bir tür olay mekanizmasına abone olabilecek ve ilgili bir olay bildirilene kadar boşta kalabilecek şekilde tasarlanmalıdır. Uygulamaların bu tür mekanizmalardan faydalanması gerekir, bu nedenle tüm yazılım yığınının tasarımı güç tüketimi üzerinde bir etkiye sahiptir.

Intel'in Powertop yardımcı programı ile bilgisayarınızın güç tüketiminden neyin sorumlu olduğu hakkında bilgi alabilirsiniz . Akıllı telefonların genellikle ne kadar güç uygulamasının tüketildiğini görmenin bir yolu vardır. Uygulamaya göre güç tüketiminin muhasebeleştirilmesi oldukça zordur: eğer bir bileşen iki uygulama için uyanırsa, uyanma süresi bunlardan birine keyfi olarak veya hiçbirine açıklanmayabilir; çevre birimlerinin güç tüketimi de sorumlu uygulama ile her zaman kolayca takip edilemez.

Bir RAM yongası, hangi bitlerinin aktif bir işlemin verilerini depoladığını bilmez, bu nedenle bu şekilde seçici olarak kapatılamaz. Bir işlemin güç tüketimi, kullandığı bellek miktarıyla ilişkili değildir (RAM eriştiği sürece güç tüketirken, aynı belleği yeniden kullanmak veya farklı RAM alanları kullanmak güç tüketimi açısından bir fark yaratmaz).


4

İşlemci gücü açısından, işletim sisteminin yapabileceği en önemli şey, uygulamaların yoklamadan vazgeçmesini sağlayan API'ler sağlamaktır. (Ve eğer varsa, çekirdek ve aygıt sürücülerindeki tüm yoklamaları da ortadan kaldırın.) Daha sonra yapılacak bir şey olmadığında işlemci düşük güçte uyku durumuna getirilebilir.

Her cihaz için, kullanıcı uygulamalarının bir istek sonrasında uykuya dalması ve daha sonra sadece sonuç hazır olduğunda tekrar uyandırılması için bir yol olması gerekir.

Açıkçası sıkı seçim döngüleri bir felakettir (çünkü işlemciyi tamamen uyanık tutarlar ve işe yaramaz nooplar ve atlamalar yürütürler.) Ancak daha ince, ancak kullanıcı uygulamasının zamanlayıcıları ayarladığı, zamanlayıcı alarmında uyanma, kontrol etme gibi kötü durumlar Bazı durumlar, zamanlayıcıyı sıfırlar ve uyku moduna geri döner.

Bu kısım hakkında daha az şey biliyorum, ancak işlemci çekirdeğini uyandırmadan uzun süreli tekrar kesintilerini işlemek için DMA (doğrudan bellek erişimi) denetleyicilerini kullanmanın yaratıcı yolları olabileceğini düşünüyorum.


3

İşletim sisteminin ana rolü, donanımdan mümkün olduğunca bağımsız bir çalışma ortamı sağlamaktır. Kimin hangi donanımı, kimin ne zaman ve nasıl donanım kullandığını bilir. Bu, işletim sisteminin kullanılmadığında donanım güç tüketimini azaltmasını sağlar.

Modern donanımlar, güç tüketimini azaltmak için birçok yol sağlar.

  • kullanılmayan çevre birimlerinin ve işlemcinin bir kısmının kapatılması (kayan nokta aritmetik birimleri, işlemci çekirdeği, ...)
  • daha az kullanılan parçaların aşağı doğru saatlenmesi
  • mevcut saat frekansına uyacak şekilde güç kaynağı ayarı (bir işlemci çalışma voltajını anında, bazen yüzlerce mA ile değiştirebilirsiniz)

bir işlem daha fazla RAM kullanıyorsa, daha fazla güç tüketir mi?

Pek sayılmaz. Bununla birlikte, sisteminizde 1 GB DRAM varsa, ancak bazı bellek denetleyicileriyle yalnızca 512 MB kullanıyorsanız, DRAM'in yenilenmesini durdurmak ve böylece güç tüketimini azaltmak mümkündür. LPDDR , kendi kendini yenileme sırasında aynı işlemi yapmak için Kısmi Alan Kendi Kendini Yenilemeyi destekler (işlemci dururken, çoğu zaman mobil cihazlarda doğrudur).

Gördüğünüz gibi, modern mimarilerde güç tüketimini azaltmanın birçok yolu vardır, ancak işletim sisteminin bunu ele almasını gerektirir. PASR gibi bazı özelliklerin kullanımı çok zordur, bu, bellek yönetimini uyarlamak, askıya alma / sürdürme prosedürlerini uygulamak için işletim sisteminde çok fazla çalışma gerektirir ...


Yan not: RAM'e aç süreçle doğrudan ilgili olmamakla birlikte, daha fazla RAM kullanımı, enerji verimliliğine (performansın yanı sıra) zarar verebilecek daha az dosya sistemi önbelleğine neden olabilir.
Paul A. Clayton

3

Şüphesiz farkında olmadığınız gibi, işletim sistemi çeşitli listeler tutar. Bu listelerden ikisi hazır liste ve zamanlayıcı listesidir. Hazır listesi, hangi görevlerin / iş parçacıklarının çalıştırılmaya hazır olduğunu tanımlar. Zamanlayıcı listesi, engellenmiş durumdaki görevleri / iş parçacıklarını zaman aşımı ile tanımlar.

İşletim sisteminin boş bir hazır listesinin olduğunu düşünün. Yani, çalıştırılmaya hazır görevler tükendi (boşta durumda). Bazı işlemciler (x86 gibi), işletim sisteminin harici bir kesinti (kene kesintisi gibi) tarafından uyandırılıncaya kadar işlemcinin durmasına neden olması için durdurabileceği bir durdurma talimatına sahiptir. Bu süre zarfında daha az güç tüketir. Bu teknik, zamanlayıcı listesine göz atarak daha da geliştirilebilir. Eğer boştaysanız ve bir görevin bir zamanlayıcı işaretinden uyanabileceği en kısa sürede 100 kenarı olduğunu biliyorsanız, işaretleme hızı geçici olarak değiştirilebilir ve 100 kez daha yavaş söylenebilir. Bu şekilde, işlemci daha uzun bir süre daha az enerji harcayabilir, çünkü 100'e kadar kene kesintisine hizmet etmek zorunda kalmaz.

Harici kesinti geldiğinde, onay oranının yeniden hesaplanması gerekir. Harici kesme bir görevi hazır hale getirirse, tik oranı normale döner. Değilse, uyulacak kene sayısı yeni (yavaşlamış) kene oranı ile birlikte yeniden hesaplanmalıdır.

Bu yardımcı olur umarım.


2

Diğer yanıtlara eklemek için:
Sorunuz iOS ve Android'i işletim sistemleri olarak görüyor, ancak "İşletim Sistemi" bunların yalnızca bir kısmı.
Hem Android hem de iOS çerçevelerdir ve gerçek işletim sisteminin bir parçası olarak kabul edilmeyen ancak güç tüketimini azaltmada aktif olan birçok parçayı içerir.
Örneğin, Android tasarım, uygulama geliştiricilerinin gizlendiklerinde durumlarını kaydetmelerine izin verir, böylece işlemler aktif olarak kullanılmadığında sonlandırılabilir ve böylece hazır iş parçacıklarının miktarını azaltabilir ve çekirdek kapatma ve saat hızı azaltmalarına izin verebilir.
"İşletim Sistemi" nde uyarlanabilir parlaklık, wi-fi uyku durumu, temizleme iplikleri, zamanlama havuzu oluşturma, LED göstergeleri, hücresel bekleme davranışı ve güç tüketimini büyük ölçüde etkileyen diğer özellikler vardır.
Buna ek olarak, bazı mobil platformlar CPU / GPU kullanım oranlarını optimize etmek için çok çalışmaktadır, çünkü GPU grafiklere daha fazla adapte edilmiştir ve mobil manzaraya nispeten yeni bir eklentidir, işletim sisteminin giderek daha fazla grafikle ilgili kısmı CPU'dan işi temizleyen ve kullanılacak CPU güç optimizasyonlarının kullanılmasına izin veren GPU (ve çoğu durumda sistemi bir bütün olarak hızlandırır).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.