WikiDer > HLT (инструкция x86)
в 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, чтобы сократить потребление энергии.
Смотрите также
- Остановись и загорелся
- В режиме ожидания (ЦП)
- Компьютерная архитектура
- NOP (код)
- Расширенное управление питанием (APM)
- Расширенная конфигурация и интерфейс питания (ACPI)
Рекомендации
- ^ «Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32: справочник по набору команд от А до Я» (PDF). Получено 2012-03-01.
- ^ «Почему DOS использует 100% ЦП под Virtual PC?». microsoft.com. Получено 18 ноября 2018.
- ^ «Поддержка POWER.EXE и Advanced Power Management (APM)». Архивировано из оригинал в 2014-09-27. Получено 2015-09-27.
- ^ "Linux BootPrompt-HowTo". www.faqs.org. Получено 18 ноября 2018.
- ^ "sched_yield (2) - страница руководства Linux". Получено 2020-09-02.