Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Hàng loạt

Đánh lô là gì?

Batching đề cập đến việc đệm các sự kiện cảm biến trong một trung tâm cảm biến và / hoặc FIFO phần cứng trước khi báo cáo các sự kiện thông qua HAL của Cảm biến . Vị trí nơi các sự kiện cảm biến được lưu vào bộ đệm (trung tâm cảm biến và / hoặc FIFO phần cứng) được gọi là "FIFO" trên trang này. Khi lô sự kiện cảm biến không hoạt động, các sự kiện cảm biến ngay lập tức được báo cáo cho HAL của cảm biến khi có sẵn.

Batch có thể cho phép tiết kiệm năng lượng đáng kể bằng cách chỉ đánh thức bộ xử lý ứng dụng chính (AP), chạy Android, khi nhiều sự kiện cảm biến sẵn sàng được xử lý, thay vì đánh thức nó cho từng sự kiện riêng lẻ. Khả năng tiết kiệm điện tương quan trực tiếp với số lượng sự kiện mà trung tâm cảm biến và / hoặc FIFO có thể đệm: có khả năng tiết kiệm điện lớn hơn nếu có nhiều sự kiện hơn có thể được thực hiện. Batch tận dụng việc sử dụng bộ nhớ năng lượng thấp để giảm số lần đánh thức AP công suất cao.

Việc ghép nối chỉ có thể xảy ra khi một cảm biến sở hữu FIFO phần cứng và / hoặc có thể đệm các sự kiện trong một trung tâm cảm biến. Trong cả hai trường hợp, cảm biến phải báo cáo số lượng sự kiện tối đa có thể được xử lý cùng một lúc thông qua SensorInfo.fifoMaxEventCount .

Nếu một cảm biến có dung lượng dành riêng trong FIFO, thì cảm biến phải báo cáo số lượng các sự kiện được đặt trước thông qua SensorInfo.fifoReservedEventCount . Nếu FIFO dành riêng cho cảm biến, thì SensorInfo.fifoReservedEventCount là kích thước của FIFO. Nếu FIFO được chia sẻ giữa một số cảm biến, giá trị này có thể bằng không. Trường hợp sử dụng phổ biến là cho phép một cảm biến sử dụng toàn bộ FIFO nếu đó là cảm biến hoạt động duy nhất. Nếu nhiều cảm biến đang hoạt động, thì mỗi cảm biến được đảm bảo không gian cho ít nhất các sự kiện SensorInfo.fifoReservedEventCount trong FIFO. Nếu sử dụng trung tâm cảm biến, đảm bảo có thể được thực thi thông qua phần mềm.

Các sự kiện cảm biến được phân theo đợt trong các trường hợp sau:

  • Độ trễ báo cáo tối đa hiện tại của cảm biến lớn hơn 0, có nghĩa là các sự kiện cảm biến có thể bị trì hoãn đến độ trễ báo cáo tối đa trước khi được báo cáo qua HAL.
  • AP đang ở chế độ tạm ngừng và cảm biến là cảm biến không đánh thức. Trong trường hợp này, các sự kiện không được đánh thức AP và phải được lưu trữ cho đến khi AP thức dậy.

Nếu cảm biến không hỗ trợ chia lô và AP đang ở chế độ ngủ, thì chỉ các sự kiện cảm biến đánh thức mới được báo cáo cho AP và các sự kiện không đánh thức sẽ không được báo cáo cho AP.

Tham số hàng loạt

Hai tham số chi phối hành vi của phân phối là sampling_period_nsmax_report_latency_ns . sampling_period_ns xác định tần suất một sự kiện cảm biến mới được tạo và max_report_latency_ns xác định thời gian cho đến khi sự kiện phải được báo cáo cho Cảm biến HAL.

sampling_period_ns

Tham số sampling_period_ns có nghĩa là gì phụ thuộc vào chế độ báo cáo của cảm biến được chỉ định:

  • Liên tục: sampling_period_ns là tốc độ lấy mẫu, nghĩa là tốc độ tạo ra các sự kiện.
  • Khi thay đổi: sampling_period_ns giới hạn tốc độ lấy mẫu của các sự kiện, nghĩa là các sự kiện được tạo không nhanh hơn mọi nano giây của sampling_period_ns . Khoảng thời gian có thể dài hơn sampling_period_ns nếu không có sự kiện nào được tạo và các giá trị đo được không thay đổi trong thời gian dài. Để biết thêm chi tiết, hãy xem chế độ báo cáo khi thay đổi .
  • One-shot: sampling_period_ns bị bỏ qua. Nó không có hiệu lực.
  • Đặc biệt: Để biết chi tiết về cách sampling_period_ns được sử dụng cho các cảm biến đặc biệt, hãy xem Loại cảm biến .

Để biết thêm thông tin về tác động của sampling_period_ns trong các chế độ khác nhau, hãy xem Chế độ báo cáo .

Đối với cảm biến liên tục và thay đổi:

  • nếu sampling_period_ns nhỏ hơn SensorInfo.minDelay , thì việc triển khai HAL phải âm thầm kẹp nó ở mức max(SensorInfo.minDelay, 1ms) . Android không hỗ trợ tạo sự kiện ở tần số hơn 1000 Hz.
  • nếu sampling_period_ns lớn hơn SensorInfo.maxDelay , thì việc triển khai HAL phải âm thầm cắt ngắn nó thành SensorInfo.maxDelay .

Cảm biến vật lý đôi khi có giới hạn về tốc độ chúng có thể chạy và độ chính xác của đồng hồ. Để giải thích điều này, tần suất lấy mẫu thực tế có thể khác với tần suất được yêu cầu miễn là nó đáp ứng các yêu cầu trong bảng dưới đây.

Nếu tần suất được yêu cầu là

Sau đó, tần số thực tế phải là

dưới tần suất tối thiểu (<1 / maxDelay)

từ 90% đến 110% tần suất tối thiểu

giữa tần số tối thiểu và tối đa

từ 90% đến 220% tần suất được yêu cầu

trên tần số tối đa (> 1 / phút

từ 90% đến 110% tần số tối đa và dưới 1100 Hz

max_report_latency_ns

max_report_latency_ns đặt thời gian tối đa tính bằng nano giây, theo đó các sự kiện có thể bị trì hoãn và lưu trữ trong FIFO phần cứng trước khi được báo cáo qua HAL trong khi AP hoạt động.

Giá trị 0 có nghĩa là các sự kiện phải được báo cáo ngay sau khi chúng được đo, bỏ qua hoàn toàn FIFO hoặc làm trống FIFO ngay khi có một sự kiện từ cảm biến.

Ví dụ: một gia tốc kế được kích hoạt ở 50 Hz với max_report_latency_ns=0 sẽ kích hoạt ngắt 50 lần mỗi giây khi AP hoạt động.

Khi max_report_latency_ns>0 , các sự kiện cảm biến không cần phải được báo cáo ngay khi chúng được phát hiện. Chúng có thể được lưu trữ tạm thời trong FIFO và được báo cáo theo lô, miễn là không có sự kiện nào bị trễ hơn max_report_latency_ns nano giây. Điều này có nghĩa là tất cả các sự kiện kể từ đợt trước được ghi lại và trả về cùng một lúc. Điều này làm giảm lượng gián đoạn được gửi đến AP và cho phép AP chuyển sang chế độ công suất thấp hơn (không hoạt động) trong khi cảm biến đang thu thập và phân phối dữ liệu.

Mỗi sự kiện có một dấu thời gian được liên kết với nó. Việc trì hoãn thời gian một sự kiện được báo cáo không ảnh hưởng đến dấu thời gian của sự kiện. Dấu thời gian phải chính xác và tương ứng với thời gian mà sự kiện đã xảy ra trên thực tế, không phải thời gian nó được báo cáo.

Việc cho phép lưu trữ tạm thời các sự kiện cảm biến trong FIFO không sửa đổi hành vi gửi sự kiện tới HAL; các sự kiện từ các cảm biến khác nhau có thể được xen kẽ và tất cả các sự kiện từ cùng một cảm biến được sắp xếp theo thời gian.

Sự kiện đánh thức và không đánh thức

Các sự kiện cảm biến từ cảm biến đánh thức phải được lưu trữ trong một hoặc nhiều FIFO đánh thức. Một thiết kế chung là có một FIFO đánh thức chung, lớn, duy nhất, nơi các sự kiện từ tất cả các cảm biến đánh thức được xen kẽ. Ngoài ra, bạn có thể có một FIFO đánh thức cho mỗi cảm biến hoặc có FIFO dành riêng cho các cảm biến đánh thức cụ thể và FIFO dùng chung cho các cảm biến đánh thức còn lại.

Tương tự, các sự kiện cảm biến từ cảm biến không đánh thức phải được lưu trữ trong một hoặc nhiều FIFO không đánh thức.

Trong mọi trường hợp, không thể xen kẽ các sự kiện cảm biến đánh thức và sự kiện cảm biến không đánh thức trong cùng một FIFO. Các sự kiện đánh thức phải được lưu trữ trong FIFO đánh thức và các sự kiện không đánh thức phải được lưu trữ trong FIFO không đánh thức.

Đối với FIFO đánh thức, thiết kế FIFO đơn lẻ, lớn, được chia sẻ mang lại lợi ích điện năng tốt nhất. Đối với FIFO không đánh thức, FIFO chia sẻ đơn lẻ, lớn và một số thiết kế FIFO dự trữ nhỏ có các đặc tính công suất tương tự. Để biết thêm gợi ý về cách định cấu hình từng FIFO, hãy xem mức độ ưu tiên phân bổ FIFO .

Hành vi bên ngoài chế độ tạm ngưng

Khi AP hoạt động (không ở chế độ tạm ngừng), các sự kiện được lưu trữ tạm thời trong FIFO miễn là chúng không bị trễ quá max_report_latency .

Miễn là AP không vào chế độ tạm ngừng, sẽ không có sự kiện nào bị bỏ hoặc mất. Nếu FIFO nội bộ trở nên đầy trước khi max_report_latency trôi qua, thì các sự kiện sẽ được báo cáo tại thời điểm đó để đảm bảo rằng không có sự kiện nào bị mất.

Nếu một số cảm biến chia sẻ cùng FIFO và max_report_latency của một trong số chúng trôi qua, tất cả các sự kiện từ FIFO sẽ được báo cáo, ngay cả khi max_report_latency của các cảm biến khác chưa trôi qua. Điều này làm giảm số lần các lô sự kiện được báo cáo. Khi một sự kiện phải được báo cáo, tất cả các sự kiện từ tất cả các cảm biến sẽ được báo cáo.

Ví dụ: nếu các cảm biến sau được kích hoạt:

  • gia tốc kế được thực hiện với max_report_latency = 20 giây
  • con quay hồi chuyển theo lô với max_report_latency = 5s

Các lô gia tốc kế được báo cáo đồng thời với các lô con quay hồi chuyển được báo cáo (cứ sau 5 giây), ngay cả khi gia tốc kế và con quay hồi chuyển không chia sẻ cùng FIFO.

Hành vi ở chế độ tạm ngừng

Tính năng phân lô đặc biệt có lợi cho việc thu thập dữ liệu cảm biến ở chế độ nền mà không giữ cho AP hoạt động. Vì trình điều khiển cảm biến và triển khai HAL không được phép giữ khóa đánh thức *, AP có thể vào chế độ tạm ngừng ngay cả khi dữ liệu cảm biến đang được thu thập.

Hoạt động của các cảm biến trong khi AP bị treo phụ thuộc vào việc cảm biến đó có phải là cảm biến đánh thức hay không. Để biết thêm chi tiết, hãy xem Cảm biến đánh thức .

Khi FIFO không đánh thức lấp đầy, nó phải quấn quanh và hoạt động giống như một bộ đệm tròn, ghi đè các sự kiện cũ hơn bằng các sự kiện mới thay thế các sự kiện cũ. max_report_latency không ảnh hưởng đến FIFO không đánh thức khi ở chế độ tạm ngừng.

Khi FIFO đánh thức đầy hoặc khi max_report_latency của một trong các cảm biến đánh thức trôi qua, phần cứng phải đánh thức AP và báo cáo dữ liệu.

Trong cả hai trường hợp (đánh thức và không đánh thức), ngay sau khi AP thoát khỏi chế độ tạm ngưng, một lô sẽ được tạo ra với nội dung của tất cả các FIFO, ngay cả khi max_report_latency của một số cảm biến chưa trôi qua. Điều này giảm thiểu nguy cơ AP phải đánh thức lại ngay sau khi nó trở về chế độ tạm ngừng và do đó, giảm thiểu mức tiêu thụ điện năng.

* Một ngoại lệ đáng chú ý về việc người lái xe không được phép giữ khóa đánh thức là khi cảm biến đánh thức có chế độ báo cáo liên tục được kích hoạt với max_report_latency <1 giây. Trong trường hợp này, người lái xe có thể giữ khóa đánh thức vì AP không có thời gian để vào chế độ tạm ngừng, vì nó sẽ bị đánh thức bởi một sự kiện đánh thức trước khi chuyển đến chế độ tạm ngừng.

Các biện pháp phòng ngừa cần thực hiện khi kết hợp các cảm biến đánh thức

Tùy thuộc vào thiết bị, có thể mất vài mili giây để AP thoát khỏi chế độ tạm ngừng hoàn toàn và bắt đầu xả FIFO. Phải phân bổ đủ không gian đầu trong FIFO để cho phép thiết bị thoát ra khỏi chế độ tạm ngưng mà không bị tràn FIFO đánh thức. Không có sự kiện nào bị mất và max_report_latency phải được tôn trọng.

Các biện pháp phòng ngừa cần thực hiện khi kết hợp các cảm biến thay đổi không đánh thức

Cảm biến khi thay đổi chỉ tạo ra các sự kiện khi giá trị mà chúng đang đo thay đổi. Nếu giá trị đo thay đổi trong khi AP đang ở chế độ tạm ngừng, các ứng dụng sẽ nhận được một sự kiện ngay khi AP thức dậy. Do đó, các sự kiện cảm biến thay đổi không đánh thức phải được thực hiện cẩn thận nếu cảm biến chia sẻ FIFO của nó với các cảm biến khác. Sự kiện cuối cùng được tạo bởi mỗi cảm biến thay đổi phải luôn được lưu bên ngoài FIFO được chia sẻ để nó không bao giờ có thể bị ghi đè bởi các sự kiện khác. Khi AP thức dậy, sau khi tất cả các sự kiện từ FIFO đã được báo cáo, sự kiện cảm biến thay đổi cuối cùng phải được báo cáo.

Đây là một tình huống cần tránh:

  1. Một ứng dụng đăng ký với bộ đếm bước không đánh thức (khi thay đổi) và bộ đo gia tốc không đánh thức (liên tục), cả hai đều chia sẻ cùng một FIFO.
  2. Ứng dụng nhận được mã sự kiện đếm bước step_count=1000 steps >.
  3. AP sẽ tạm ngừng.
  4. Người dùng đi 20 bước, làm cho sự kiện bộ đếm bước và gia tốc kế được xen kẽ, sự kiện bộ đếm bước cuối cùng là step_count = 1020 steps .
  5. Người dùng không di chuyển trong một thời gian dài, khiến các sự kiện gia tốc kế tiếp tục tích lũy trong FIFO, cuối cùng ghi đè mọi sự kiện step_count trong FIFO được chia sẻ.
  6. AP thức dậy và tất cả các sự kiện từ FIFO được gửi đến ứng dụng.
  7. Ứng dụng chỉ nhận được các sự kiện gia tốc kế và cho rằng người dùng đã không đi bộ.

Bằng cách lưu sự kiện bộ đếm bước cuối cùng bên ngoài FIFO, HAL có thể báo cáo sự kiện này khi AP thức dậy, ngay cả khi tất cả các sự kiện bộ đếm bước khác đã bị ghi đè bởi các sự kiện gia tốc kế. Bằng cách này, ứng dụng nhận được step_count = 1020 steps khi AP thức dậy.

Thực hiện lô

Để tiết kiệm điện năng, phải thực hiện chia lô mà không có sự hỗ trợ của AP và AP phải được phép tạm dừng trong quá trình chia lô.

Nếu thực hiện phân lô trong một trung tâm cảm biến, thì việc sử dụng điện năng của trung tâm cảm biến phải được giảm thiểu.

Độ trễ báo cáo tối đa có thể được sửa đổi bất kỳ lúc nào, cụ thể là trong khi cảm biến được chỉ định đã được bật; và điều này sẽ không dẫn đến việc mất các sự kiện.

Mức độ ưu tiên phân bổ FIFO

Trên các nền tảng mà kích thước bộ đệm FIFO phần cứng và / hoặc bộ đệm trung tâm cảm biến bị hạn chế, các nhà thiết kế hệ thống có thể phải chọn lượng FIFO dự trữ cho mỗi cảm biến. Để giúp đưa ra lựa chọn này, đây là danh sách các ứng dụng có thể có khi thực hiện phân lô trên các cảm biến khác nhau.

Giá trị cao: Tính toán người đi bộ chết công suất thấp

Thời gian trộn mục tiêu: 1 đến 10 phút

Cảm biến theo lô:

  • Máy dò bước đánh thức
  • Véc tơ xoay trò chơi đánh thức ở tần số 5 Hz
  • Phong vũ biểu đánh thức ở tần số 5 Hz
  • Đánh thức từ kế chưa hiệu chỉnh ở tần số 5 Hz

Việc tổng hợp dữ liệu này cho phép thực hiện tính toán người đi bộ chết trong khi cho phép AP tạm dừng.

Giá trị cao: Hoạt động ngắt quãng công suất trung bình / nhận dạng cử chỉ

Thời gian trộn mục tiêu: 3 giây

Cảm biến theo lô: Gia tốc kế không đánh thức ở tần số 50 Hz

Việc tổng hợp dữ liệu này cho phép nhận dạng định kỳ các hoạt động và cử chỉ tùy ý mà không cần phải giữ cho AP hoạt động trong khi dữ liệu được thu thập.

Giá trị trung bình: Hoạt động liên tục công suất trung bình / nhận dạng cử chỉ

Thời gian trộn mục tiêu: 1 đến 3 phút

Cảm biến theo lô: Gia tốc kế đánh thức ở 50 Hz

Việc kết hợp dữ liệu này cho phép liên tục nhận ra các hoạt động và cử chỉ tùy ý mà không cần phải giữ cho AP tỉnh táo trong khi dữ liệu được thu thập.

Giá trị trung bình-cao: Giảm tải ngắt quãng

Thời gian trộn mục tiêu: <1 giây

Cảm biến theo đợt: bất kỳ cảm biến tần số cao nào, thường không đánh thức.

Nếu con quay hồi chuyển được đặt ở 240 Hz, thậm chí chỉ cần chia nhóm 10 sự kiện con quay hồi chuyển cũng có thể giảm số lần ngắt từ 240 / giây xuống 24 / giây.

Giá trị trung bình: Thu thập dữ liệu tần số thấp liên tục

Thời gian trộn mục tiêu: 1 đến 10 phút

Cảm biến theo lô:

  • Phong vũ biểu đánh thức ở 1 Hz
  • Cảm biến độ ẩm đánh thức ở tần số 1 Hz
  • Các cảm biến đánh thức tần số thấp khác với tốc độ tương tự

Cho phép tạo ứng dụng giám sát với công suất thấp.

Giá trị trung bình-thấp: Bộ sưu tập cảm biến đầy đủ liên tục

Thời gian trộn mục tiêu: 1 đến 10 phút

Cảm biến theo lô: Tất cả các cảm biến đánh thức, ở tần số cao

Cho phép thu thập đầy đủ dữ liệu cảm biến trong khi để AP ở chế độ tạm ngừng. Chỉ xem xét nếu không gian FIFO không phải là một vấn đề.