Gruplandırma nedir?
Gruplandırma, etkinlikleri Sensors HAL aracılığıyla bildirmeden önce sensör etkinliklerini bir sensör merkezinde ve/veya donanım FIFO'sunda arabelleğe almayı ifade eder. Sensör etkinliklerinin arabelleğe alındığı konum (sensör merkezi ve/veya donanım FIFO'su) bu sayfada "FIFO" olarak adlandırılır. Sensör etkinliği gruplandırması etkin olmadığında, sensör etkinlikleri mevcut olduğunda hemen Sensörler HAL'e bildirilir.
Gruplandırma, Android'i çalıştıran ana uygulama işlemcisini (AP) her etkinlik için uyandırmak yerine yalnızca birçok sensör etkinliği işlenmeye hazır olduğunda uyandırarak önemli ölçüde güç tasarrufu sağlayabilir. Olası güç tasarrufu, sensör merkezinin ve/veya FIFO'nun arabelleğe alabileceği etkinlik sayısıyla doğrudan ilişkilidir: Daha fazla etkinlik toplu olarak işlenebiliyorsa güç tasarrufu potansiyeli daha yüksektir. Gruplandırma, yüksek güçlü AP'lerin uyanma sayısını azaltmak için düşük güçlü bellek kullanımından yararlanır.
Gruplandırma yalnızca bir sensörün donanım FIFO'su olduğunda ve/veya bir sensör merkezinde etkinlikleri arabelleğe alabilmesi durumunda gerçekleşebilir. Her iki durumda da sensör, SensorInfo.fifoMaxEventCount
üzerinden tek seferde gruplandırılabilecek maksimum etkinlik sayısını bildirmelidir.
Bir sensörün FIFO içinde ayrılmış alanı varsa sensör, ayrılmış etkinliklerin sayısını SensorInfo.fifoReservedEventCount
üzerinden bildirmelidir. FIFO sensöre özelse SensorInfo.fifoReservedEventCount
, FIFO'nun boyutudur. FIFO birkaç sensör arasında paylaşılıyorsa bu değer sıfır olabilir. Yaygın bir kullanım alanı, tek etkin sensörse bir sensörün FIFO'nun tamamını kullanmasına izin vermektir. Birden fazla sensör etkinse her sensör için FIFO'da en az SensorInfo.fifoReservedEventCount
etkinlik için alan ayrılır. Sensör merkezi kullanılıyorsa garanti yazılım aracılığıyla uygulanabilir.
Sensör etkinlikleri aşağıdaki durumlarda toplu olarak işlenir:
- Sensörün mevcut maksimum rapor gecikmesi sıfırdan büyüktür. Bu, sensör etkinliklerinin HAL üzerinden bildirilmeden önce maksimum rapor gecikmesi kadar gecikebileceği anlamına gelir.
- AP askıya alma modundadır ve sensör uyandırıcı olmayan bir sensördür. Bu durumda, AP'yi uyandırmaması ve AP uyanana kadar saklanması gereken etkinlikler
Bir sensör gruplandırmayı desteklemiyorsa ve AP uykudaysa yalnızca uyanma sensör etkinlikleri AP'ye raporlanır ve uyanma dışı etkinlikler AP'ye raporlanmamalıdır.
Toplu işleme parametreleri
Gruplandırma davranışını yöneten iki parametre sampling_period_ns ve max_report_latency_ns'dir.
sampling_period_ns
, yeni bir sensör etkinliğinin ne sıklıkta oluşturulacağını belirler ve max_report_latency_ns
, etkinliğin Sensörler HAL'e bildirilmesi için ne kadar süre gerektiğini belirler.
sampling_period_ns
sampling_period_ns
parametresinin anlamı, belirtilen sensörün raporlama moduna bağlıdır:
- Sürekli:
sampling_period_ns
, örnekleme hızı yani etkinliklerin oluşturulma hızı - Değişiklik olduğunda:
sampling_period_ns
, etkinliklerin örnekleme hızını sınırlandırır. Yani etkinliklersampling_period_ns
nanosaniyeden daha hızlı oluşturulmaz. Hiçbir etkinlik oluşturulmazsa ve ölçülen değerler uzun süre boyunca değişmezse dönemlersampling_period_ns
'ten daha uzun olabilir. Daha fazla bilgi için değişiklik olduğunda raporlama moduna bakın. - Tek seferlik:
sampling_period_ns
yoksayılır. Bu durum - Özel:
sampling_period_ns
'ün özel sensörler için nasıl kullanıldığı hakkında ayrıntılı bilgi edinmek isterseniz Sensör Türleri başlıklı makaleyi inceleyin.
sampling_period_ns
'ün farklı modlardaki etkisi hakkında daha fazla bilgi için Raporlama modları başlıklı makaleyi inceleyin.
Sürekli ve değişiklikte olan sensörler için:
sampling_period_ns
,SensorInfo.minDelay
'ten azsa HAL uygulaması, bunumax(SensorInfo.minDelay, 1ms)
değerine sessizce sabitlemelidir. Android, 1000 Hz'den daha yüksek hızlarda etkinlik oluşturmayı desteklemez.sampling_period_ns
,SensorInfo.maxDelay
'dan büyükse HAL uygulaması,sampling_period_ns
değeriniSensorInfo.maxDelay
olarak sessizce kısaltmalıdır.
Fiziksel sensörlerin çalışabileceği hız ve saatlerinin doğruluğuyla ilgili bazen sınırlamalar vardır. Bu durumu hesaba katmak için, aşağıdaki tablodaki koşulları karşıladığı sürece gerçek örnekleme sıklığı istenen sıklıktan farklı olabilir.
İstenen sıklık |
Bu durumda gerçek sıklık |
---|---|
minimum sıklık değerinin altında (<1/maxDelay) |
minimum sıklık değerinin% 90 ile% 110'u arasında |
minimum ve maksimum sıklık arasında |
İstenen sıklık değerinin% 90 ile% 220'si arasında |
Maksimum sıklık üzerinde (>1/minDelay) |
Maksimum frekansın% 90 ile% 110'u arasında ve 1.100 Hz'in altında |
max_report_latency_ns
max_report_latency_ns
, nanosaniye cinsinden maksimum süreyi belirler. Bu süreye göre, AP uyanıkken etkinlikler HAL üzerinden bildirilmeden önce geciktirilebilir ve donanım FIFO'sunda depolanabilir.
Sıfır değeri, etkinliklerin ölçüldükleri anda raporlanması gerektiğini, FIFO'nun tamamen atlandığını veya sensörden bir etkinlik olduğu anda FIFO'nun boşaltıldığını gösterir.
Örneğin, max_report_latency_ns=0
ile 50 Hz'de etkinleştirilen bir ivmeölçer, AP etkinken saniyede 50 kez kesinti tetikler.
max_report_latency_ns>0
olduğunda, sensör etkinliklerinin algılanır algılanmaz raporlanması gerekmez. Hiçbir etkinlik max_report_latency_ns
nanosaniyeden fazla gecikmediği sürece, geçici olarak FIFO'da saklanabilir ve toplu olarak raporlanabilir. Bu, önceki toplu işlemden sonraki tüm etkinliklerin kaydedilip bir kerede döndürüldüğü anlamına gelir. Bu, AP'ye gönderilen kesinti miktarını azaltır ve sensör veri kaydedip gruplandırırken AP'nin daha düşük bir güç moduna (devre dışı) geçmesine olanak tanır.
Her etkinliğin kendisiyle ilişkilendirilmiş bir zaman damgası vardır. Bir etkinliğin bildirildiği zamanın geciktirilmesi, etkinlik zaman damgasını etkilemez. Zaman damgası doğru olmalı ve etkinliğin bildirildiği saate değil, fiziksel olarak gerçekleştiği saate karşılık gelmelidir.
Sensör etkinliklerinin FIFO'da geçici olarak depolanmasına izin vermek, etkinliklerin HAL'e gönderilme davranışını değiştirmez. Farklı sensörlerden gelen etkinlikler birbirine yerleştirilebilir ve aynı sensörden gelen tüm etkinlikler zaman sırasına göre düzenlenir.
Uyandırma ve uyandırma dışı etkinlikler
Uyanma sensörlerinden gelen sensör etkinlikleri bir veya daha fazla uyanma FIFO'sunda depolanmalıdır. Yaygın bir tasarım, tüm uyanma sensörlerinden gelen etkinliklerin birbirine bağlandığı tek, büyük, paylaşılan bir uyanma FIFO'suna sahip olmaktır. Alternatif olarak, sensör başına bir uyanma FIFO'su veya belirli uyanma sensörleri için özel FIFO'lar ve uyanma sensörlerinin geri kalanı için paylaşılan bir FIFO'ya sahip olabilirsiniz.
Benzer şekilde, uyandırma olmayan sensörlerden gelen sensör etkinlikleri bir veya daha fazla uyandırma olmayan FIFO'da depolanmalıdır.
Her durumda, uyanma sensörü etkinlikleri ve uyanma sensörü olmayan etkinlikler aynı FIFO'da birbirine karıştırılamaz. Uyandırma etkinlikleri bir uyandırma FIFO'sunda, uyandırma dışı etkinlikler ise uyandırma dışı FIFO'da depolanmalıdır.
Uyandırma FIFO'su için tek, büyük, paylaşılan FIFO tasarımı en iyi güç avantajlarını sağlar. Uyandırma olmayan FIFO için tek, büyük paylaşılan FIFO ve birkaç küçük ayrılmış FIFO tasarımı benzer güç özelliklerine sahiptir. Her FIFO'nun nasıl yapılandırılacağıyla ilgili daha fazla öneri için FIFO ayırma önceliği başlıklı makaleyi inceleyin.
Askıya alma modunun dışındaki davranış
AP etkinken (askıda modunda değilken), max_report_latency
'ten fazla gecikmedikçe etkinlikler geçici olarak FIFO'larda saklanır.
AP askıya alma moduna girmediği sürece hiçbir etkinlik atlanmaz veya kaybolmaz. Dahili FIFO'lar max_report_latency
saniye dolmadan önce dolduysa hiçbir etkinliğin kaybolmaması için etkinlikler o noktada raporlanır.
Birkaç sensör aynı FIFO'yu paylaşıyorsa ve bunlardan birinin max_report_latency
süresi dolarsa diğer sensörlerin max_report_latency
süresi henüz dolmamasına rağmen FIFO'daki tüm etkinlikler raporlanır. Bu, etkinlik gruplarının raporlanma sayısını azaltır. Bir etkinliğin bildirilmesi gerektiğinde tüm sensörlerdeki tüm etkinlikler bildirilir.
Örneğin, aşağıdaki sensörler etkinleştirilirse:
max_report_latency
= 20 saniye ile toplu ivme ölçermax_report_latency
= 5 saniye ile toplu olarak alınan jiroskop
İvme ölçer ve jiroskop aynı FIFO'yu paylaşmasa bile ivme ölçer grupları, jiroskop gruplarıyla aynı anda (5 saniyede bir) raporlanır.
Askıya alma modunda davranış
Gruplandırma, özellikle AP'yi uyanık tutmadan arka planda sensör verileri toplamak için faydalıdır. Sensör sürücülerinin ve HAL uygulamasının uyanma kilidi* tutmasına izin verilmediğinden AP, sensör verileri toplanırken bile askıya alma moduna girebilir.
AP askıya alınmışken sensörlerin davranışı, sensörün uyanma sensörü olup olmadığına bağlıdır. Daha fazla bilgi için Uyandırma sensörleri başlıklı makaleyi inceleyin.
Uyandırma olmayan FIFO dolduğunda, sarmalanması ve dairesel bir arabelleğe benzemesi gerekir. Bu durumda, eski etkinliklerin üzerine yeni etkinlikler yazılır. max_report_latency
, askıya alma modundayken uyandırmayan FIFO'lar üzerinde herhangi bir etki oluşturmaz.
Bir uyanma FIFO'su dolduğunda veya uyanma sensörlerinden birinin max_report_latency
süresi dolduğunda donanım, AP'yi uyandırmalı ve verileri bildirmelidir.
Her iki durumda da (uyanma ve uyanmama), AP askıya alma modundan çıkar çıkmaz, bazı sensörlerin max_report_latency
henüz geçmemiş olsa bile tüm FIFO'ların içeriğiyle bir toplu veri üretilir. Bu, AP'nin askıya alma moduna döndükten kısa süre sonra tekrar uyanma riskini en aza indirir ve dolayısıyla güç tüketimini en aza indirir.
*Sürücüler uyanma kilidi tutamazken dikkate değer bir istisna, sürekli raporlama modu olan bir uyanma sensörünün max_report_latency
< 1 saniye ile etkinleştirilmesidir. Bu durumda, AP askıya alma moduna ulaşmadan önce bir uyanma etkinliği tarafından uyandırıldığı için askıya alma moduna girmek için zamanı olmadığından sürücü bir uyanma kilidi tutabilir.
Uyandırma sensörlerini gruplandırırken alınacak önlemler
Cihaza bağlı olarak, AP'nin askıya alma modundan tamamen çıkması ve FIFO'yu temizlemeye başlaması birkaç milisaniye sürebilir. Uyandırma FIFO'su taşmadan cihazın askıya alma modundan çıkmasına izin vermek için FIFO'da yeterli boşluk ayrılmalıdır. Hiçbir etkinlik kaybolmaz ve max_report_latency
'ye uyulmalıdır.
Değişiklik olduğunda uyandırmayan sensörleri gruplandırırken alınacak önlemler
Değişiklik algılama sensörleri yalnızca ölçtükleri değer değiştiğinde etkinlik oluşturur. AP askıya alınmış moddayken ölçülen değer değişirse uygulamalar, AP uyanır uyanmaz bir etkinlik almayı bekler. Bu nedenle, uyandırma olmayan değişiklikle ilgili sensör etkinliklerinin gruplandırılması, sensör FIFO'sunu diğer sensörlerle paylaşıyorsa dikkatli bir şekilde yapılmalıdır. Her değişiklik algılama sensörü tarafından oluşturulan son etkinlik, diğer etkinliklerin üzerine yazılmaması için her zaman paylaşılan FIFO'nun dışında kaydedilmelidir. AP uyandığı zaman, FIFO'daki tüm etkinlikler raporlandıktan sonra son değişiklik algılama sensör etkinliği raporlanmalıdır.
Aşağıda, kaçınılması gereken bir durum verilmiştir:
- Bir uygulama, uyandırmayan adım sayıcıya (değişiklik olduğunda) ve uyandırmayan ivme ölçere (sürekli) kaydedilir. Bu iki kaynak da aynı FIFO'yu paylaşır.
- Uygulama, adım sayacı etkinliği
step_count=1000 steps
code> alır. - AP askıya alınır.
- Kullanıcı 20 adım atar. Bu, adım sayıcı ve ivmeölçer etkinliklerinin birbirine karıştırılmasına neden olur. Son adım sayıcı etkinliği
step_count = 1020 steps
olur. - Kullanıcı uzun süre hareket etmez. Bu durum, ivmeölçer etkinliklerinin FIFO'da birikmeye devam etmesine ve sonunda paylaşılan FIFO'daki her
step_count
etkinliğinin üzerine yazılmasına neden olur. - AP uyanır ve FIFO'daki tüm etkinlikler uygulamaya gönderilir.
- Uygulama yalnızca ivmeölçer etkinlikleri alır ve kullanıcının yürümediğini düşünür.
HAL, son adım sayıcı etkinliğini FIFO'nun dışına kaydederek diğer tüm adım sayıcı etkinliklerinin üzerine ivmeölçer etkinlikleri yazılmış olsa bile AP uyandığı zaman bu etkinliği bildirebilir. Bu sayede, AP uyanık olduğunda uygulama step_count = 1020 steps
alır.
Toplu işleme özelliğini uygulama
Güç tasarrufu için gruplandırma, erişim noktası yardımı olmadan uygulanmalı ve erişim noktasının gruplandırma sırasında askıya alınmasına izin verilmelidir.
Bir sensör merkezinde toplu işlem yapılıyorsa sensör merkezinin güç kullanımı en aza indirilmelidir.
Maksimum rapor gecikmesi, özellikle belirtilen sensör etkinken dilediğiniz zaman değiştirilebilir. Bu işlem, etkinliklerin kaybolmasına neden olmaz.
FIFO ayırma önceliği
Donanım FIFO'sunun ve/veya sensör hub'ının arabellek boyutunun sınırlı olduğu platformlarda sistem tasarımcılarının her sensör için ne kadar FIFO ayıracağını seçmesi gerekebilir. Bu seçime yardımcı olmak için farklı sensörlerde gruplandırma uygulandığında kullanılabilecek uygulamaların bir listesini burada bulabilirsiniz.
Yüksek değer: Düşük güçlü yaya ölü hesaplaması
Hedef gruplandırma süresi: 1 ila 10 dakika
Gruplandırılacak sensörler:
- Uyandırma adımı algılayıcısı
- 5 Hz'de uyandırma oyunu rotasyon vektörü
- 5 Hz'de uyandırma barometresi
- 5 Hz'de kalibre edilmemiş manyetometreyi uyandırın
Bu verileri gruplandırmak, AP'nin askıya alınmasına izin verirken yaya ölü hesaplaması yapılmasına olanak tanır.
Yüksek değer: Orta güçte aralıklı etkinlik/jest algılama
Hedef gruplandırma süresi: 3 saniye
Toplu olarak kaydedilecek sensörler: 50 Hz'de uyandırmayan ivme ölçer
Bu verileri gruplandırmak, veriler toplanırken AP'yi açık tutmak zorunda kalmadan rastgele etkinlikleri ve hareketleri düzenli olarak tanımaya olanak tanır.
Orta değer: Orta güçte sürekli etkinlik/jest tanıma
Hedef gruplandırma süresi: 1 ila 3 dakika
Toplu olarak kullanılacak sensörler: 50 Hz'de uyandırma ivme ölçeri
Bu verileri gruplandırmak, veriler toplanır
Orta-yüksek değer: Yük azaltmayı kesintiye uğratma
Hedef gruplandırma süresi: < 1 saniye
Gruplandırılacak sensörler: Genellikle uyandırmayan, yüksek frekanslı herhangi bir sensör.
Jiroskop 240 Hz olarak ayarlanmışsa yalnızca 10 jiroskop etkinliğini gruplandırmak bile kesinti sayısını saniyede 240'ten 24'e düşürebilir.
Orta değer: Sürekli düşük sıklıkta veri toplama
Hedef gruplandırma süresi: 1 ila 10 dakika
Gruplandırılacak sensörler:
- 1 Hz'de uyandırma barometresi
- 1 Hz'de uyanma nem sensörü
- Benzer oranlarda diğer düşük frekanslı uyandırıcı sensörler
Düşük güçte izleme uygulamaları oluşturmaya olanak tanır.
Orta-düşük değer: Sürekli tam sensör koleksiyonu
Hedef gruplandırma süresi: 1 ila 10 dakika
Toplu olarak kullanılacak sensörler: Yüksek frekanslarda tüm uyanma sensörleri
AP'yi askıya alma modunda bırakırken sensör verilerinin eksiksiz toplanmasına olanak tanır. Yalnızca FIFO alanı sorun değilse kullanın.