Tạo lô

Lô là gì?

Lô đề cập đến việc lưu các sự kiện cảm biến vào bộ đệm trong 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 Cảm biến HAL . 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 việc sắp xếp sự kiện cảm biến không hoạt động, các sự kiện cảm biến sẽ được báo cáo ngay cho HAL cảm biến khi có sẵn.

Việc tạo hàng loạt có thể giú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 năng lượng có mối 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: khả năng tiết kiệm năng lượng sẽ cao hơn nếu có thể gộp nhiều sự kiện hơn. Batching tận dụng việc sử dụng bộ nhớ công suất thấp để giảm số lần đánh thức AP công suất cao.

Việc tạo khối chỉ có thể xảy ra khi cảm biến có FIFO phần cứng và/hoặc có thể đệm các sự kiện trong 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 nhóm cùng một lúc thông qua SensorInfo.fifoMaxEventCount .

Nếu cảm biến có không gian dành riêng trong FIFO, cảm biến phải báo cáo số lượng sự kiện dành riêng thông qua SensorInfo.fifoReservedEventCount . Nếu FIFO được 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 thì giá trị này có thể bằng 0. Trường hợp sử dụng phổ biến là cho phép 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 sẽ đượ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, việc bảo hành có thể được thực thi thông qua phần mềm.

Các sự kiện cảm biến được sắp xếp theo nhóm trong các tình huống sau:

  • Độ trễ báo cáo tối đa hiện tại của cảm biến lớn hơn 0, nghĩa là các sự kiện cảm biến có thể bị trì hoãn tới độ trễ báo cáo tối đa trước khi được báo cáo thông qua HAL.
  • AP ở chế độ treo 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ợ phân nhóm 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 không được báo cáo cho AP.

Thông số trộn

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

lấy mẫu_thời_ns

Ý nghĩa của thông số sampling_period_ns tùy 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 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 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à 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 .
  • Một lần: sampling_period_ns bị bỏ qua. Nó không có tác dụng.
  • Đặc biệt: Để biết chi tiết về cách sử dụng sampling_period_ns 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 ở 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 giới hạn nó ở mức max(SensorInfo.minDelay, 1ms) . Android không hỗ trợ tạo sự kiện ở tần số lớn 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 nó thành SensorInfo.maxDelay .

Cảm biến vật lý đôi khi có những hạn chế về tốc độ chúng có thể chạy và độ chính xác của đồng hồ. Để giải quyết vấn đề này, tần số 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 bên dưới.

Nếu tần số được yêu cầu là

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

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

từ 90% đến 110% tần số 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Độ trễ)

trong khoảng 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 còn hoạt động.

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

Ví dụ: gia tốc kế được kích hoạt ở tần số 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 còn thức.

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 đợt, miễn là không có sự kiện nào bị trì hoãn quá nano giây max_report_latency_ns . Điều này có nghĩa là tất cả các sự kiện kể từ đợt trước đều được ghi lại và trả về cùng một lúc. Điều này làm giảm số lượng ngắt được gửi đến AP và cho phép AP chuyển sang chế độ năng lượng thấp hơn (không hoạt động) trong khi cảm biến đang thu thập và phân khối dữ liệu.

Mỗi sự kiện có một dấu thời gian gắn liền với nó. Việc trì hoãn thời điểm báo cáo sự kiện 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 điểm sự kiện xảy ra trên thực tế chứ không phải thời điểm sự kiệ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 đều đượ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ế phổ biến là có một FIFO đánh thức chung, lớn, duy nhất, trong đó 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ó các FIFO chuyên dụng cho các cảm biến đánh thức cụ thể và một 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, các sự kiện của cảm biến đánh thức và các sự kiện của cảm biến không đánh thức không được xen kẽ 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ớn, dùng chung mang lại lợi ích năng lượng tốt nhất. Đối với FIFO không đánh thức, thiết kế FIFO đơn, lớn được chia sẻ và một số thiết kế FIFO dành riêng nhỏ có đặc điểm 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 dừng

Khi AP hoạt động (không ở chế độ tạm dừ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ì hoãn quá max_report_latency .

Miễn là AP không chuyển sang chế độ tạm dừng thì sẽ không có sự kiện nào bị hủy hoặc bị mất. Nếu FIFO nội bộ đầy trước khi hết max_report_latency 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 có chung FIFO và max_report_latency của một trong số chúng trôi qua thì tất cả các sự kiện từ FIFO đều được báo cáo, ngay cả khi max_report_latency của các cảm biến khác vẫn chưa trôi qua. Điều này làm giảm số lần các đợt 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 đều đượ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 phân nhóm với max_report_latency = 20s
  • con quay hồi chuyển được chia theo đợt với max_report_latency = 5s

Các lô gia tốc kế được báo cáo cùng lúc với các lô con quay hồi chuyển được báo cáo (5 giây một lần), ngay cả khi gia tốc kế và con quay hồi chuyển không có chung FIFO.

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

Batching đặ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 khiến AP luôn hoạt động. Vì trình điều khiển cảm biến và việc triển khai HAL không được phép giữ khóa đánh thức* nên AP có thể chuyển sang chế độ tạm dừng ngay cả khi dữ liệu cảm biến đang được thu thập.

Hoạt động của cảm biến trong khi AP bị treo tùy 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 một FIFO chưa được đánh thức đầy lên, 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 các FIFO không đánh thức khi ở chế độ tạm dừ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 (thức dậy và không thức dậy), ngay khi AP thoát khỏi chế độ tạm dừng, một lô sẽ được tạo 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 vẫn chưa trôi qua. Điều này giảm thiểu nguy cơ AP phải thức dậy lại ngay sau khi trở về chế độ tạm dừ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 chế độ 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, trình điều khiển có thể giữ khóa chế độ thức vì AP không có thời gian để chuyển sang chế độ tạm dừng vì nó sẽ bị đánh thức bởi sự kiện đánh thức trước khi chuyển sang chế độ tạm dừng.

Những lưu ý khi phân nhóm 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 hoàn toàn khỏi chế độ tạm dừng và bắt đầu xóa FIFO. Phải phân bổ đủ khoảng trống trong FIFO để cho phép thiết bị thoát khỏi chế độ treo mà không 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 khi sắp xếp các cảm biến thay đổi không đánh thức

Cảm biến 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 được thay đổi trong khi AP ở chế độ tạm dừng, các ứng dụng sẽ nhận được sự kiện ngay khi AP thức dậy. Do đó, việc sắp xếp các sự kiện cảm biến không đánh thức khi thay đổi 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 khi 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ý bộ đếm bước không đánh thức (khi thay đổi) và gia tốc kế không đánh thức (liên tục), cả hai đều có chung FIFO.
  2. Ứng dụng nhận được sự kiện đếm bước step_count=1000 steps mã>.
  3. AP sẽ tạm dừng.
  4. Người dùng đi bộ 20 bước, khiến các sự kiện bộ đếm bước và máy đo gia tốc bị 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 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 phân đợt

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

Nếu việc phân khối được thực hiện trong trung tâm cảm biến thì mức sử dụng năng lượng của trung tâm cảm biến sẽ đượ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 biệt là 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.

Ưu tiên phân bổ FIFO

Trên các nền tảng mà FIFO phần cứng và/hoặc kích thước bộ đệm trung tâm cảm biến bị giới hạn, 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. Để trợ giúp cho lựa chọn này, đây là danh sách các ứng dụng có thể áp dụng khi việc phân khối được triển khai trên các cảm biến khác nhau.

Giá trị cao: Tính toán người đi bộ sử dụng năng lượng 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
  • Vectơ 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 gộp dữ liệu này cho phép thực hiện tính toán số người đi bộ chết trong khi cho phép AP tạm dừng.

Giá trị cao: Nhận dạng cử chỉ/hoạt động không liên tục với công suất trung bình

Thời gian phân nhóm 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 gộ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ữ AP ở trạng thái thức trong khi dữ liệu được thu thập.

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

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 ở tần số 50 Hz

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

Giá trị trung bình cao: Giảm tải gián đoạn

Thời gian phân nhóm mục tiêu: < 1 giây

Cảm biến theo lô: bất kỳ cảm biến tần số cao nào, thường không hoạt động.

Nếu con quay hồi chuyển được đặt ở tần số 240 Hz, thậm chí chỉ cần tạo khối 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 ở tần số 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 ở mức tương tự

Cho phép tạo các ứng dụng giám sát ở mức năng lượng thấp.

Giá trị trung bình-thấp: Thu thập đầy đủ cảm biến 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 dừng. Chỉ xem xét nếu không gian FIFO không phải là vấn đề.