Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Персональды компьютерлерде қолданылатын аппараттық таймер
Hardware timer used in personal computers
Жоғары дәлдікті оқиға таймері (HPET) – қазіргі заманғы x86 үйлесімді персональды компьютерлерде қол жетімді аппараттық таймер. x86 архитектурасындағы бұрынғы таймер түрлерімен салыстырғанда, HPET мультимедиа ойнату және операциялық жүйе тапсырмаларын ауыстыру сияқты уақытқа аса сезімтал қолданбаларды тиімді өңдеуге мүмкіндік береді. Ол Intel және Microsoft компаниялары бірлесіп әзірледі және 2005 жылдан бері компьютерлік чипсеттерге енгізілген. Бұрын Intel компаниясы бұл таймерді «Мультимедиялық таймер» деп атаған.
The High Precision Event Timer (HPET) is a hardware timer available in modern x86 compatible personal computers. Compared to older types of timers available in the x86 architecture, HPET allows more efficient processing of highly timing sensitive applications, such as multimedia playback and OS task switching. It was developed jointly by Intel and Microsoft and has been incorporated in PC chipsets since 2005. Formerly referred to by Intel as a Multimedia Timer,
Аппараттық HPET құрылғысын қолдамайтын ескі операциялық жүйелер бағдарламаланатын интервалдық таймер (PIT) немесе нақты уақыт сағаты (RTC) сияқты ескі уақыттық мүмкіндіктерді ғана пайдалана алады. Соңғы аппараттық абстракция қабатын (HAL) орнатқан Windows XP жүйесі процессордың уақыт белгісін тіркеуін (TSC) немесе ACPI қуатты басқару таймерін (ACPI PMTIMER) RTC-мен бірге пайдаланып, кейінгі Windows нұсқаларында HPET аппараттық құралымен қамтамасыз етілетін операциялық жүйе мүмкіндіктерін ұсынуы мүмкін. Қызығы, мұндай Windows XP жүйелері құрылғы драйверлері басқарушысында Intel HPET құрылғысы қолданылмаса да, «HPET» қосылымы бар екенін көрсетеді.
Older operating systems that do not support a hardware HPET device can only use older timing facilities, such as the programmable interval timer (PIT) or the real time clock (RTC). Windows XP, when fitted with the latest hardware abstraction layer (HAL), can also use the processor's Time Stamp Counter (TSC), or ACPI Power Management Timer (ACPI PMTIMER), together with the RTC to provide operating system features that would, in later Windows versions, be provided by the HPET hardware. Confusingly, such Windows XP systems quote "HPET" connectivity in the device driver manager even though the Intel HPET device is not being used.
Ерекшеліктері
HPET чипі 64 биттік жоғары санағыштан (негізгі санағыш) тұрады, ол кем дегенде 10 МГц жиілікте санайды, сондай-ақ (кем дегенде үш, 256 дейін) салыстырғыштар жиынтығынан тұрады. Бұл салыстырғыштар 32 немесе 64 биттік болады. HPET ACPI арқылы табылмайтын I/O терезесі арқылы бағдарламаланады. Қазіргі заманғы компьютерлердегі HPET тізбегі оңтүстік көпірге енгізілген. Әрбір салыстырғыш, ең кіші маңызды биттері 64 биттік негізгі санағыштың сәйкес биттерімен тең болғанда, үзіліс тудыра алады. Салыстырғыштарды бір реттік немесе периодтық режимге қоюға болады, соның ішінде кем дегенде бір салыстырғыш периодтық режимді, ал барлығы бір реттік режимді қолдайды. Бір реттік режимде салыстырғыш негізгі санағыш салыстырғыш тіркегінде сақталған мәнге жеткенде бір рет үзіліс жібереді, ал периодтық режимде үзілістер белгіленген интервалдармен жасалады. Салыстырғыштарды операциялық жүйе басқара алады, мысалы, жоспарлау үшін әрбір процессорға бір таймерді беру мақсатында, сондай-ақ қолданбалар арқылы да басқаруға болады.
An HPET chip consists of a 64 bit up counter (main counter) counting at a frequency of at least 10 MHz, and a set of (at least three, up to 256) comparators. These comparators are 32 or 64 bit wide. The HPET is programmed via a memory mapped I/O window that is discoverable via ACPI. The HPET circuit in modern PCs is integrated into the southbridge chip. Each comparator can generate an interrupt when the least significant bits are equal to the corresponding bits of the 64 bit main counter value. The comparators can be put into one shot mode or periodic mode, with at least one comparator supporting periodic mode and all of them supporting one shot mode. In one shot mode the comparator fires an interrupt once when the main counter reaches the value stored in the comparator's register, while in the periodic mode the interrupts are generated at specified intervals. Comparators can be driven by the operating system, e. g. to provide one timer per CPU for scheduling, or by applications.
Қолданбалар
HPET RTC-ге қарағанда әлдеқайда жоғары дәлдікпен периодтық үзілістерді тудыра алады және көбінесе мультимедиялық ағындарды синхрондау үшін, үздіріссіз ойнатуды қамтамасыз ету үшін және x86 негізіндегі процессордың RDTSC нұсқауы сияқты басқа уақыт белгілеу есептеулерін пайдалану қажеттілігін азайту үшін қолданылады. Бұл тиімділікті арттырады, себебі процессор таймерлердің төмен дәлдігін толықтыру үшін циклдарды ысырап етуге қажеті болмайды, сондай-ақ, күшті үнемдеу режимдерін қолдануға мүмкіндік береді, бұл қуат тұтынуды азайтады. Жоғары дәлдіктегі сағаттың қолданба деңгейіндегі қажеттілігінен өзге, операциялық жүйе деңгейінде жоспарлаушыда және көппроцессорлық жүйелер үшін тұрақты сағат базасының болуы арқасында да пайдалары бар.
The HPET can produce periodic interrupts at a much higher resolution than the RTC and is often used to synchronize multimedia streams, providing smooth playback and reducing the need to use other timestamp calculations such as an x86 based CPU's RDTSC instruction. This provides improved efficiency, since the CPU does not need to waste cycles to make up for the low resolution of timers, and enables more aggressive use of sleep states, reducing power consumption. In addition to the application level demand for high precision clock, there are OS level benefits in the scheduler and through the availability of a stable clock base for multi processor systems.
Алдыңғы модельдермен салыстыру
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 is meant to supplement and replace the 8254 programmable interval timer and the RTC's periodic interrupt function. Compared to these older timer circuits, the HPET has higher frequency and wider 64 bit counters (although they can be driven in 32 bit mode). The HPET specification does not define the timer frequency, only requiring a minimum of 10 MHz; the actual frequency is provided to the operating system by a hardware register giving the number of femtoseconds per period (with an upper bound of 100000000). A popular value is 14.3 MHz, 12 times the standard 8254 frequency of 1.193 MHz. While 8254 and RTC can be put into an HPET like one shot mode, the set up process is so slow that their one shot mode is not used in practice for tasks requiring precise scheduling. Instead, 8254 and RTC are typically used in periodic mode with a very small time interval. For example, if an application needs to perform several short (some milliseconds, perhaps) waits, it is better to have a periodic timer running constantly with a 1 ms period because of the high setup cost of an 8254 or RTC one shot timer. This causes an interrupt at every millisecond even if the application needs to do actual work less frequently. With HPET, the extra interrupts can be avoided, because the set up cost of a HPET one shot timer is considerably smaller.
Қиындықтар
HPET – үнемі жұмыс істейтін, жоғарыға қарай санайтын таймер, бір реттік, нөлге дейін санайтын, бір үзіліс тудырып, содан кейін тоқтайтын құрылғы емес. HPET нақты таймер мәнін және бағдарламаланған мақсатты мәнді «үлкен немесе тең» емес, теңдік бойынша салыстыратындықтан, мақсатты уақыт, салыстырғыш мәні микросхема тізіміне жазылған кезде өткен болса, үзілістер жіберіліп қалуы мүмкін. Жоғарыда талқыланған жарыс жағдайынан басқа, VMware құжатында басқа кемшіліктер де тізімделген: «Техникалық талаптар таймердің әлдеқандай дәлдікке, аз қателікке немесе жылдам оқылуға ие болуын талап етпейді. Типик жүзеге асырулар есептегішті шамамен 18 МГц жиілікте іске қосады және HPET-ті оқу үшін ACPI таймеріндей шамамен бірдей уақыт (1-2 мкс) қажет. Кейбір жағдайларда кезеңдік тізілім 800 миллионнан астам бөлікке дейін қате болуы мүмкін».
HPET is a continuously running timer that counts upward, not a one shot device that counts down to zero, causes one interrupt and then stops. Since HPET compares the actual timer value and the programmed target value on equality rather than "greater or equal", interrupts can be missed if the target time has already passed when the comparator value is written into the chip's register. Besides mentioning the race condition discussed above, a VMware document also lists some other drawbacks: "The specification does not require the timer to be particularly fine grained, to have low drift, or to be fast to read. Some typical implementations run the counter at about 18 MHz and require about the same amount of time (1–2 μs) to read the HPET as with the ACPI timer. Implementations have been observed in which the period register is off by 800 parts per million or more."