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

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

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

История на x86

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

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

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

Процесс

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

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

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

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

использованная литература