# Programmable Interval Timer

Der Programmable Interval Timer (PIT) war ursprünglich ein spezieller Baustein (Chip) im IBM-PC, der für die zeitliche Steuerung von Prozessen sorgte. Die am häufigsten verwendeten Timer-Chips waren die Typen 8253 und 8254 von Intel mit drei 16-Bit breiten Zählern.
Der PIT wird, unabhängig von der Rechnergeschwindigkeit, stets im Takt von (idealerweise) 1,19318181818… MHz betrieben; das ist 1/3 der Farbträger-Frequenz des NTSC-Fernsehsystems. In den ersten PCs von IBM wurde diese merkwürdig anmutende Frequenz gewählt, da für die Einbindung einer CGA-Grafikkarte, die auch Fernsehgeräte als Monitor verwenden konnte, ohnehin ein Quarz mit einem Vielfachen des Farbträgers vorhanden sein musste. Aus diesem Quarz konnte die PIT-Frequenz dann leicht mittels Frequenzteilung gewonnen werden; diese Vorgehensweise war günstiger als der Einsatz weiterer Quarze, da mit nur einem Quarz in der Schaltung keine störenden Schwebungen das Bildsignal beeinträchtigen können, die dann mit weiterem Schaltungsaufwand herausgefiltert werden müssten. Auch der CPU-Takt der ersten PCs von 4,772727 MHz ergab sich aus einer solchen Erwägung, er betrug 4/3 der Farbträgerfrequenz.
In späteren, schnelleren PCs ohne Fernseher-Anschluss bekam der PIT dann aus Kompatibilitätsgründen einen eigenen Quarz, der weiterhin mit der alten Geschwindigkeit lief. Heute wird meist wieder ein gemeinsamer Quarz verwendet, da verbesserte Frequenzwandler heute relativ problemlos fast jede gewünschte Frequenz aus einer einzigen Bezugsfrequenz gewinnen können.
In heutigen PCs ist die PIT-Funktionalität im Chipsatz des Mainboards untergebracht, er wird über den LPC-Bus an die CPU angebunden.
Der PIT wurde im Ur-PC für
* Periodische Unterbrechungen auf IRQ 0 (PIT-Timer 0),
* DRAM-Speicher-Refresh (PIT-Timer 1),
* Tonerzeugung durch den PC Speaker (PIT-Timer 2)
* und als Fail-Safe-Timer (NMI)
genutzt. In heutigen PCs leistet der PIT nur noch die Speaker-Ansteuerung und (je nach Betriebssystemversion und Alter des Rechners) die periodischen Unterbrechungen.
Für diese Funktionen existieren die Ports 40$_{Hex}$ bis 43$_{Hex}$ (bzw. 64 bis 67 dezimal), über die der PIT programmiert werden kann. Er kann in verschiedenen Betriebsarten arbeiten. Dabei kann grob zwischen sich immer wiederholenden und einmaligen Abläufen unterschieden werden. Einmalige Abläufe werden in der Praxis jedoch nur sehr selten verwendet und sind nur der Vollständigkeit halber aufgeführt.
Im Standard-Modus zählt der Timer vom Startwert (maximal 65535) auf 0 hinunter und fängt beim folgenden Überlauf wieder von vorne an. Bei jedem solchen Überlauf sendet er ein Signal, den Timer-Interrupt (IRQ0), an den Prozessor. Wenn man die Taktfrequenz durch die Takte bis zum erneuten Überlauf dividiert, erhält man die Frequenz, mit der der IRQ0 erzeugt wird. Unter MS-DOS und älteren Windows-Versionen bis einschließlich Windows 98 und Windows ME wurde der Maximalwert 65535 in den Timer geladen, man erhält somit 1193181,8181… Hz / 65536 = ca. 18,2065 Hz. Es kommt auf diese Art ein Intervall von ca. 55 ms zwischen den Aufrufen des IRQ 0 zustande. Modernere Betriebssysteme (Linux, Windows NT und Abkömmlinge) verwenden kürzere Intervalle zwischen 1 und 10 ms.
Allgemein gibt es in einem heutigen (Jahr 2009) Standard-PC folgende Bausteine für die zeitliche Steuerung von Prozessen:
* Programmable Interval Timer (PIT)
* Real Time Clock (RTC)
* Power Management Timer (PMTMR)
* Time Stamp Counter (TSC)
* APIC Timer (LAPIC)
* High Precision Event Timer (HPET)