HLT (инструкция x86) - HLT (x86 instruction)

в x86 компьютерная архитектура, HLT (остановка) - это язык ассемблера инструкция, которая останавливает центральное процессорное устройство (CPU) до следующего внешнего прерывать уволен.[1] Прерывания - это сигналы, отправляемые аппаратными устройствами в ЦП, предупреждающие его о том, что произошло событие, на которое он должен отреагировать. Например, аппаратные таймеры отправляют прерывания процессору через равные промежутки времени.

В HLT инструкция выполняется Операционная система когда нет немедленной работы, и система входит в состояние простоя. В Windows NT, например, эта инструкция выполняется в "Процесс простоя системы ". На процессорах x86 код операции из HLT является 0xF4.

История на x86

Все процессоры x86, начиная с 8086, имели HLT инструкция, но она не использовалась MS-DOS до 6.0[2] и не был специально разработан для снижения энергопотребления до выпуска Intel DX4 процессор в 1994 году. MS-DOS 6.0 предоставляла POWER.EXE, который можно было установить в CONFIG.SYS а в тестах Microsoft сэкономила 5%.[3] Некоторые из первых 100 МГц DX-чипов имели ошибочное состояние HLT, что побудило разработчиков Linux чтобы реализовать параметр "no-hlt" для использования при работе на этих чипах,[4] но это было исправлено в более поздних версиях.

С тех пор Intel представила дополнительные инструкции для процессора. К ним относятся:

  • ПАУЗА в SSE2 предназначен для отжима петель. Доступно для пользовательского пространства (кольца с низким уровнем привилегий).
  • МОНИТОР/MWAIT в SSE3 для синхронизации потоков.
  • TPAUSE (временная пауза) и ЮМОНИТОР/UMWAIT (монитор пользовательского пространства / mwait). Доступно для пользовательского пространства.

Процесс

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

Использование в операционных системах

С момента выпуска HLT инструкция требует кольцо 0 доступ, он может запускаться только привилегированным системным программным обеспечением, таким как ядро. Из-за этого в прикладном программировании часто рекомендуется использовать интерфейс прикладного программирования (API), предоставляемый для этой цели операционной системой, когда больше нельзя выполнять работу, например, Linux sched_yield ().[5] Это называется «уступкой» процессора. Это позволяет планировщик операционной системы чтобы решить, можно ли запустить другие процессы; в противном случае он обычно выдает инструкцию HLT, чтобы сократить потребление энергии.

Смотрите также

Рекомендации

  1. ^ «Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32: справочник по набору команд от А до Я» (PDF). Получено 2012-03-01.
  2. ^ «Почему DOS использует 100% ЦП под Virtual PC?». microsoft.com. Получено 18 ноября 2018.
  3. ^ «Поддержка POWER.EXE и Advanced Power Management (APM)». Архивировано из оригинал в 2014-09-27. Получено 2015-09-27.
  4. ^ "Linux BootPrompt-HowTo". www.faqs.org. Получено 18 ноября 2018.
  5. ^ "sched_yield (2) - страница руководства Linux". Получено 2020-09-02.