Google 致力于为黑人社区推动种族平等。查看具体举措
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Harmanlama

Yığınlama nedir?

Toplu işlem, olayları Sensörler HAL aracılığıyla bildirmeden önce bir sensör hub'ındaki ve / veya donanım FIFO'sundaki sensör olaylarını arabelleğe alma anlamına gelir. Sensör olaylarının arabelleğe alındığı konum (sensör hub'ı ve / veya donanım FIFO) bu sayfada "FIFO" olarak adlandırılır. Sensör olayı toplu işlemi etkin olmadığında, sensör olayları hemen mevcut olduğunda Sensörler HAL'ye bildirilir.

Toplu işlem, birçok sensör olayının işlenmeye hazır olduğu her bir olay için uyanmak yerine yalnızca Android'i ç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ı ile doğrudan ilişkilidir: daha fazla olay yığınlanabilirse güç tasarrufu için daha büyük bir potansiyel vardır. Toplu işlem, yüksek güçlü AP uyandırma sayısını azaltmak için düşük güçlü bellek kullanımını güçlendirir.

Toplu işlem yalnızca bir algılayıcı donanım FIFO'suna sahip olduğunda ve / veya bir algılayıcı hubındaki olayları arabelleğe alabiliyorsa oluşabilir. Her iki durumda da sensör, SensorInfo.fifoMaxEventCount aracılığıyla bir kerede toplu işlenebilecek maksimum olay sayısını bildirmelidir.

Bir sensörün bir FIFO içinde ayrılmış alanı varsa, sensör ayrılmış olayların sayısını SensorInfo.fifoReservedEventCount aracılığıyla rapor etmelidir. FIFO sensöre SensorInfo.fifoReservedEventCount , SensorInfo.fifoReservedEventCount , SensorInfo.fifoReservedEventCount boyutudur. FIFO birkaç sensör arasında paylaşılıyorsa, bu değer sıfır olabilir. Yaygın bir kullanım durumu, sensörün tek aktif sensör olması durumunda tüm FIFO'yu kullanmasına izin vermektir. Birden fazla sensör etkinse, her sensör SensorInfo.fifoReservedEventCount en az SensorInfo.fifoReservedEventCount olayları için alan garantilidir. Bir sensör göbeği kullanılırsa, garanti yazılım aracılığıyla uygulanabilir.

Sensör olayları aşağıdaki durumlarda yığınlanır:

  • Sensörün mevcut maksimum rapor gecikmesi sıfırdan büyüktür, yani sensör olayları HAL aracılığıyla rapor edilmeden önce maksimum rapor gecikmesine kadar ertelenebilir.
  • 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 toplu işlemi desteklemiyorsa ve AP uykudaysa, AP'ye yalnızca uyandırma sensörü olayları bildirilir ve AP'ye uyandırma dışı olaylar bildirilmemelidir.

Dozajlama parametreleri

Yığınlama davranışını yöneten iki parametre sampling_period_ns ve max_report_latency_ns şeklindedir . sampling_period_ns , yeni bir sensör olayının ne sıklıkta oluşturulacağını ve max_report_latency_ns , etkinliğin Sensors max_report_latency_ns ne kadar süre max_report_latency_ns 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 oranıdır, yani olayların oluşturulma hızıdır.
  • Değişken: sampling_period_ns olayların örnekleme oranını sınırlar, yani olaylar her sampling_period_ns nanosaniyesinden daha hızlı üretilmez. Hiçbir olay oluşturulmazsa ve ölçülen değerler uzun süre değişmezse, dönemler sampling_period_ns değerinden daha uzun olabilir. Daha fazla ayrıntı için, değişiklik bildirme moduna bakın.
  • Tek vuruş: sampling_period_ns yok sayılır. Etkisi yok.
  • Özel: sampling_period_ns özel sensörler için nasıl kullanıldığına dair ayrıntılar için, bkz. Sensör Türleri .

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

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

  • sampling_period_ns , SensorInfo.minDelay değerinden küçükse, HAL uygulaması bunu sessizce max(SensorInfo.minDelay, 1ms) sıkıştırmalıdır max(SensorInfo.minDelay, 1ms) . Android, 1000 Hz'den fazla olay oluşturulmasını desteklemez.
  • sampling_period_ns , SensorInfo.maxDelay değerinden büyükse, HAL uygulaması bunu sessizce SensorInfo.maxDelay kesmelidir.

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

O zaman gerçek frekans

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

min. frekansın% 90'ı ile% 110'u arasında

min ve maks frekans arasında

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

maksimum frekansın üstünde (> 1 / dakGecikme)

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

max_report_latency_ns

max_report_latency_ns nanosaniye max_report_latency_ns maksimum süreyi ayarlar, böylece AP uyanıkken HAL aracılığıyla raporlanmadan önce olayların donanım FIFO'sunda geciktirilip saklanabilir.

Sıfır değeri, olayların ölçüldükleri anda FIFO'yu tamamen atlayarak veya sensördeki bir olay mevcut olur olmaz FIFO'yu boşaltarak bildirilmesi 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 tetikler.

max_report_latency_ns>0 , sensör olayları tespit edilir edilmez raporlanmaları gerekmez. Hiçbir olay max_report_latency_ns nanosaniyeden fazla max_report_latency_ns geçici olarak saklanabilir ve gruplar halinde raporlanabilir. Bu, önceki gruptan bu yana gerçekleşen tüm olayların bir defada kaydedilip geri döndürüldüğü anlamına gelir. Bu, AP'ye gönderilen kesinti miktarını azaltır ve sensör verileri yakalayıp topluyorken AP'nin daha düşük bir güç moduna (boşta) geçmesini sağlar.

Her etkinliğin kendisiyle ilişkilendirilmiş bir zaman damgası vardır. Bir olayın raporlandığı zamanın ertelenmesi olayın zaman damgasını etkilemez. Zaman damgası doğru olmalı ve rapor edilen zamana değil, olayın fiziksel olarak gerçekleştiği zamana karşılık gelmelidir.

Sensör olaylarının FIFO'da geçici olarak saklanmasına izin verilmesi, olayları HAL'a gönderme davranışını değiştirmez; farklı sensörlerden gelen olaylar araya eklenebilir ve aynı sensördeki tüm olaylar zamana göre sıralanır.

Uyandırma ve uyandırma olmayan etkinlikler

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 araya sokulduğu 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 sahip olabilir veya belirli uyandırma sensörleri için özel FIFO'lara ve uyandırma sensörlerinin geri kalanı için paylaşılan bir FIFO'ya sahip olabilirsiniz.

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

Her durumda, uyandırma sensörü olayları ve uyanmayan sensör olayları aynı FIFO'ya serpiştirilemez. Uyandırma olayları bir uyandırma FIFO'sunda saklanmalıdır ve uyandırma olmayan 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şılan FIFO ve birkaç küçük ayrılmış FIFO tasarımı benzer güç özelliklerine sahiptir. Her bir FIFO'nun nasıl yapılandırılacağı hakkında daha fazla öneri için bkz. FIFO ayırma önceliği .

Bekleme modunun dışındaki davranışlar

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

AP askıya alma moduna girmediği sürece hiçbir olay düşürülmez veya kaybedilmez. Dahili FIFO'lar max_report_latency sona ermeden max_report_latency , hiçbir olayın kaybolmamasını sağlamak için olaylar o noktada raporlanır.

Birden fazla sensör aynı max_report_latency ve bunlardan birinin max_report_latency , diğer sensörlerin max_report_latency henüz max_report_latency olsa bile max_report_latency tüm olaylar raporlanır. Bu, olay gruplarının raporlanma sayısını azaltır. Bir olayın rapor edilmesi gerektiğinde, tüm sensörlerden gelen tüm olaylar raporlanır.

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

  • max_report_latency = 20s ile toplu ivmeölçer
  • max_report_latency = 5s ile toplu halde jiroskop

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

Bekleme modunda davranış

Toplu işlem, AP uyanık kalmadan arka planda sensör verilerinin toplanması için özellikle yararlıdır. Sensör sürücülerinin ve HAL uygulamasının bir uyanma 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 bir 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, eski olayların yerini eski olayların yerini alan yeni olayların üzerine yazarak, etrafını sarmalı ve dairesel bir tampon gibi davranmalıdır. max_report_latency cihazının max_report_latency uyanmayan FIFO'lar üzerinde hiçbir etkisi yoktur.

Bir uyandırma max_report_latency dolduğunda veya uyandırma sensörlerinden birinin max_report_latency dolduğunda, donanım AP'yi uyandırmalı ve verileri rapor etmelidir.

Her iki durumda da (uyanma ve uyanmama), AP askıya alma modundan çıkar max_report_latency , bazı sensörlerin max_report_latency henüz max_report_latency olsa bile, tüm FIFO'ların içeriğiyle bir parti üretilir. Bu, AP'nin askıya alma moduna döndükten kısa bir süre sonra tekrar uyanma riskini en aza indirir ve bu nedenle güç tüketimini en aza indirir.

* Bir uyandırma kilidi tutmasına izin verilmeyen sürücülerin dikkate değer bir istisnası, sürekli raporlama moduna sahip bir uyandırma sensörü max_report_latency <1 saniye ile etkinleştirilir. Bu durumda, sürücü askıya alma kilidini 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ılacaktır.

Uyandırma sensörlerini toplu halde alırken alınması gereken önlemler

Cihaza bağlı olarak, AP'nin askıya alma modundan tamamen çıkıp FIFO'yu yıkamaya başlaması birkaç milisaniye sürebilir. Cihazın uyanma FIFO taşması olmadan bekleme modundan çıkabilmesi için FIFO'ya yeterli boşluk bırakılmalıdır. Hiçbir olay kaybedilmeyecek ve max_report_latency saygı duyulmalıdır.

Uyandırmayan değişim sensörlerini toplu olarak alırken alınması gereken önlemler

Değişen sensörler yalnızca ölçtükleri değer değiştiğinde olaylar oluşturur. 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, uyandırma sırasında değiştirilmeyen sensör olaylarının toplu olarak yapılması gerekir. Her bir değişim sensörü tarafından oluşturulan son olay her zaman paylaşılan FIFO dışında saklanmalıdır, böylece hiçbir zaman başka olaylar tarafından üzerine yazılamaz. AP uyandığında, FIFO'dan gelen tüm olaylar bildirildikten sonra, son değiştirilen sensör olayı rapor edilmelidir.

Kaçınılması gereken bir durum:

  1. Bir uygulama, her ikisi de aynı FIFO'yu paylaşan uyandırma olmayan adım sayacına (değişiklik sırasında) ve uyandırma dışı ivmeölçere (sürekli) kaydolur.
  2. Uygulama bir step counter olayı step_count=1000 steps code> alır.
  3. AP askıya alınır.
  4. Kullanıcı 20 adım yürür ve 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 ve ivmeölçer olaylarının step_count birikmeye devam etmesine neden olarak, paylaşılan step_count her step_count olayının üzerine yazılır.
  6. AP uyanır ve FIFO'daki tüm olaylar uygulamaya gönderilir.
  7. Uygulama yalnızca ivmeölçer olaylarını alır ve kullanıcının yürümediğini düşünür.

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

Dozajlama uygulama

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

Yığınlama bir sensör göbeğinde yapılırsa, 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 olayların kaybolmasına neden olmamalıdır.

FIFO ayırma önceliği

Donanım FIFO 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çeneğe yardımcı olmak için, farklı sensörler üzerinde toplu işlem uygulandığında olası uygulamaların bir listesi.

Yüksek değer: Düşük güç yaya ölü hesaplaşma

Hedef gruplama süresi: 1 ila 10 dakika

Toplu 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
  • Kalibre edilmemiş manyetometreyi 5 Hz'de uyandır

Bu verilerin toplanması, AP'nin askıya alınmasına izin verirken yaya ölü hesaplamaları yapılmasına izin verir.

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

Hedef gruplama süresi: 3 saniye

Yığınlanacak sensörler: 50 Hz'de uyanmayan ivmeölçer

Bu verilerin toplu olarak toplanması, veri 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

Toplu sensörler: 50 Hz'de uyanma ivmeölçer

Bu verilerin toplu olarak toplanması, veri toplanırken AP'yi uyanık tutmak zorunda kalmadan keyfi etkinliklerin ve hareketlerin sürekli olarak tanınmasına olanak tanır.

Orta-yüksek değer: Kesinti yükünün azaltılması

Hedef gruplama süresi: <1 saniye

Toplu sensörler: genellikle uyanmayan herhangi bir yüksek frekans sensörü.

Jiroskop 240 Hz olarak ayarlanmışsa, sadece 10 jiroskop olayını harmanlamak 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

Toplu sensörler:

  • 1 Hz'de uyanma barometresi
  • 1 Hz'de uyanma 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 koleksiyonu

Hedef gruplama süresi: 1 ila 10 dakika

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

AP'yi bekleme modunda bırakırken sensör verilerinin tam olarak toplanmasını sağlar. Yalnızca FIFO alanı sorun değilse düşünün.