Czy zegar czasu rzeczywistego (RTC) jest niezbędny w systemach czasu rzeczywistego? [Zamknięte]

11

Zakładając, że pracujemy nad systemem Linux w czasie rzeczywistym i sprzętem, który składa się z timerów o wysokiej rozdzielczości, czy posiadanie RTC wpływa na aktualność systemu w czasie rzeczywistym?

Tutaj napisano, że zmniejsza zużycie procesora i pamięci, ale czy istnieje sposób, aby jakoś porównać różnicę?

www
źródło
13
Porównanie w linku jest po prostu głupie.
rura
10
Tak, @pipe, a nawet więcej, nawet liczby są całkowicie błędne. Z przyjemnością kupię układ RTC w cenie DS12C887 z „1 sekundą błędu za 100 lat”. W rzeczywistości kupię tyle, ile pozwalają moje oszczędności. To dokładność 300ppb. Ponad 100 lat. To poważna dobroć częstotliwości.
Marcus Müller
8
Systemy czasu rzeczywistego i zegar czasu rzeczywistego to różne rzeczy i nie ma porównania. RTC służy do utrzymywania czasu, a system czasu rzeczywistego służy do obsługi czasu rzeczywistego (nie tak jak w UTC, ale jak w celu
szybkiego
3
@pipe DS12C887, wersja planu na 100 lat .
Marcus Müller
4
@JimmyB Zegary tego typu służą do pomiaru czasu , a nie czasu ! Nawet jeśli masz epokę referencyjną, zwykle ustawiamy ją na TAI (lub GPS) i stosujemy odpowiednią korektę UTC, gdy potrzebujemy UTC. W przypadku GPS ten parametr korekcji pochodzi z efemeryd. UTC jest w tym sensie swoistą „strefą czasową” - podobnie nie resetujesz zegara, gdy zacznie obowiązywać czas letni i nie czekasz, aż się ustabilizuje - nie ma nic do zresetowania, ponieważ zegar daje impulsy, a nie znacznik czasu.
Wyścigi lekkości na orbicie

Odpowiedzi:

40

Artykuł, który podłączyłeś, jest kompletny i kompletny nonsens. „Czas rzeczywisty” w „zegarze czasu rzeczywistego” (ponieważ jest używany w odniesieniu do rodzaju trudnego urządzenia opisanego w artykule) i „czas rzeczywisty” w „systemach czasu rzeczywistego” są zupełnie innymi terminami. Ten pierwszy oznacza przechowywanie bieżącego czasu kalendarzowego (zwykle jego bardzo słabe przybliżenie, w przeciwieństwie do wysokiej precyzji, jak twierdził artykuł powiązany) i przyspieszanie go bez zewnętrznego zasilania, przy użyciu baterii o długiej żywotności przycisku / monety. Ten ostatni oznacza reagowanie na zdarzenia z twardymi granicami opóźnienia od momentu zdarzenia do czasu odpowiedzi.

Kilka innych fragmentów tego artykułu, aby ustalić, że należy go uznać za niewiarygodnego:

Prawie nieistotne. Z rzędu 1 sekundy na 100 lat

1 sekunda na 100 lat to w przybliżeniu 317 ppt (tak, to części na bilion ). Tego rodzaju stabilności zegara nie można uzyskać za pomocą żadnej dostępnej na rynku technologii zegara. Nawet podniesienie go do 1 sekundy rocznie wymagałoby co najmniej OCXO, który wymaga wysokiej mocy, zawsze włączonego piekarnika regulującego temperaturę. Pomysł, który można uzyskać za pomocą urządzenia zasilanego baterią o długiej żywotności, jest śmieszny.

systemy czasu rzeczywistego, takie jak zegar cyfrowy, system obecności, aparat cyfrowy

Żaden z nich nie jest tak zwany systemem czasu rzeczywistego.

R .. GitHub ZATRZYMAJ LÓD
źródło
1
W rzeczywistości systemy te najprawdopodobniej mają komponenty czasu rzeczywistego, aczkolwiek „miękkie w czasie rzeczywistym”, ponieważ konsekwencje braku / przekroczenia tiku przetwarzania są niewielkie. Jednak nie w błędnym sensie, o którym pomyślał autor linku.
Graham
3
@Graham: W pewnym sensie tak, ale marginesy są tak ogromne, że generalnie myślisz o nich jako o czasie rzeczywistym. Ostatecznie każdy system interaktywny działa w czasie rzeczywistym, jeśli wystarczająco rozszerzysz definicję, ponieważ gdy nie będzie reagować przez kilka minut lub godzin, ktoś przypuszcza, że ​​się zawiesił. :-) Myślę więc, że przydaje się kategoryzowanie czegoś jako „w czasie rzeczywistym”, gdy istnieją małe marginesy i poważne konsekwencje ich pominięcia.
R .. GitHub ZATRZYMAJ LÓD
3
@R .. Nie wszystkie systemy działają w czasie rzeczywistym, nawet z ogromnymi marginesami. Jeśli system może zawiesić się w nieskończoność, nie może być systemem czasu rzeczywistego. Systemy muszą mieć absolutną gwarancję, że szczelina czasowa zajmie tylko skończony okres czasu, a zawieszenie (zakleszczenie / blokada aktywacji) jest z definicji nieskończone.
las
2
Meta-dyskusja na temat tego, czym dokładnie jest system czasu rzeczywistego, nie należy jednak do sekcji komentarzy.
rura
1
@Uwe: Owszem, popsułem to, ale teraz, kiedy patrzę na to ponownie, myślę, że jestem wyłączony przez 2 czynniki 10 - czy nie powinno to być 0,316 ppb? Liczby jako 1s / (100 * secs_per_year) gdzie secs_per_year = 31556952.
R .. GitHub ZATRZYMAJ LÓD
39

Systemy czasu rzeczywistego reagują na zdarzenie / bodźce wewnętrzne lub zewnętrzne w określonym czasie i zwykle w milisekundach lub mikrosekundach. Potrzebuje timera o małej precyzji, a nie RTC.

Odpowiedź na twoje pytanie brzmi: nie, nie wpłynie to na rzeczywistą aktualność systemu.

MaNyYaCk
źródło
1
Jest to krótka i konkretna odpowiedź na pytanie IMO.
Rev1.0
Niektóre podmioty federalne, takie jak banki, używają 1ns RTC na swoich serwerach w oparciu o zegary atomowe. Nawet cień manipulacji przy ich łączach mikrofalowych zmieni czas transportu do odbiornika. Szybka RTC jest również dobra w przypadku semaforów wielofazowych.
Sparky256,
4
Niektóre systemy czasu rzeczywistego nie potrzebują timera, ponieważ są w całości sterowane zdarzeniami i żadne z tych zdarzeń nie musi być oparte na czasie. System musi tylko reagować na każde zdarzenie w przedziale czasowym wyznaczonym dla tego zdarzenia, w tym gdy wiele zdarzeń występuje bardzo blisko siebie. W niektórych przypadkach może być potrzebne jądro zapobiegawcze. Do sprawdzania poprawności działania systemu w ograniczeniach czasowych można wykorzystać zewnętrzne liczniki czasu.
rcgldr
2
Jeśli chcesz prawdziwy przykład, system operacyjny MicroWare OS-9 dla procesorów Motorola 6809 / Hitachi 6309 to system operacyjny czasu rzeczywistego. Seria Tandy Color Computer wykorzystywała 6809s i działała na OS-9 (moja pierwsza ekspozycja na system operacyjny podobny do * nix), a zegary czasu rzeczywistego nigdy nie były standardowym sprzętem w tym systemie i nie były wymagane do funkcjonowania OS-9.
zmerch
3

Jeśli po zresetowaniu system jest w trybie offline i ma RTC, będzie mógł wprowadzić odpowiednie daty do dzienników. Dzienniki mogą być ogromne na wypadek, gdybyś musiał je przejrzeć, a niewłaściwy znacznik czasu doprowadzi Ciebie, twórców oprogramowania i klientów do szaleństwa, a generalnie dochodzenie będzie prawie niemożliwe.

Łatwy lub trudny, niski lub wysoki w artykule, do którego się odwołujesz, jest rodzajem osobistej opinii. Jest to trudne i kosztowne, jeśli nigdy wcześniej tego nie robiłeś i nie masz jasnych wymagań systemowych i oświadczenia o pracy; i jest to łatwe i tanie, gdy wiesz, czego potrzebujesz i jakie urządzenie jest najlepsze do użycia.

Anonimowy
źródło
Pytanie brzmi, jak obliczyć skrócenie czasu pracy procesora i zużycia pamięci przez RTC w porównaniu z brakiem RTC w systemie czasu rzeczywistego. Twoja odpowiedź na to nie odpowiada.
rura
1
@pipe Zależy to od architektury procesora i wymagań. Po prostu nie jest możliwe udzielenie odpowiedzi z podaniem rzadkich informacji. Moja odpowiedź mówi, dlaczego RTC musi tam być, zamiast ogólnej bla-bla, o tym, jak może być bez niego. Programista i architekt systemu mogą zaprojektować dobry system i kod oraz zły system i kod pod względem czasu spędzonego na taktowaniu.
Anonimowy
3

W większości systemów jedyną prawdziwą przewagą urządzeń peryferyjnych RTC w porównaniu z innymi formami pomiaru czasu jest to, że pomiary czasu RTC nie ulegną zmianie, gdy reszta systemu przejdzie w stan uśpienia lub - w niektórych przypadkach - zostanie całkowicie wyłączona. Wiele urządzeń peryferyjnych RTC jest faktycznie zaprojektowanych w taki sposób, że uczynią je niepraktycznymi do większości celów innych niż rejestrowanie przybliżonej pory dnia. Na przykład wiele urządzeń peryferyjnych RTC (prawdopodobnie większość, ale być może nie nadrzędność) ogranicza się do zgłaszania czasu w przyrostach jednosekundowych, a wiele z nich co najmniej czasami wymaga zajętego oczekiwania na synchronizację podczas ustawiania alarmu lub - w niektóre przypadki - nawet po prostu próbując odczytać czas. W związku z tym normalnym sposobem korzystania z RTC jest po prostu skopiowanie jego wartości do bardziej użytecznego zegara przy uruchamianiu, ustaw go za każdym razem, gdy zostanie ustawiony „czas ściany”

a każde cztery kolejne odczyty z pewnością będą zawierać dwa pasujące (a zatem poprawne), chyba że upłynie więcej niż 1/32768 sekundy między pierwszym a ostatnim. Ustawienie alarmu może generować fałszywe zdarzenia budzenia, ale sekwencja:

  • wyłącz przerwanie od zatrzasku budzenia
  • ustaw czas budzenia na maksymalnie 0x7FFFFFFF tyknięć (około 9 godzin) przed czasem
  • zresetować obwód budzenia
  • czytać zegar
  • jeśli nowo odczytany czas wskazuje, że czas budzenia został osiągnięty, działaj odpowiednio
  • włączyć przerwanie od zatrzasku budzenia

powinien obsługiwać wszystkie przypadki brzegowe wystarczająco łatwo, aby nadawały się do ogólnego zastosowania w celu zachowania czasu. Niestety, z jakiegokolwiek powodu, urządzenia peryferyjne RTC nigdy nie są zaprojektowane w ten sposób, ale są bardziej skomplikowane i mniej przydatne.

supercat
źródło
„Prawdziwe” RTC zapewniają również funkcjonalność kalendarza (dzień miesiąca, dzień tygodnia, lata przestępne, ...), co może być kłopotliwe w implementacji oprogramowania.
JimmyB
1
@JimmyB: Oprogramowanie, które musi robić cokolwiek nietrywialnego z datami i godzinami, na ogół i tak zawiera taką logikę, a możliwość utrzymywania rzeczy w formacie liniowym, z wyjątkiem sytuacji, gdy wykonywanie operacji we / wy przez użytkownika byłoby znacznie prostsze niż konieczność konwersji z bezużytecznego BCD YMDhms do czasu liniowego za każdym razem, gdy odczytuje RTC i wraca do bezużytecznego fromat podczas pisania.
supercat
1
@ JimmyB: Jako prosty przykład, jeśli ktoś miałby zasilić system o czymś, co wyglądało na 01.03.2016 00:30, a ostatnio został włączony o 01.10.2015 o 00:30:00, co czy byłby to czas? Oprogramowanie będzie musiało wiedzieć, że luty miał 29 dni w 2016 roku, aby ustalić, że był to czas 29.02.2015 23:30:00, więc co dokładnie kupuje sprzęt kalendarza?
supercat
Układ RTC, o którym mowa w OP, samodzielnie obsługuje lata przestępne.
JimmyB
1
@ JimmyB: Jeśli system zostanie włączony po raz pierwszy po przejściu poza czas letni, oprogramowanie będzie musiało być w stanie cofnąć godzinę o godzinę. Jeśli tak się stanie między północą a 1:00 rano, będzie to z kolei wymagać cofnięcia kalendarza o jeden dzień, co z kolei wymagać będzie zrozumienia kalendarzy. Rzeczywiście, chyba że użytkownik wymaga ręcznego ustawienia dnia tygodnia i daty, najłatwiejszym sposobem zastosowania czasu letniego jest praca z datami liniowymi.
supercat
3

Wydaje się, że jest to kwestia terminologii związanej z użyciem terminu „w czasie rzeczywistym”.

Zegar czasu rzeczywistego

Zegar czasu rzeczywistego jest urządzeniem do stabilnego / dokładnego (w pewnym zakresie tolerancji) pomiaru czasu, dzięki czemu system hosta może go użyć do powiązania zdarzeń / działań z czasem i datą wystąpienia.

Można uznać zegar czasu rzeczywistego za analogiczny do wewnętrznych elementów zegarka cyfrowego podłączonego do komputera. Ma niezależnie zasilany czas odniesienia, zaprojektowany tak, aby był stabilny i dość dokładny. Podobnie jak zegarek cyfrowy, nie straci aktualnego czasu tylko dlatego, że komputer-host został zamknięty. Zegary czasu rzeczywistego zostały zainstalowane na komputerach głównie dla wygody, aby użytkownik nie musiał ponownie wprowadzać bieżącej godziny i daty za każdym razem, gdy system jest uruchamiany, ani dokonywać częstych korekt w celu kompensacji znoszenia.

Alternatywą dla zegara czasu rzeczywistego byłoby użycie oprogramowania i wewnętrznych zegarów sterowanych przez zegar systemowy. Takie podejście jest wykonalne (oryginalny komputer IBM działał w ten sposób), ale nie jest szczególnie stabilne; utraci także datę / godzinę w dowolnym momencie, w którym system operacyjny jest zamykany, zawiesza się lub ulega awarii.

System czasu rzeczywistego

Kiedy termin „w czasie rzeczywistym” jest stosowany do systemu komputerowego lub aplikacji, opisuje system, który reaguje na zdarzenia w świecie rzeczywistym w bardzo krótkim, deterministycznym czasie - często zaledwie kilka milisekund, czasem mniej, przy określonym porządku równoczesnych danych wejściowych. Systemy czasu rzeczywistego są używane do sterowania maszynami - robotyki, symulacji i gier. Chociaż aplikacja czasu rzeczywistego może korzystać z bieżącej informacji o czasie i dacie, aplikacja nie jest „w czasie rzeczywistym” tylko dlatego, że korzysta z bieżącej godziny i daty.

Zegary czasu rzeczywistego a zegary wysokiej rozdzielczości

Jak stwierdzono powyżej, celem zegara czasu rzeczywistego jest niezawodne śledzenie bieżącej daty i godziny, zasadniczo tylko do drugiej; dobry będzie miał minimalny dryf (zyski lub straty sekund każdego dnia). Zegary czasu rzeczywistego zazwyczaj nie mają wysokiej rozdzielczości; ich zegary bazowe często działają dość wolno w porównaniu do współczesnych zegarów procesora; ma to na celu zminimalizowanie zużycia energii (zużycie niezależnego źródła zasilania), dzięki czemu zegar będzie nadal niezawodnie utrzymywał czas, jeśli komputer hosta zostanie wyłączony na dłuższy czas.

Timer o wysokiej rozdzielczości nie dotyczy bieżącej godziny ani daty; jego celem jest pomiar odstępów czasu z pewną precyzją, być może w mikrosekundach lub nawet mniej. Aby to osiągnąć, musi być oparty na stabilnym zegarze o wysokiej częstotliwości - zwykle zegarze systemowym komputera. Timery o wysokiej rozdzielczości również zwykle nie są związane z dryfowaniem w długich okresach, ponieważ zwykle celem jest pomiar czasu w krótkich okresach. Zegary wysokiej rozdzielczości nie mają takiego samego problemu z zużyciem energii jak zegary czasu rzeczywistego, ponieważ nie mają zadania do wykonania, gdy komputer hosta jest wyłączony.

Anthony X
źródło
1
Jako drobiazg, „najkrótszy [...] możliwy” nie jest uważany za czas rzeczywisty. Czas rzeczywisty jest odpowiedzią w czasie deterministycznym lub ze zdefiniowanym porządkiem, jeśli jednocześnie występuje wiele zdarzeń.
awjlogan
0

Myślę, że głównym powodem zegara czasu rzeczywistego jest dokładny czas z pewnym odstępem czasu. Zwykły zegar jest zwykle przycinany kondensatorami i może wykazywać większe rozbieżności w zakresie częstotliwości w oparciu o wiele różnych czynników, być może poza kontrolą, takich jak źle dostrojona pojemność / rezystancja obwodu taktowania zegara, niepewność taktowania używanego zegara, która służy pojedynczemu celowi związanemu z wydajnością, a także często istnieje programowalna logika dzieląca czasy, które ponownie mogą wprowadzić błąd.

Zwykle RTC może mieć liczniki czasu i psy nadzorujące itp. W połączeniu z tym dajemy zagwarantowane lub dobre założenie, że w regularnych precyzyjnych odstępach czasu, które mogą nawet pozostawać w fazie z różnymi rzeczami, podane procedury lub kod zostaną wykonane. Nie można tego łatwo uzyskać za pomocą zwykłego zegara. Lub musisz być bardzo ostrożny przy produkcji, że zegar jest dokładny. Możesz zobaczyć rzeczy takie jak audio i co może nie wymagać użycia rtc zamiast zegara systemowego o wysokiej prędkości.

Co do tego, co oznacza RTC, nie mogę powiedzieć na pewno siebie. Wiem, że Linux jest powszechnym narzędziem w świecie osadzonym, ale nie jestem pewien, jak dobrze działa we wszystkich aplikacjach czasu rzeczywistego. Wielowątkowość może sprawić, że czasy wykonywania nie będą deterministyczne, jednak gdy sprzęt znacznie przekroczy wymagania dotyczące wydajności, wiele rozwiązań będzie działać dobrze nawet w aplikacjach czasu rzeczywistego.

Są też aplikacje o krytycznym znaczeniu i niskiej wydajności. Jedną z pożądanych rzeczy jest deterministyczne i często mniej skomplikowane rozwiązanie. Tutaj RTC można oczywiście wykorzystać. Linux może zapewniać specjalny dostęp do powiązanych z nim przerwań. Wydaje mi się, że dla deterministycznego czasu rzeczywistego potrzebujesz nie tylko rtc, ale także przerywa lub dostępu do nich.

rzemiosło marszałkowskie
źródło
1
Jak dokładnie połączenie RTC z organem nadzoru może zagwarantować, że zegar pozostanie „w fazie z różnymi rzeczami”?
Dmitrij Grigoriew
Ok, jeśli używasz zewnętrznego źródła zegara, jesteś zależny od tego źródła, a także od obwodów łączących go, takich jak pojemność i rezystancja lub impedancja. Jest to opisane przez oscylację harmoniczną, której rozwiązaniem jest fala, a następnie zobacz kąt fazowy itp., A także zastosowanie mikroprocesora, aby odpowiedzieć na wszystko, co właśnie zadałeś. Wszystkie te rzeczy niestety muszą zostać uwzględnione w wielu aplikacjach.
marszałkowski
0

Będziesz potrzebował zegara czasu rzeczywistego, jeśli polegasz na bezpiecznej komunikacji z innymi komputerami w Internecie (nie musi to być 100%, ale jeśli nie masz lokalnego czasu odniesienia, musisz zaufać czemuś innemu i możesz „ t zaufanych certyfikatów, chyba że znasz datę).

Więc nie, nie potrzebujesz go do wszystkich systemów „w czasie rzeczywistym”. Jednak w zależności od aplikacji nadal możesz chcieć, aby RTC był najbardziej energooszczędnym sposobem uzyskania dobrego czasu po przejściu w stan niskiego poboru mocy.

Sean Houlihane
źródło
To nie do końca prawda. Możesz na przykład zaufać certyfikatowi (zwłaszcza przypiętemu), nawet jeśli wygasł lub teoretycznie został wydany w, jak się wydaje, przyszłości. Jednak ogólnie lepiej jest uzyskać poprawkę NTP przed próbą bycia klientem SSL; Oczywiście systemy bezpieczeństwa dla NTP muszą być zaprojektowane tak, aby działały bez potrzeby rozpoczynania od rozsądnego wyobrażenia o czasie.
Chris Stratton
4
Rażąco przesadzone i chociaż przesada jest ciepłą i piękną rzeczą, jeśli stanowi ona główne przesłanie, jest błędna. Brak trybów działania szyfrów zasadniczo wymaga godziny lub daty.
Paul Uszak