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, чтобы сократить потребление энергии до следующего аппаратного прерывания.
Смотрите также
- Расширенный интерфейс настройки и питания (ACPI)
- Расширенное управление питанием (APM)
- Компьютерная архитектура
- Остановись и загорелся
- В режиме ожидания (ЦП)
- Архитектура набора команд
- NOP (код)