Zastanawiam się nad tym: w jaki sposób komputer reguluje czas i informuje go? Na przykład: gdybym napisał program, który to zrobił:
Wykonaj 2 + 2, a następnie poczekaj 5 sekund
Skąd procesor wie, co to jest „5 sekund”? Jak mierzy się czas w systemach komputerowych? Czy jest jakiś specjalny układ do tego wyłącznego celu? Jak to działa?
Dziękuję za wszelkie odpowiedzi; Naprawdę interesuję się informatyką i bardzo chciałbym, abyś mógł mi pomóc = D.
Odpowiedzi:
Chociaż odpowiedź Joela jest poprawna, w rzeczywistości jest nieco bardziej skomplikowana.
Pierwszą rzeczą, którą należy wziąć pod uwagę (i tutaj skupię się tylko na komputerach PC), jest to, że w komputerze jest kilka zegarów i każdy ma swoje zastosowanie.
Najpopularniejszym i najłatwiejszym do zrozumienia jest zegar czasu rzeczywistego . Zasadniczo jest to układ z prostym zegarem w środku. Zazwyczaj mają ten sam typ kryształów kwarcu, co standardowe zegary, i zwykle mają baterię do utrzymywania czasu, gdy komputer jest wyłączony. Problem z nimi polega na tym, że nie są one zbyt dokładne, jak widać z linków Syntecha. Kryształ 32,768 kHz jest zbyt wolny dla jakiegokolwiek pomiaru czasu w nowoczesnych systemach, których procesory są w zakresie megaherców i gigaherców.
Przechodzimy do następnego punktu: istnieją wewnętrzne zegary używane do precyzyjnych pomiarów czasu i odliczania.
Prosty zegar jest programowalnym interwalometrem . Wystarczy poczekać określony czas, a następnie wysłać przerwanie do procesora. Gdy CPU odbierze przerwanie, przerwie to, co robi, i wykona zadanie, które wygenerowało przerwanie. W ten sposób procesor nie musi stale sprawdzać, czy coś zostało zrobione. Zamiast tego może skupić się na innych zadaniach i PIT poinformuje go o zakończeniu zadania. PIT wykorzystuje źródło zegara 1,193182 MHz i dlatego jest znacznie bardziej precyzyjny niż zwykły RTC.
Kolejnym interesującym systemem pomiarowym jest licznik znaczników czasu . Chodzi o to, że możemy uzyskać znacznie dokładniejsze pomiary czasu przy użyciu źródła zegara procesora niż przy użyciu różnych timerów systemowych. PIT ma zegar 1.193182 MHz, ale nawet najwcześniejsze procesory x86 miały znacznie wyższy zegar. Będziemy więc mieli zegar, który jest aktualizowany po każdej określonej liczbie cykli procesora. W tym czasie procesory miały bardzo stabilne zegary, a użycie TSC było dobrym sposobem na precyzyjne pomiary czasu. Zastosowanie TSC powoduje jednak szereg problemów. Różne procesory mają różne częstości tykania i mierzą czas przy różnych prędkościach. Później, w miarę postępu technologicznego, otrzymaliśmy nowoczesne procesory, które mogą zmieniać ich częstotliwość. To poważny problem, ponieważ zegar procesora nie jest już stały i nie możemy go używać do mierzenia czasu.
Właśnie dlatego mamy teraz precyzyjne liczniki zdarzeń . HPET wykorzystuje zegar 10 MHz i dlatego jest bardziej precyzyjny niż PIT. Z drugiej strony, jego źródło zegara nie zależy od zegara procesora i może być użyte do pomiaru czasu, nawet jeśli zegar procesora się zmieni. W przeciwieństwie do PIT, który działa jako odliczanie, HPET mierzy czas od momentu włączenia komputera i porównuje bieżący czas, kiedy potrzebne jest działanie.
Istnieją inne źródła czasu dla komputerów, które moim zdaniem należy wymienić. Niektóre komputery są podłączone do zegarów atomowych i mogą ich używać do precyzyjnego pomiaru czasu.
Tańszą opcją i znacznie bardziej powszechną jest użycie zewnętrznego źródła czasu do kalibracji wewnętrznych źródeł czasu komputera. Na przykład odbiorniki GPS mogą służyć do wykonywania bardzo precyzyjnych pomiarów czasu, ponieważ satelity GPS mają swoje wewnętrzne zegary atomowe.
Inną opcją, która jest mniej powszechna niż odbiornik GPS, jest użycie specjalnego odbiornika radiowego, który dekoduje informacje o czasie z stacji radiowych utrzymujących czas, takich jak na przykład DCF77. Takie stacje czasowe mają własne źródła czasu o wysokiej precyzji i transmitują swoją moc wyjściową drogą radiową. Ponieważ fale radiowe przemieszczają się z prędkością światła, opóźnienie jest często nieznaczne.
źródło
IIRC, jest mały kryształ, który wibruje z określoną częstotliwością, gdy przepływa przez niego prąd elektryczny. Każdy ruch jest liczony, a określona liczba z nich uruchamia cykl zegara.
źródło
HPET używa co najmniej 10 MHz zegara. Może być dokładniejszy niż 10 MHz, ale nigdy mniej.
http://en.wikipedia.org/wiki/High_Precision_Event_Timer#Comparison_to_predecessors
źródło