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

редактировать

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

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

Содержание
  • 1 История на x86
  • 2 Процесс
  • 3 Использование в операционных системах
  • 4 См. Также
  • 5 Ссылки
История на x86

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

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

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

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

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

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

См. Также
Ссылки
Последняя правка сделана 2021-05-22 08:49:25
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте