Кіріспе

Персональды компьютерлерде қолданылатын аппараттық таймер

Жоғары дәлдікті оқиға таймері (HPET) – қазіргі заманғы x86 үйлесімді персональды компьютерлерде қол жетімді аппараттық таймер. x86 архитектурасындағы бұрынғы таймер түрлерімен салыстырғанда, HPET мультимедиа ойнату және операциялық жүйе тапсырмаларын ауыстыру сияқты уақытқа аса сезімтал қолданбаларды тиімді өңдеуге мүмкіндік береді. Ол Intel және Microsoft компаниялары бірлесіп әзірледі және 2005 жылдан бері компьютерлік чипсеттерге енгізілген. Бұрын Intel компаниясы бұл таймерді «Мультимедиялық таймер» деп атаған.

Аппараттық HPET құрылғысын қолдамайтын ескі операциялық жүйелер бағдарламаланатын интервалдық таймер (PIT) немесе нақты уақыт сағаты (RTC) сияқты ескі уақыттық мүмкіндіктерді ғана пайдалана алады. Соңғы аппараттық абстракция қабатын (HAL) орнатқан Windows XP жүйесі процессордың уақыт белгісін тіркеуін (TSC) немесе ACPI қуатты басқару таймерін (ACPI PMTIMER) RTC-мен бірге пайдаланып, кейінгі Windows нұсқаларында HPET аппараттық құралымен қамтамасыз етілетін операциялық жүйе мүмкіндіктерін ұсынуы мүмкін. Қызығы, мұндай Windows XP жүйелері құрылғы драйверлері басқарушысында Intel HPET құрылғысы қолданылмаса да, «HPET» қосылымы бар екенін көрсетеді.

Ерекшеліктері

HPET чипі 64 биттік жоғары санағыштан (негізгі санағыш) тұрады, ол кем дегенде 10 МГц жиілікте санайды, сондай-ақ (кем дегенде үш, 256 дейін) салыстырғыштар жиынтығынан тұрады. Бұл салыстырғыштар 32 немесе 64 биттік болады. HPET ACPI арқылы табылмайтын I/O терезесі арқылы бағдарламаланады. Қазіргі заманғы компьютерлердегі HPET тізбегі оңтүстік көпірге енгізілген. Әрбір салыстырғыш, ең кіші маңызды биттері 64 биттік негізгі санағыштың сәйкес биттерімен тең болғанда, үзіліс тудыра алады. Салыстырғыштарды бір реттік немесе периодтық режимге қоюға болады, соның ішінде кем дегенде бір салыстырғыш периодтық режимді, ал барлығы бір реттік режимді қолдайды. Бір реттік режимде салыстырғыш негізгі санағыш салыстырғыш тіркегінде сақталған мәнге жеткенде бір рет үзіліс жібереді, ал периодтық режимде үзілістер белгіленген интервалдармен жасалады. Салыстырғыштарды операциялық жүйе басқара алады, мысалы, жоспарлау үшін әрбір процессорға бір таймерді беру мақсатында, сондай-ақ қолданбалар арқылы да басқаруға болады.

Қолданбалар

HPET RTC-ге қарағанда әлдеқайда жоғары дәлдікпен периодтық үзілістерді тудыра алады және көбінесе мультимедиялық ағындарды синхрондау үшін, үздіріссіз ойнатуды қамтамасыз ету үшін және x86 негізіндегі процессордың RDTSC нұсқауы сияқты басқа уақыт белгілеу есептеулерін пайдалану қажеттілігін азайту үшін қолданылады. Бұл тиімділікті арттырады, себебі процессор таймерлердің төмен дәлдігін толықтыру үшін циклдарды ысырап етуге қажеті болмайды, сондай-ақ, күшті үнемдеу режимдерін қолдануға мүмкіндік береді, бұл қуат тұтынуды азайтады. Жоғары дәлдіктегі сағаттың қолданба деңгейіндегі қажеттілігінен өзге, операциялық жүйе деңгейінде жоспарлаушыда және көппроцессорлық жүйелер үшін тұрақты сағат базасының болуы арқасында да пайдалары бар.

Алдыңғы модельдермен салыстыру

HPET 8254 бағдарламаланатын интервалдық таймерді және RTC-нің периодтық үзіліс функциясын толықтыру және алмастыру үшін жасалған. Ескі таймерлік схемалармен салыстырғанда, HPET жоғары жиілікке және кең 64 биттік тілге ие (бірақ олар 32 биттік режимде де жұмыс істей алады). HPET спецификациясы таймер жиілігін анықтамайды, тек 10 МГц ең төменгі шекті талап етеді; нақты жиілік аппараттық тіркеу арқылы операциялық жүйеге беріледі, ол бір периодтағы фемтосекундтар санын көрсетеді (жоғарғы шегі 100 000 000). Көбінесе қолданылатын мән – 14,3 МГц, бұл стандартты 8254 жиілігінен (1,193 МГц) 12 есе жоғары. 8254 және RTC HPET сияқты бір реттік режимде жұмыс істей алғанымен, орнату процесінің баяу болуына байланысты, нақты уақытты жоспарлауды қажет ететін тапсырмалар үшін олардың бір реттік режимі іс жүзінде қолданылмайды. Оның орнына, 8254 және RTC әдетте өте қысқа уақыт аралығында периодтық режимде қолданылады. Мысалы, егер қосымшаға бірнеше қысқа (бірнеше миллисекунд, мүмкін) күтуді орындау қажет болса, 8254 немесе RTC бір реттік таймерін орнатудың жоғары құнына байланысты, 1 мс периодпен үнемі жұмыс істейтін периодтық таймерді пайдалану тиімді. Бұл тіпті қосымша жиі-жиі жұмыс істеуі қажет болмаған жағдайда да, әр миллисекунд сайын үзіліске себеп болады. HPET болса, қосымша үзілістерден аулақ болуға мүмкіндік береді, себебі HPET бір реттік таймерін орнату құны айтарлықтай төмен.

Қиындықтар

HPET – үнемі жұмыс істейтін, жоғарыға қарай санайтын таймер, бір реттік, нөлге дейін санайтын, бір үзіліс тудырып, содан кейін тоқтайтын құрылғы емес. HPET нақты таймер мәнін және бағдарламаланған мақсатты мәнді «үлкен немесе тең» емес, теңдік бойынша салыстыратындықтан, мақсатты уақыт, салыстырғыш мәні микросхема тізіміне жазылған кезде өткен болса, үзілістер жіберіліп қалуы мүмкін. Жоғарыда талқыланған жарыс жағдайынан басқа, VMware құжатында басқа кемшіліктер де тізімделген: «Техникалық талаптар таймердің әлдеқандай дәлдікке, аз қателікке немесе жылдам оқылуға ие болуын талап етпейді. Типик жүзеге асырулар есептегішті шамамен 18 МГц жиілікте іске қосады және HPET-ті оқу үшін ACPI таймеріндей шамамен бірдей уақыт (1-2 мкс) қажет. Кейбір жағдайларда кезеңдік тізілім 800 миллионнан астам бөлікке дейін қате болуы мүмкін».