Nagy pontosságú esemény időzítő - High Precision Event Timer
A nagy pontosságú eseményidőzítő ( HPET ) egy személyi számítógépekben használt hardveres időzítő . Ezt az Intel és a Microsoft közösen fejlesztette ki, és 2005 óta beépítették a PC lapkakészletekbe . Korábban az Intel multimédiás időzítőnek nevezte, a HPET kifejezést azért választották ki, hogy elkerüljék az összetévesztést a MultiMedia Extensions to Windows 3.0 rendszerben bevezetett szoftver multimédiás időzítőkkel .
A régebbi operációs rendszerek , amelyek nem támogatják a hardveres HPET eszközt, csak régebbi időzítő eszközöket használhatnak, például a programozható intervallum időzítőt (PIT) vagy a valós idejű órát (RTC). A Windows XP a legújabb hardveres absztrakciós réteggel (HAL) felszerelve a processzor időbélyegző -számlálóját (TSC) vagy az ACPI energiagazdálkodási időzítőjét (ACPI PMTIMER) is használhatja az RTC -vel együtt olyan operációs rendszer -funkciók biztosítására, amelyek későbbi Windows verziókat a HPET hardver biztosítja. Zavarba ejtő, hogy az ilyen Windows XP rendszerek "HPET" kapcsolatot idéznek az eszköz -illesztőprogram -kezelőben, annak ellenére, hogy az Intel HPET -eszközt nem használják.
Jellemzők
A HPET chip egy 64 bites felszámolóból (fő számlálóból) áll, amely legalább 10 MHz frekvencián számlál, és egy sor (legalább három, legfeljebb 256) összehasonlítóból. Ezek az összehasonlítók 32 vagy 64 bit szélesek. A HPET memórialeképezett I/O ablakon keresztül programozható , amely az Advanced Configuration and Power Interface (ACPI) segítségével felfedezhető. A modern PC -k HPET áramköre integrálva van a southbridge chipbe .
Minden összehasonlító generálhat megszakítást, ha a legkevésbé szignifikáns bitek megegyeznek a 64 bites fő számlálóérték megfelelő bitjeivel. Az összehasonlítók egyképes vagy periodikus módba állíthatók, legalább egy összehasonlító támogatja az időszakos módot, és mindegyik támogatja az egyképes módot. Egyképes módban az összehasonlító egyszer megszakítást ad, amikor a fő számláló eléri az összehasonlító regiszterben tárolt értéket, míg periodikus módban a megszakítások meghatározott időközönként generálódnak.
A komparátorokat az operációs rendszer hajthatja, pl. CPU -nként egy időzítést biztosít az ütemezéshez, vagy az alkalmazások.
Alkalmazások
A HPET képes rendszeres megszakítások sokkal nagyobb felbontású, mint az RTC, és gyakran használják szinkronizálni multimédia folyamok, amely sima lejátszás, és csökkenti annak szükségességét, hogy használjon más időbélyeg számításokat, mint egy X86 alapú CPU „s RDTSCoktatás.
Összehasonlítás az elődökkel
A HPET kiegészíti és helyettesíti a 8254 programozható intervallum időzítőt és az RTC periodikus megszakítási funkcióját. Ezekhez a régebbi időzítő áramkörökhöz képest a HPET magasabb frekvenciájú és szélesebb 64 bites számlálókkal rendelkezik (bár 32 bites módban is meghajthatók).
A HPET specifikáció nem határozza meg az időzítő frekvenciáját, csak minimum 10 MHz -et igényel ; a tényleges gyakoriságot egy hardverregiszter biztosítja az operációs rendszer számára, amely megadja az időszakonkénti femtoszekundumok számát (felső határértékkel100 000 000 fs ). A népszerű érték 14,3 18 MHz, 12 -szerese a szabványos 8254 -es 1,193 18 MHz -es frekvenciának.
Míg 8254 és RTC lehet helyezni olyan HPET-szerű egymenetes módban a beállítási folyamat olyan lassú, hogy az egy-shot mód a gyakorlatban nem használják az igénylő feladatok pontos ütemezést. Ehelyett a 8254 -et és az RTC -t tipikusan periodikus módban használják, nagyon kis időintervallummal. Például, ha egy alkalmazásnak több rövid (esetleg ezredmásodperces) várakozást kell végrehajtania, akkor jobb, ha egy periodikus időzítő folyamatosan fut 1 ms időtartammal a 8254 vagy RTC egyképes időzítő magas beállítási költségei miatt. Ez minden ezredmásodpercben megszakítást okoz, még akkor is, ha az alkalmazásnak ritkábban kell tényleges munkát végeznie. A HPET használatával elkerülhetők az extra megszakítások, mivel a HPET egyképes időzítő beállítási költsége lényegesen kisebb.
Használat és kompatibilitás
A HPET létezése előtt tervezett operációs rendszerek nem használhatják a HPET -et, ezért más időzítőket használnak. Az újabb operációs rendszerek általában képesek bármelyiket használni. Néhány hardver rendelkezik mindkettővel. Valójában a legtöbb dél-híd chipben örökölt támogatású példányok, PIT, PIC, Advanced Programmable Interrupt Controller (APIC) és RTC eszközök vannak beépítve a szilíciumba, függetlenül attól, hogy az operációs rendszer használja-e őket, vagy sem, ami segít a nagyon modern számítógépeknek régebbi operációs rendszerek futtatásában. .
A következő operációs rendszerek ismertek sem , hogy képes legyen használni HPET: Windows XP SP1 és a korábbi Windows- verziók, Linux kernelek előtt 2.6.
A következő operációs rendszerekről ismert, hogy képesek a HPET használatára: Windows XP SP3, Windows Server 2003 SP2 , Windows Server 2008 , Windows Server 2008 R2 , Windows Vista , Windows 7 , OS X , Linux operációs rendszerek 2.6 -os verziói kernel (vagy újabb), FreeBSD és OpenSolaris .
A Linux kernel is használhatja HPET mint a órajelforrás . A Red Hat MRG 2. verziójának dokumentációja kimondja, hogy a TSC az előnyben részesített óraforrás a sokkal alacsonyabb rezsi miatt, de a HPET -t használja tartalékként. Ebben a környezetben egy 10 millió eseményszámra vonatkozó benchmark megállapította, hogy a TSC körülbelül 0,6 másodpercet, a HPET valamivel több mint 12 másodpercet és az ACPI energiagazdálkodási időzítő körülbelül 24 másodpercet vett igénybe.
2019 -ben úgy döntöttek, hogy a HPET feketelistára kerül az újabb Linux -rendszermagokban, amikor néhány Intel CPU -n ( Coffee Lake ) fut, instabilitása miatt.
Problémák
A HPET folyamatosan futó időzítő, amely felfelé számol, nem pedig egy egyképes eszköz, amely visszaszámol nullára, egy megszakítást okoz, majd leáll. Mivel a HPET a tényleges időzített értéket és a programozott célértéket összehasonlítja az egyenlőséggel, nem pedig "nagyobb vagy egyenlő" értékkel, a megszakítások elmaradhatnak, ha a célidő már elmúlt, amikor az összehasonlító értéket beírták a chip regiszterébe. Ilyen esetben nem csak a tervezett megszakítás marad el, hanem ténylegesen messze a jövőbe kerül (kb. 2 32 vagy 2 64 számít). A nem maszkolható megszakítások (például a rendszerkezelési megszakítás (SMI)) jelenlétében , amelyeknek nincs szigorú felső határa a végrehajtási idejükben, ez a versenyfeltétel időigényes újbóli ellenőrzéseket igényel az időzítő beállítása után, és nehéz. hogy teljesen elkerülje. A nehézségek fokozódnak, ha az összehasonlító értéket nem szinkronizálják azonnal az időzítővel, hanem egy vagy két kullanccsal késleltetik, mint néhány lapkakészlet.
A fent tárgyalt versenyfeltételek megemlítése mellett a VMware dokumentum néhány egyéb hátrányt is felsorol: "A specifikáció nem írja elő, hogy az időzítőnek különösen finomszemcsésnek, alacsony sodródásúnak vagy gyorsan olvashatónak kell lennie. Néhány tipikus megvalósítás lefutja a számlálót körülbelül 18 MHz, és körülbelül ugyanannyi időt (1–2 μs) igényel a HPET olvasása, mint az ACPI időzítőnél. Olyan megvalósításokat figyeltek meg, amelyekben az időszakregiszter 800 ppm vagy annál nagyobb értéken van kikapcsolva. "