HLT (instrukce x86) - HLT (x86 instruction)

V x86 počítačová architektura, HLT (zastavit) je montážní jazyk instrukce, která zastaví centrální procesorová jednotka (CPU) až do dalšího externího přerušit je vyhozen.[1] Přerušení jsou signály odesílané hardwarovými zařízeními do CPU, které jej upozorňují, že došlo k události, na kterou by měl reagovat. Například hardwarové časovače odesílají přerušení do CPU v pravidelných intervalech.

The HLT instrukci provádí operační systém když není třeba dělat okamžitou práci a systém vstoupí do své klidový stav. v Windows NT například tato instrukce se spouští v „Proces nečinnosti systému ". Na procesorech x86 se operační kód z HLT je 0xF4.

Historie na x86

Všechny procesory x86 od roku 8086 měly HLT instrukce, ale nebyl použit MS-DOS před 6.0[2] a nebyl speciálně navržen tak, aby snižoval spotřebu energie až do vydání Intel DX4 procesor v roce 1994. MS-DOS 6.0 poskytl POWER.EXE, který mohl být nainstalován v CONFIG.SYS a v testech společnosti Microsoft ušetřil 5%.[3] Některé z prvních 100 MHz DX čipů měly bugovaný stav HLT, což vedlo vývojáře Linux implementovat možnost "no-hlt" pro použití při běhu na těchto čipech,[4] ale toto bylo opraveno v pozdějších čipech.

Společnost Intel od té doby zavedla další pokyny pro získání procesoru. Tyto zahrnují:

  • PAUZA v SSE2 určeno pro spinové smyčky. K dispozici pro uživatelský prostor (kroužky s nízkou privillege).
  • MONITOR/MWAIT v SSE3 pro synchronizaci vláken.
  • TPAUSE (časovaná pauza) a UMONITOR/UMWAIT (monitor uživatelského prostoru / mwait). K dispozici v uživatelském prostoru.

Proces

Téměř každý moderní procesor instrukční sada obsahuje instrukční nebo klidový režim, který zastaví procesor, dokud není potřeba více práce. V procesorech řízených přerušením tato instrukce zastaví CPU, dokud není přijato externí přerušení. U většiny architektur umožňuje provedení takové instrukce procesoru výrazně snížit spotřebu energie a tepelný výkon, a proto se běžně používá místo rušné čekání na spaní a na volnoběh.

Použití v operačních systémech

Od vydání HLT instrukce vyžaduje prsten 0 přístup, může být spuštěn pouze privilegovaným systémovým softwarem, jako je jádro. Z tohoto důvodu je často nejlepší praxí v programování aplikací používat aplikační programovací rozhraní (API) poskytovaný pro tento účel operačním systémem, když již nelze provádět žádné další práce, například Linux sched_yield ().[5] Toto se označuje jako „výtěžek“ procesoru. To umožňuje plánovač operačního systému rozhodnout, zda lze spustit další procesy; pokud ne, normálně vydá pokyn HLT ke snížení spotřeby energie.

Viz také

Reference

  1. ^ „Příručka pro vývojáře softwaru Intel 64 a IA-32 Architectures: Reference instrukční sady A-Z“ (PDF). Citováno 2012-03-01.
  2. ^ „Proč DOS používá 100% CPU pod Virtual PC?“. microsoft.com. Citováno 18. listopadu 2018.
  3. ^ „POWER.EXE a podpora pokročilé správy napájení (APM)“. Archivovány od originál dne 2014-09-27. Citováno 2015-09-27.
  4. ^ „Linux BootPrompt-HowTo“. www.faqs.org. Citováno 18. listopadu 2018.
  5. ^ "sched_yield (2) - Linuxová manuální stránka". Citováno 2020-09-02.