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


Из Википедии, свободной энциклопедии
  (Перенаправлено из инструкции HLT )
Перейти к навигации Перейти к поиску

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

Большинство операционных систем выполняют 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 представила дополнительные инструкции по использованию процессора. К ним относятся:

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

Процесс

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

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

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

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

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

  1. ^ «Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32: Справочник по набору инструкций, AZ» . Проверено 01 марта 2012 г. .
  2. ^ «Почему DOS использует 100% ЦП в Virtual PC?» . microsoft.com . Проверено 18 ноября 2018 г.
  3. ^ «POWER.EXE и поддержка Advanced Power Management (APM)» . Архивировано из оригинала 27 сентября 2014 г. Проверено 27 сентября 2015 г. .
  4. Викискладе есть медиафайлы по теме Linux BootPrompt . www.faqs.org . Проверено 18 ноября 2018 г.
  5. ^ "sched_yield(2) - справочная страница Linux" . Проверено 02 сентября 2020 г. .
Получено с https://en.wikipedia.org/w/index.php?title=HLT_(x86_instruction)&oldid=1067362898 "