Toplu işleme

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 etkinlikler sampling_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önemler sampling_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ı, bunu max(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ğerini SensorInfo.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çer
  • max_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:

  1. 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.
  2. Uygulama, adım sayacı etkinliği step_count=1000 stepscode> alır.
  3. AP askıya alınır.
  4. 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.
  5. 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.
  6. AP uyanır ve FIFO'daki tüm etkinlikler uygulamaya gönderilir.
  7. 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.