Почему процессор нагревается при выполнении более тяжелых вычислений по сравнению с простоями? - PullRequest
0 голосов
/ 31 октября 2019

Если бы мне пришлось перепроектировать мою операционную систему, я бы наивно предположил, что у нее есть цикл, который обычно выглядит следующим образом (с использованием одноядерного, однопоточного ЦП):

while(not shut_down):
    doSomeEnvironmentManagment()
    letProcessesAccessTheCPU()
    checkIfShutDown()
    ...

означает, что мой ЦП всегда что-то делает, когда мой компьютер включен. Он либо запускает код процесса, либо свой собственный. Даже в режиме ожидания электричество всегда проходит через процессор, чтобы он мог либо выполнить программу, либо проверить, что он будет делать дальше. Дело в том, что ЦП всегда выполняет вычисления (например, обновляет указатель инструкций и т. Д.)

Теперь, несмотря на это предположение, у моего ЦП будет стабильно более низкая температура в режиме ожидания и более высокая температура, когда программы его используют. чаще.

Итак, мой вопрос - почему это происходит? согласно предположению, электричество всегда запускается в моем процессоре по разным причинам, так почему же он не нагревается во время простоя?

Ответы [ 2 ]

2 голосов
/ 31 октября 2019

Современные процессоры используют CMOS (или совсем недавно FinFET ) технологическую технологию, которая разработана, чтобы позволить транзисторам ЦП потреблять очень мало энергии, за исключением состояния переключения. Когда ЦП выполняет цикл ожидания, гораздо меньше транзисторов должны менять состояние, чем при выполнении «тяжелых вычислений». В отсутствие какой-либо конкретной технологии энергосбережения современный ЦП будет потреблять меньше энергии в режиме ожидания.

Однако существует ряд технологий, которые ЦП могут использовать для еще большего снижения энергопотребления. Большинство из них построены вокруг одной инструкции, которую имеют почти все процессоры, - инструкция остановки.

Остановка цикла бездействия

В большинстве операционных систем цикл бездействия на самом деле выглядит следующим образом:

while(true):
    halt()

Где halt() выполняет команду остановки. Эта инструкция заставляет процессор ничего не делать, пока не получит прерывание. Когда он это делает, он нормально обрабатывает прерывание и продолжает нормальное выполнение. Выполняя эту инструкцию, ожидая прерывания, центральный процессор выполняет очень мало внутренних операций, нет необходимости даже увеличивать счетчик программ (указатель инструкции), поэтому очень мало транзисторов изменяют состояние, снижая энергопотребление.

Подобный бездействующий цикл работает, потому что операционная система планирует его как обычные процессы. Когда в ОС нет процессов, которые необходимо выполнить, она выполняет цикл ожидания. Свободный цикл или задача ожидания становится задачей с абсолютным наименьшим приоритетом. Когда аппаратное устройство указывает, что операция завершается через прерывание, другой процессор отправляет межпроцессорное прерывание, указывающее, что этот процессор должен что-то сделать, или происходит прерывание по таймеру, рабочий планировщик получает возможность увидеть, нужен ли обычному процессу сейчасCPU.

Состояния остановки с низким энергопотреблением

Дополнительные технологии энергосбережения могут использоваться для дальнейшего снижения мощности при выполнении команды остановки. Напряжение ЦП может быть уменьшено. Процессор может остановить свои часы, чтобы уменьшить изменения состояния транзистора, которые должны произойти во время ожидания. Части ЦП могут быть отключены, так что даже небольшое количество энергии, которое их транзисторы используют в режиме ожидания, не потребляется. Использование таких режимов с низким энергопотреблением может стоить таких затрат, как увеличение задержки при возобновлении нормального выполнения или уменьшение количества источников прерываний, способных завершить ожидание, поэтому они не обязательно используются все время в режиме ожидания.

Вкл. встроенные центральные процессоры с низким энергопотреблением могут снизить потребляемый ток до пары сотен наноампер, что может быть меньше, чем уровень саморазряда батарей, используемых для питания этих устройств. Таким образом, батарея будет терять больше энергии, находящейся на полке, чем эти процессоры потребляли бы за то же время, когда находились в состоянии с самым низким энергопотреблением. Процессоры общего назначения, такие как процессоры x86 и даже усовершенствованные процессоры ARM, которые приводят в действие смартфоны, не могут приблизиться к этим бесконечно малым значениям мощности, но они могут значительно снизить энергопотребление в режиме ожидания по сравнению с их состояниями полной мощности.

Другие технологии энергосбережения

Существуют и другие технологии энергосбережения, которые могут использовать процессоры, которые не включают инструкцию остановки, например, снижение тактовой частоты, когда не нужно много работать. Связанной технологией является «турбонаддув», который увеличивает тактовую частоту одного или нескольких процессорных ядер, но, помимо экономии энергии, на практике это более эффективный метод балансировки энергопотребления (и, следовательно, выработки тепла) между несколькимиПроцессорные ядра. У одного или нескольких ядер ЦП повышена тактовая частота при использовании большей мощности, в то время как другие ядра в основном простаивают, потребляя меньше энергии. Поскольку большинство задач, выполняемых сегодня ЦП, по-прежнему однопоточные, это может стать большим выигрышем для общей производительности без увеличения энергопотребления в такой же степени, как при увеличении скорости всех ядер.

Большинство других технологий энергосбережения, используемых в компьютерах, влияют на общее энергопотребление системы, а не на сам ЦП, и / или используются только в том случае, если компьютер находится в режиме ожидания, сна или гибернации, а не только в режиме ожидания.

1 голос
/ 31 октября 2019

Я думаю, вы неправильно поняли, как ток течет через ваш процессор. Проще говоря, ваш процессор не потребляет почти столько же энергии на холостом ходу, сколько при загрузке пользователя. Для экономии энергии ваш процессор имеет гораздо меньшее потребление напряжения и работает на более низкой частоте для экономии энергии. Процессор не только работает медленнее, чтобы экономить электроэнергию в соответствии с рабочей нагрузкой, но также работает на максимальной частоте, а потребление максимальной мощности может привести к тому, что процессор будет сильно нагреваться, что в долгосрочной перспективе отрицательно сказывается на его работоспособности. Короче говоря, процессор работает только так быстро, как ему требуется при меньшей рабочей нагрузке, для экономии энергии и предотвращения повреждения процессора. Большинство современных процессоров теперь имеют какую-то технологию Turbo Boost, которая позволяет им работать на более высоких частотах при выполнении задачи, которая не требует использования многопоточности. Если вы хотите продолжить изучение этой темы, пожалуйста, загрузите полезное программное обеспечение для мониторинга оборудования, такое как HwInfo, и запустите различные задачи, такие как тесты стресс-тестов, чтобы увидеть взаимосвязь между использованием процессора, температурой и энергопотреблением. Надеюсь, это помогло:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...