yığınlama

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Toplu işleme nedir?

Toplu işlem, olayları Sensors HAL aracılığıyla raporlamadan önce bir sensör hub'ında ve/veya donanım FIFO'sunda sensör olaylarının ara belleğe alınması anlamına gelir. Sensör olaylarının ara belleğe alındığı konum (sensör merkezi ve/veya donanım FIFO'su) bu sayfada "FIFO" olarak anılır. Sensör olayı gruplandırması etkin olmadığında, sensör olayları mevcut olduğunda hemen Sensors HAL'a bildirilir.

Toplu işlem, her bir olay için uyandırmak yerine, birçok sensör olayı işlenmeye hazır olduğunda yalnızca Android çalıştıran ana uygulama işlemcisini (AP) uyandırarak önemli ölçüde güç tasarrufu sağlayabilir. Potansiyel güç tasarrufu, sensör hub'ının ve/veya FIFO'nun arabelleğe alabileceği olay sayısıyla doğrudan ilişkilidir: daha fazla olay gruplandırılabiliyorsa, güç tasarrufu için daha büyük bir potansiyel vardır. Toplu işlem, yüksek güçlü AP uyanma sayısını azaltmak için düşük güçlü bellek kullanımını güçlendirir.

Yığın oluşturma, yalnızca bir sensör bir donanım FIFO'suna sahip olduğunda ve/veya bir sensör merkezi içindeki olayları arabelleğe alabildiğinde gerçekleşebilir. Her iki durumda da sensör, bir kerede gruplanabilecek maksimum olay sayısını SensorInfo.fifoMaxEventCount aracılığıyla bildirmelidir.

Bir sensörde bir FIFO içinde ayrılmış alan varsa, sensör, ayrılmış olayların sayısını SensorInfo.fifoReservedEventCount aracılığıyla bildirmelidir. FIFO sensöre ayrılmışsa, o zaman 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 durumu, tek aktif sensörse bir sensörün tüm FIFO'yu kullanmasına izin vermektir. Birden fazla sensör aktifse, her sensöre FIFO'da en az SensorInfo.fifoReservedEventCount olayları için garantili alan sağlanır. Bir sensör göbeği kullanılıyorsa, garanti yazılım aracılığıyla uygulanabilir.

Sensör olayları aşağıdaki durumlarda gruplandırılır:

  • Sensörün mevcut maksimum rapor gecikmesi sıfırdan büyüktür; bu, sensör olaylarının HAL aracılığıyla rapor edilmeden önce maksimum rapor gecikmesine kadar ertelenebileceği anlamına gelir.
  • AP askıya alma modundadır ve sensör, uyanmayan bir sensördür. Bu durumda olaylar AP'yi uyandırmamalı ve AP uyanana kadar saklanmalıdır.

Bir sensör gruplamayı desteklemiyorsa ve AP uykudaysa, AP'ye yalnızca uyanma sensörü olayları bildirilir ve AP'ye uyanma dışı olaylar bildirilmemelidir.

Gruplama parametreleri

Toplu işleme davranışını yöneten iki parametre, sample_period_ns ve max_report_latency_ns'dir . sampling_period_ns , yeni bir sensör olayının ne sıklıkla oluşturulacağını belirler ve max_report_latency_ns , olayın Sensors HAL'a ne kadar süreyle rapor edilmesi gerektiğini belirler.

sample_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ıdır, yani olayların oluşturulduğu hızdır.
  • On-change: sample_period_ns, olayların sampling_period_ns hızını sınırlar, yani olaylar her sampling_period_ns nanosaniyesinden daha hızlı üretilmez. Herhangi bir olay üretilmezse ve ölçülen değerler uzun süreler boyunca değişmezse, periyotlar sampling_period_ns daha uzun olabilir. Daha fazla ayrıntı için bkz . değişiklik durumunda raporlama modu.
  • Tek seferlik: sampling_period_ns yok sayılır. Etkisi yok.
  • Özel: Özel sensörler için sampling_period_ns öğesinin nasıl kullanıldığına ilişkin ayrıntılar için bkz. Sensör Türleri .

sampling_period_ns farklı modlardaki etkisi hakkında daha fazla bilgi için bkz. Raporlama modları .

Sürekli ve değişimli sensörler için:

  • sampling_period_ns , SensorInfo.minDelay küçükse, HAL uygulaması bunu sessizce max(SensorInfo.minDelay, 1ms) olarak kenetlemelidir. Android, 1000 Hz'den fazla olayların oluşturulmasını desteklemez.
  • sampling_period_ns , SensorInfo.maxDelay değerinden büyükse, HAL uygulamasının bunu sessizce SensorInfo.maxDelay olarak kesmesi gerekir.

Fiziksel sensörlerin bazen çalışabilecekleri hızlar ve saatlerinin doğruluğu konusunda sınırlamaları vardır. Bunu hesaba katmak için, gerçek örnekleme frekansı, aşağıdaki tablodaki gereksinimleri karşıladığı sürece, istenen frekanstan farklı olabilir.

İstenen frekans ise

O zaman gerçek frekans olmalıdır

minimum frekansın altında (<1/maxDelay)

minimum frekansın %90 ila %110'u arasında

minimum ve maksimum frekans arasında

istenen frekansın %90 ila %220'si arasında

maksimum frekansın üzerinde (>1/minGecikme)

maksimum frekansın %90 ila %110'u arasında ve 1100 Hz'nin altında

max_report_latency_ns

max_report_latency_ns , AP uyanıkken HAL aracılığıyla bildirilmeden önce olayların geciktirilebileceği ve donanım FIFO'sunda saklanabileceği maksimum süreyi nanosaniye cinsinden ayarlar.

Sıfır değeri, ya FIFO'yu tamamen atlayarak ya da sensörden bir olay mevcut olduğu anda FIFO'yu boşaltarak, olayların ölçüldüğü anda rapor edilmesi gerektiğini belirtir.

Örneğin, 50 Hz'de max_report_latency_ns=0 ile etkinleştirilen bir ivmeölçer, AP uyanıkken saniyede 50 kez kesintileri tetikleyecektir.

max_report_latency_ns>0 olduğunda, sensör olaylarının algılanır algılanmaz bildirilmesine gerek yoktur. Hiçbir olay max_report_latency_ns nanosaniyeden fazla gecikmediği sürece, FIFO'da geçici olarak saklanabilir ve gruplar halinde raporlanabilirler. Bu, önceki gruptan itibaren tüm olayların kaydedildiği ve bir kerede döndürüldüğü anlamına gelir. Bu, AP'ye gönderilen kesintilerin miktarını azaltır ve AP'nin sensör verileri yakalayıp gruplandırırken daha düşük bir güç moduna (boşta) geçmesine izin verir.

Her olayın kendisiyle ilişkilendirilmiş bir zaman damgası vardır. Bir olayın raporlanma zamanını geciktirmek, olay zaman damgasını etkilemez. Zaman damgası doğru olmalı ve olayın bildirildiği zamana değil, fiziksel olarak meydana geldiği zamana karşılık gelmelidir.

Sensör olaylarının FIFO'da geçici olarak saklanmasına izin vermek, HAL'a olay gönderme davranışını değiştirmez; farklı sensörlerden gelen olaylar serpiştirilebilir ve aynı sensörden gelen tüm olaylar zaman sıralıdır.

Uyanma ve uyandırmama olayları

Uyandırma sensörlerinden gelen sensör olayları, bir veya daha fazla uyandırma FIFO'sunda saklanmalıdır. Ortak bir tasarım, tüm uyandırma sensörlerinden gelen olayların birbirine eklendiği tek, büyük, paylaşılan bir uyandırma FIFO'suna sahip olmaktır. Alternatif olarak, sensör başına bir uyandırma FIFO'suna veya belirli uyandırma sensörleri için özel FIFO'lara ve geri kalan uyandırma sensörleri için paylaşılan bir FIFO'ya sahip olabilirsiniz.

Benzer şekilde, uyandırma olmayan sensörlerden gelen sensör olayları, bir veya daha fazla uyandırılmayan FIFO'da saklanmalıdır.

Her durumda, uyandırma sensörü olayları ve uyandırma dışı sensör olayları aynı FIFO'da serpiştirilemez. Uyandırma olayları bir uyandırma FIFO'sunda saklanmalıdır ve uyandırma dışı olaylar, uyandırma olmayan bir FIFO'da saklanmalıdır.

Uyandırma FIFO için, tek, büyük, paylaşılan FIFO tasarımı en iyi güç avantajlarını sağlar. Uyanmayan FIFO için, tek, büyük paylaşımlı FIFO ve birkaç küçük ayrılmış FIFO tasarımı benzer güç özelliklerine sahiptir. Her bir FIFO'nun nasıl yapılandırılacağına ilişkin daha fazla öneri için bkz. FIFO tahsis önceliği .

Askıya alma modu dışındaki davranış

AP uyanıkken (askıya alma modunda değilken), olaylar max_report_latency daha fazla gecikmediği sürece FIFO'larda geçici olarak saklanır.

AP askıya alma moduna girmediği sürece hiçbir olay düşmez veya kaybolmaz. Dahili FIFO'lar max_report_latency dolmadan dolarsa, hiçbir olayın kaybolmamasını sağlamak için bu noktada olaylar raporlanır.

Birkaç sensör aynı FIFO'yu paylaşırsa ve bunlardan birinin max_report_latency süresi geçerse, diğer sensörlerin max_report_latency süresi henüz geçmemiş olsa bile max_report_latency gelen tüm olaylar raporlanır. Bu, olay gruplarının raporlanma sayısını azaltır. Bir olayın raporlanması gerektiğinde, tüm sensörlerden gelen tüm olaylar rapor edilir.

Örneğin, aşağıdaki sensörler etkinleştirildiyse:

  • max_report_latency ile gruplandırılmış ivmeölçer = 20s
  • max_report_latency = 5s ile gruplandırılmış jiroskop

İvmeölçer grupları, ivmeölçer ve jiroskop aynı FIFO'yu paylaşmasa bile jiroskop grupları rapor edilirken (her 5 saniyede bir) aynı anda rapor edilir.

Askıya alma modundaki davranış

Gruplama, AP'yi uyanık tutmadan arka planda sensör verilerini toplamak için özellikle faydalıdır. Sensör sürücülerinin ve HAL uygulamasının bir uyandırma kilidi* tutmasına izin verilmediğinden, AP, sensör verileri toplanırken bile askıya alma moduna girebilir.

AP askıya alınırken sensörlerin davranışı, sensörün uyandırma sensörü olup olmadığına bağlıdır. Daha fazla ayrıntı için, bkz. Uyandırma sensörleri .

Uyanmayan bir FIFO dolduğunda, etrafını sarmalı ve dairesel bir arabellek gibi davranmalıdır, eski olayların üzerine eski olayların yerine yeni olaylar yazmalıdır. max_report_latency , askıya alma modundayken uyandırılmayan FIFO'lar üzerinde hiçbir etkiye sahip değildir.

Bir uyandırma FIFO'su dolduğunda veya uyandırma sensörlerinden birinin max_report_latency 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 parti üretilir. Bu, AP'nin askıya alma moduna döndükten hemen sonra tekrar uyanma riskini en aza indirir ve bu nedenle güç tüketimini en aza indirir.

*Sürücülerin uyandırma kilidi tutmasına izin verilmemesinin dikkate değer bir istisnası, sürekli raporlama moduna sahip bir uyandırma sensörünün max_report_latency < 1 saniye ile etkinleştirilmesidir. Bu durumda, sürücü bir uyandırma kilidi tutabilir, çünkü AP'nin askıya alma moduna girmek için zamanı yoktur, çünkü askıya alma moduna ulaşmadan önce bir uyandırma olayı tarafından uyandırılır.

Uyandırma sensörlerini gruplandırırken alınması gereken ö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 baş odası tahsis edilmelidir. Hiçbir olay kaybolmaz ve max_report_latency uyulmalıdır.

Uyanmayan değişimde sensörleri gruplarken alınması gereken önlemler

On-change sensörleri, yalnızca ölçtükleri değer değiştiğinde olaylar üretir. AP askıya alma modundayken ölçülen değer değişirse, uygulamalar AP uyanır uyanmaz bir olay almayı bekler. Bu nedenle, sensör FIFO'sunu diğer sensörlerle paylaşıyorsa, uyanma dışı değişimde sensör olaylarının gruplandırılması dikkatli bir şekilde gerçekleştirilmelidir. Her bir değişim sensörü tarafından oluşturulan son olay, diğer olaylar tarafından asla üzerine yazılmaması için her zaman paylaşılan FIFO'nun dışına kaydedilmelidir. AP uyandığında, FIFO'dan gelen tüm olaylar rapor edildikten sonra, son değişimde sensör olayı rapor edilmelidir.

İşte kaçınılması gereken bir durum:

  1. Bir uygulama, her ikisi de aynı FIFO'yu paylaşan, uyandırma dışı adım sayacına (değişim sırasında) ve uyandırma dışı ivmeölçere (sürekli) kaydolur.
  2. Uygulama bir adım sayacı olayı step_count=1000 steps kodu> alır.
  3. AP askıya alınır.
  4. Kullanıcı 20 adım yürür, adım sayacı ve ivmeölçer olaylarının araya girmesine neden olur, son adım sayacı olayı step_count = 1020 steps .
  5. Kullanıcı uzun süre hareket etmez, bu da ivmeölçer olaylarının FIFO'da birikmeye devam etmesine ve sonunda paylaşılan FIFO'daki her step_count olayının üzerine yazılmasına neden olur.
  6. AP uyanır ve FIFO'dan gelen tüm olaylar uygulamaya gönderilir.
  7. Uygulama sadece ivmeölçer olaylarını alıyor ve kullanıcının yürümediğini düşünüyor.

Son adım sayacı olayını FIFO'nun dışında kaydederek, AP, diğer tüm adım sayacı olaylarının üzerine ivmeölçer olayları tarafından yazılmış olsa bile, AP uyandığında bu olayı rapor edebilir. Bu şekilde uygulama, AP uyandığında step_count = 1020 steps alır.

Toplu işlem uygulama

Güçten tasarruf etmek için, gruplama AP'nin yardımı olmadan gerçekleştirilmelidir ve AP'nin gruplama sırasında askıya alınmasına izin verilmelidir.

Bir sensör göbeğinde yığınlama gerçekleştirilirse, sensör göbeğinin güç kullanımı en aza indirilmelidir.

Maksimum rapor gecikmesi, özellikle belirtilen sensör zaten etkinken, herhangi bir zamanda değiştirilebilir; ve bu olay kaybına neden olmamalıdır.

FIFO tahsis önceliği

Donanım FIFO'su ve/veya sensör hub 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, burada farklı sensörlerde gruplama uygulandığında olası uygulamaların bir listesi bulunmaktadır.

Yüksek değer: Düşük güçlü yaya ölü hesabı

Hedef gruplama süresi: 1 ila 10 dakika

Yığın yapılacak sensörler:

  • Uyandırma adımı dedektörü
  • 5 Hz'de uyandırma oyunu döndürme vektörü
  • 5 Hz'de uyandırma barometresi
  • 5 Hz'de uyandırma kalibre edilmemiş manyetometre

Bu verileri gruplamak, AP'nin askıya alınmasına izin verirken yaya ölü sayımı gerçekleştirmeye izin verir.

Yüksek değer: Orta güçte aralıklı etkinlik/hareket tanıma

Hedef gruplama süresi: 3 saniye

Gruplanacak sensörler: 50 Hz'de uyandırma dışı ivmeölçer

Bu verileri gruplamak, veriler toplanırken AP'yi uyanık tutmak zorunda kalmadan rastgele etkinliklerin ve hareketlerin periyodik olarak tanınmasına olanak tanır.

Orta değer: Orta güçte sürekli etkinlik/hareket tanıma

Hedef gruplama süresi: 1 ila 3 dakika

Gruplanacak sensörler: 50 Hz'de uyandırma ivmeölçeri

Bu verileri gruplamak, veriler toplanırken AP'yi uyanık tutmak zorunda kalmadan rastgele etkinliklerin ve hareketlerin sürekli olarak tanınmasına olanak tanır.

Orta-yüksek değer: Kesinti yükü azaltma

Hedef gruplama süresi: < 1 saniye

Gruplanacak sensörler: genellikle uyandırma olmayan herhangi bir yüksek frekanslı sensör.

Jiroskop 240 Hz'e ayarlanmışsa, sadece 10 gyro olayının gruplanması bile kesme sayısını 240/saniyeden 24/saniyeye düşürebilir.

Orta değer: Sürekli düşük frekanslı veri toplama

Hedef gruplama süresi: 1 ila 10 dakika

Yığın yapılacak sensörler:

  • 1 Hz'de uyandırma barometresi
  • 1 Hz'de uyandırma nem sensörü
  • Benzer oranlarda diğer düşük frekanslı uyandırma sensörleri

Düşük güçte izleme uygulamaları oluşturmaya izin verir.

Orta-düşük değer: Sürekli tam sensör toplama

Hedef gruplama süresi: 1 ila 10 dakika

Gruplanacak sensörler: Yüksek frekanslarda tüm uyandırma sensörleri

AP'yi askıya alma modunda bırakırken sensör verilerinin tam olarak toplanmasına izin verir. Yalnızca FIFO alanının bir sorun olup olmadığını düşünün.