Современные процессоры используют CMOS (или совсем недавно FinFET ) технологическую технологию, которая разработана, чтобы позволить транзисторам ЦП потреблять очень мало энергии, за исключением состояния переключения. Когда ЦП выполняет цикл ожидания, гораздо меньше транзисторов должны менять состояние, чем при выполнении «тяжелых вычислений». В отсутствие какой-либо конкретной технологии энергосбережения современный ЦП будет потреблять меньше энергии в режиме ожидания.
Однако существует ряд технологий, которые ЦП могут использовать для еще большего снижения энергопотребления. Большинство из них построены вокруг одной инструкции, которую имеют почти все процессоры, - инструкция остановки.
Остановка цикла бездействия
В большинстве операционных систем цикл бездействия на самом деле выглядит следующим образом:
while(true):
halt()
Где halt()
выполняет команду остановки. Эта инструкция заставляет процессор ничего не делать, пока не получит прерывание. Когда он это делает, он нормально обрабатывает прерывание и продолжает нормальное выполнение. Выполняя эту инструкцию, ожидая прерывания, центральный процессор выполняет очень мало внутренних операций, нет необходимости даже увеличивать счетчик программ (указатель инструкции), поэтому очень мало транзисторов изменяют состояние, снижая энергопотребление.
Подобный бездействующий цикл работает, потому что операционная система планирует его как обычные процессы. Когда в ОС нет процессов, которые необходимо выполнить, она выполняет цикл ожидания. Свободный цикл или задача ожидания становится задачей с абсолютным наименьшим приоритетом. Когда аппаратное устройство указывает, что операция завершается через прерывание, другой процессор отправляет межпроцессорное прерывание, указывающее, что этот процессор должен что-то сделать, или происходит прерывание по таймеру, рабочий планировщик получает возможность увидеть, нужен ли обычному процессу сейчасCPU.
Состояния остановки с низким энергопотреблением
Дополнительные технологии энергосбережения могут использоваться для дальнейшего снижения мощности при выполнении команды остановки. Напряжение ЦП может быть уменьшено. Процессор может остановить свои часы, чтобы уменьшить изменения состояния транзистора, которые должны произойти во время ожидания. Части ЦП могут быть отключены, так что даже небольшое количество энергии, которое их транзисторы используют в режиме ожидания, не потребляется. Использование таких режимов с низким энергопотреблением может стоить таких затрат, как увеличение задержки при возобновлении нормального выполнения или уменьшение количества источников прерываний, способных завершить ожидание, поэтому они не обязательно используются все время в режиме ожидания.
Вкл. встроенные центральные процессоры с низким энергопотреблением могут снизить потребляемый ток до пары сотен наноампер, что может быть меньше, чем уровень саморазряда батарей, используемых для питания этих устройств. Таким образом, батарея будет терять больше энергии, находящейся на полке, чем эти процессоры потребляли бы за то же время, когда находились в состоянии с самым низким энергопотреблением. Процессоры общего назначения, такие как процессоры x86 и даже усовершенствованные процессоры ARM, которые приводят в действие смартфоны, не могут приблизиться к этим бесконечно малым значениям мощности, но они могут значительно снизить энергопотребление в режиме ожидания по сравнению с их состояниями полной мощности.
Другие технологии энергосбережения
Существуют и другие технологии энергосбережения, которые могут использовать процессоры, которые не включают инструкцию остановки, например, снижение тактовой частоты, когда не нужно много работать. Связанной технологией является «турбонаддув», который увеличивает тактовую частоту одного или нескольких процессорных ядер, но, помимо экономии энергии, на практике это более эффективный метод балансировки энергопотребления (и, следовательно, выработки тепла) между несколькимиПроцессорные ядра. У одного или нескольких ядер ЦП повышена тактовая частота при использовании большей мощности, в то время как другие ядра в основном простаивают, потребляя меньше энергии. Поскольку большинство задач, выполняемых сегодня ЦП, по-прежнему однопоточные, это может стать большим выигрышем для общей производительности без увеличения энергопотребления в такой же степени, как при увеличении скорости всех ядер.
Большинство других технологий энергосбережения, используемых в компьютерах, влияют на общее энергопотребление системы, а не на сам ЦП, и / или используются только в том случае, если компьютер находится в режиме ожидания, сна или гибернации, а не только в режиме ожидания.