Tại sao thiết kế hệ điều hành có thể giảm tiêu thụ năng lượng?


11

Tôi đã đọc được rằng các hệ điều hành như Android và iOS bằng cách nào đó được tối ưu hóa để cải thiện thời lượng pin.

Tôi hiểu rằng CPU thực hiện một số hoạt động nhất định trong một thời gian nhất định, vì vậy tôi nghĩ rằng bạn có thể tăng tốc các ứng dụng bằng cách giảm số lượng hoạt động cần thiết, nhưng vì CPU vẫn sẽ thực hiện các hoạt động x trong thời gian y , nên không nên ảnh hưởng đến quyền lực?

Ngoài ra, nếu một quá trình chiếm nhiều RAM, nó có tiêu thụ nhiều năng lượng hơn không?

Câu trả lời:


15

Các CPU thông thường đi vào điện thoại thông minh, máy tính xách tay và thậm chí cả máy tính để bàn có tốc độ xung nhịp thay đổi. Khi bộ lập lịch phát hiện ra rằng nó có thời gian nhàn rỗi, nó có thể giảm tốc độ xung nhịp và tăng lại nếu có nhiều quá trình cạnh tranh với thời gian của CPU.

CPU được tối ưu hóa cho các thiết bị chạy bằng pin có xu hướng bao gồm nhiều thành phần chức năng mà mỗi thành phần có đồng hồ riêng (ví dụ: ARM Cortex A8 ). Khi một thành phần không hoạt động, hệ điều hành có thể tắt (hoặc giảm xung nhịp), giúp tiết kiệm năng lượng. Ví dụ, trên nhiều CPU đa lõi (chẳng hạn như các CPU trong thiết bị di động cao cấp), mỗi lõi có thể được bật hoặc tắt riêng. ARM đặc biệt giỏi trò chơi này, đó là một trong những lý do tại sao hầu hết các điện thoại thông minh đều có CPU ARM.

Thay đổi tốc độ đồng hồ hoặc tắt đồng hồ của các thành phần điện tử được gọi là quản lý năng lượng . Nó có xu hướng là một phần phức tạp của việc viết và tối ưu hóa một hệ điều hành cho một thiết bị chạy bằng pin, với nhiều phụ thuộc vào mô hình phần cứng chính xác.

Những gì đi cho CPU cũng đi cho các thiết bị ngoại vi. Màn hình có đèn nền là một người tiêu dùng năng lượng lớn trên điện thoại thông minh, ví dụ, sau đó là radio. Hệ điều hành CPU có thể đóng một vai trò trong quản lý năng lượng của các thiết bị ngoại vi; chip thứ cấp cũng chạy phần sụn riêng cũng thực hiện quản lý năng lượng.

Các ứng dụng có một phần để giữ mức tiêu thụ điện năng giảm: chúng phải cho phép hệ điều hành thực hiện công việc của mình. Điều tồi tệ nhất mà một ứng dụng có thể làm là bỏ phiếu - chạy một vòng lặp như thế nào while (not_ready()) {}. Ngay cả việc đưa ra một độ trễ nhỏ vì while (not_ready()) {usleep(100);}không giúp ích gì vì nó không cho phép đủ thời gian để bộ xử lý chuyển sang chế độ năng lượng thấp hoặc nếu có, mỗi lần thức dậy không hiệu quả có nghĩa là lãng phí năng lượng. Do đó, API hệ điều hành phải được thiết kế sao cho các ứng dụng không bao giờ cần thăm dò mà thay vào đó có thể đăng ký một số loại cơ chế sự kiện và không hoạt động cho đến khi chúng được thông báo về một sự kiện có liên quan. Các ứng dụng lần lượt cần tận dụng các cơ chế như vậy, vì vậy thiết kế của toàn bộ phần mềm có tác động đến mức tiêu thụ điện năng.

Bạn có thể nhận được một số thông tin về những gì chịu trách nhiệm cho mức tiêu thụ năng lượng của PC với tiện ích Powertop của Intel . Điện thoại thông minh thường có một cách để xem bao nhiêu ứng dụng năng lượng đã được tiêu thụ là tốt. Việc tính toán mức tiêu thụ năng lượng theo ứng dụng chính xác là rất khó: nếu một thành phần thức dậy cho hai ứng dụng, thời gian thức dậy có thể được tính cho một trong số chúng một cách tùy tiện hoặc không; tiêu thụ năng lượng của thiết bị ngoại vi cũng không phải lúc nào cũng dễ dàng được theo dõi cho ứng dụng chịu trách nhiệm.

Một chip RAM không biết bit nào của nó lưu trữ dữ liệu của một quá trình đang hoạt động, vì vậy nó không thể được tắt một cách chọn lọc theo cách này. Mức tiêu thụ năng lượng của một quá trình không liên quan đến dung lượng bộ nhớ mà nó sử dụng (ngoại trừ khi truy cập RAM tiêu thụ năng lượng, nhưng sử dụng lại cùng một bộ nhớ hoặc sử dụng các vùng RAM khác nhau sẽ không khác biệt về mức tiêu thụ năng lượng).


4

Về sức mạnh của bộ xử lý, điều chính mà HĐH có thể làm là cung cấp các API ngăn cản các ứng dụng bỏ phiếu. (Và cũng loại bỏ tất cả các cuộc bỏ phiếu bên trong trình điều khiển hạt nhân và thiết bị nếu có.) Sau đó, bộ xử lý có thể được đưa vào trạng thái ngủ công suất thấp bất cứ khi nào không có gì để làm.

Đối với mọi thiết bị, cần có một cách để các ứng dụng của người dùng chuyển sang chế độ ngủ sau khi yêu cầu và sau đó được đánh thức lại chỉ khi kết quả đã sẵn sàng.

Rõ ràng các vòng bỏ phiếu chặt chẽ là một thảm họa (vì chúng giữ cho bộ xử lý hoàn toàn tỉnh táo và thực hiện các tiếng ồn và nhảy vô dụng.) Nhưng có những trường hợp xấu hơn, nhưng gần như là các ứng dụng người dùng đang cài đặt bộ hẹn giờ, đánh thức báo thức hẹn giờ, kiểm tra một số điều kiện, đặt lại bộ đếm thời gian và trở lại giấc ngủ.

Tôi biết ít hơn về phần này nhưng tôi nghĩ cũng có thể có những cách sáng tạo sử dụng bộ điều khiển DMA (truy cập bộ nhớ trực tiếp) để xử lý các chuỗi dài các ngắt lặp mà không đánh thức lõi của bộ xử lý.


3

Vai trò chính của HĐH là cung cấp môi trường thời gian chạy độc lập với phần cứng nhất có thể. Nó biết ai đang sử dụng phần cứng gì, khi nào và làm thế nào ai đó đang sử dụng phần cứng. Điều này cho phép HĐH giảm mức tiêu thụ năng lượng phần cứng khi không sử dụng.

Phần cứng hiện đại cung cấp nhiều cách để giảm tiêu thụ năng lượng, chẳng hạn như

  • tắt các thiết bị ngoại vi không sử dụng và một phần của bộ xử lý (đơn vị số học dấu phẩy động, lõi bộ xử lý, ...)
  • xung nhịp của các bộ phận ít được sử dụng (bao gồm cả lõi bộ xử lý)
  • điều chỉnh nguồn cung cấp để phù hợp với tần số xung nhịp hiện tại (bạn có thể sửa đổi điện áp làm việc của bộ xử lý khi đang di chuyển, đôi khi bằng hàng trăm mA)

Nếu một quá trình chiếm nhiều RAM hơn, nó có tiêu thụ nhiều năng lượng hơn không?

Không hẳn vậy. Tuy nhiên, nếu hệ thống của bạn có 1GB DRAM, nhưng bạn chỉ sử dụng 512MB, với một số bộ điều khiển bộ nhớ, có thể dừng làm mới một phần DRAM, do đó giảm mức tiêu thụ điện năng. LPDDR hỗ trợ Tự làm mới một phần khu vực để làm tương tự trong khi tự làm mới (trong khi bộ xử lý bị dừng, điều này đúng với hầu hết thời gian trên thiết bị di động).

Như bạn có thể thấy, có nhiều cách để giảm mức tiêu thụ năng lượng trên các kiến ​​trúc hiện đại, nhưng nó đòi hỏi HĐH phải xử lý nó. Một số tính năng, chẳng hạn như PASR, rất khó sử dụng, điều này đòi hỏi nhiều công việc trên HĐH để điều chỉnh quản lý bộ nhớ, để thực hiện các thủ tục đình chỉ / tiếp tục, ...


Lưu ý bên lề: Mặc dù không nhất thiết liên quan trực tiếp đến quá trình ngốn RAM, việc sử dụng RAM lớn hơn có thể dẫn đến bộ nhớ đệm hệ thống tập tin ít hơn có thể ảnh hưởng đến hiệu quả năng lượng (cũng như hiệu suất).
Paul A. Clayton

3

Như bạn không nghi ngờ gì, hệ điều hành duy trì một loạt các danh sách. Hai trong số các danh sách này là danh sách sẵn sàng và danh sách hẹn giờ. Danh sách sẵn sàng xác định những nhiệm vụ / chủ đề đã sẵn sàng để chạy. Danh sách hẹn giờ xác định các tác vụ / luồng đang ở trạng thái bị chặn với thời gian chờ.

Hãy tưởng tượng rằng hệ điều hành có một danh sách sẵn sàng trống. Đó là, nó đã hết các tác vụ đã sẵn sàng để chạy (nó ở trạng thái không hoạt động). Một số bộ xử lý (chẳng hạn như x86) có lệnh dừng mà HĐH có thể gọi để khiến bộ xử lý dừng lại cho đến khi bị đánh thức bởi một ngắt ngoài (như ngắt ngắt). Trong thời gian này, nó tiêu thụ ít năng lượng hơn. Kỹ thuật này có thể được cải thiện hơn nữa bằng cách nhìn trộm vào danh sách hẹn giờ. Nếu bạn không sử dụng và bạn biết rằng sớm nhất một tác vụ có thể thức dậy sau một tích tắc hẹn giờ là 100 tick, tốc độ đánh dấu có thể được sửa đổi tạm thời để nói chậm hơn 100 lần. Bằng cách này, bộ xử lý có thể tiêu tốn ít năng lượng hơn trong một khoảng thời gian dài hơn vì nó sẽ không phải phục vụ tới 100 ngắt.

Khi ngắt bên ngoài đến, tốc độ đánh dấu sẽ phải được tính toán lại. Nếu ngắt ngoài làm cho một tác vụ sẵn sàng, tốc độ đánh dấu trở lại bình thường. Nếu không, số lượng bọ ve để ngủ phải được tính toán lại cùng với tốc độ đánh dấu mới (chậm lại).

Hi vọng điêu nay co ich.


2

Để thêm vào các câu trả lời khác:
Câu hỏi của bạn coi iOS và Android là hệ điều hành nhưng "Hệ điều hành" chỉ là một phần trong số đó.
Cả Android và iOS đều là các khung và bao gồm nhiều phần không được coi là một phần của HĐH thực tế nhưng hoạt động trong việc giảm mức tiêu thụ điện năng.
Ví dụ, Android theo thiết kế cho phép các nhà phát triển ứng dụng lưu trạng thái của họ khi bị ẩn, do đó các quy trình có thể bị chấm dứt khi không sử dụng tích cực và do đó giảm lượng luồng sẵn sàng và cho phép tắt lõi và giảm tốc độ xung nhịp.
Có các tính năng trong "HĐH" thiết lập độ sáng thích ứng, trạng thái ngủ wi-fi, luồng dọn dẹp, lập lịch biểu, đèn LED, hành vi chờ của tế bào và các khía cạnh khác ảnh hưởng mạnh đến mức tiêu thụ điện.
Ngoài ra, một số nền tảng di động đã nỗ lực tối ưu hóa tỷ lệ sử dụng CPU / GPU của họ, do GPU thích nghi hơn với đồ họa và đây là một bổ sung tương đối mới cho bối cảnh di động, ngày càng có nhiều phần liên quan đến đồ họa của HĐH chuyển sang GPU, giúp loại bỏ công việc khỏi CPU và cho phép sử dụng tối ưu hóa năng lượng CPU được sử dụng (và trong nhiều trường hợp, cũng tăng tốc toàn bộ hệ thống).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.