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).