Чи потрібен годинник в реальному часі для систем реального часу? [зачинено]


11

Якщо припустити, що ми працюємо над системою та апаратним забезпеченням Linux, що складається з таймерів високої роздільної здатності, чи впливає RTC на реальну своєчасність системи?

Тут сказано, що це зменшує споживання процесора та пам'яті, але чи є спосіб якось порівняти різницю?


13
Порівняння у посиланні просто нерозумно.
труба

10
Так, @pipe і натомість, навіть цифри абсолютно неправильні. Я із задоволенням придбаю RTC-чіп DS12C887 з "1 секундою помилки за 100 років". Насправді я куплю стільки, скільки дозволять мені заощадити. Це точність 300ppb. Понад 100 років. Це якась серйозна доброта частоти саме там.
Маркус Мюллер

8
Системи реального часу та годинник у режимі реального часу - це різні речі, і порівняння не існує. RTC призначений для зберігання часу, і система реального часу використовується для обслуговування в режимі реального часу (не як у UTC, а як у швидкість)
MaNyYaCk


4
@JimmyB Годинники на кшталт цього - це час , а не час ! Навіть якщо у вас є еталонна епоха, ми зазвичай встановлюємо її на TAI (або GPS) і застосовуємо відповідну корекцію UTC, коли нам потрібен UTC. У випадку GPS цей параметр корекції походить від ефемерів. UTC - це своєрідний "часовий пояс" у цьому сенсі - аналогічно, ви не скидаєте годинник, коли DST набуде чинності, і чекаєте його відновлення стабілізувати - нічого не потрібно скидати, оскільки годинник дає імпульси, а не часові позначки.
Гонки легкості по орбіті

Відповіді:


40

Стаття, яку ви пов’язали, - просто повна і цілком нісенітниця. "Реальний час" у "годиннику реального часу" (як це використовується для позначення типу жорсткого пристрою, описаного в статті) та "реальний час" у "системах реального часу" - це абсолютно різні терміни. Перший означає зберігання поточного календарного часу (зазвичай це дуже погане його наближення, на відміну від високої точності, як заявлено у прив’язаній статті) та просування по ньому без зовнішнього живлення, використовуючи батарею кнопки / монети довгого життя. Останнє означає реагувати на події з жорсткими обмеженнями затримки від часу події до часу відповіді.

Кілька інших бітів статті, щоб встановити, що її слід вважати недостовірною:

Майже незначно. Порядком 1 сек за 100 років

1 сек за 100 років становить приблизно 317 пп (так, це частки на трильйон ). Ви не можете отримати таку стабільність годинника за допомогою будь-якої наявної у продажу технологій годинника. Навіть для отримання його до 1 секунди на рік знадобиться принаймні OCXO, який вимагає високої потужності, постійно ввімкненої духовки, що регулює температуру. Ідея, яку ви могли б отримати за допомогою пристрою, що живиться від довговічного монетного акумулятора, смішна.

системи реального часу, такі як цифровий годинник, система відвідування, цифрова камера

Жоден із них не називає системи реального часу.


1
Насправді ці системи, швидше за все, мають компоненти в режимі реального часу, хоча і "м'які в режимі реального часу", оскільки наслідки відсутності / перевитрати кліща для обробки невеликі. Але не в оманливому розумінні, як думав автор посилання.
Грем

3
@ Грахам: У певному сенсі вони є, але маржа настільки величезна, що ти загалом вважаєш їх нереальним часом. Зрештою, будь-яка інтерактивна система в режимі реального часу, якщо ви розширите визначення досить далеко, тому що, коли він не реагує на хвилини та години, хтось припускає, що він розбився. :-) Тому я вважаю, що категоризувати щось як "реальний час" корисно лише тоді, коли є невеликі запаси та серйозні наслідки для їх відсутності.
R .. GitHub СТОП ДОПОМОГАЙТЕ

3
@R .. Не всі системи в режимі реального часу, навіть з величезними запасами. Якщо система здатна висіти нескінченно довго, вона не може бути системою в режимі реального часу. Системи повинні мати абсолютні гарантії того, що часовий інтервал займе лише обмежений проміжок часу, а зависання (тупик / лайфлок) за визначенням нескінченне.
ліс

2
Мета-дискусія про те, що саме є системою в реальному часі, не належить до розділу коментарів.
труба

1
@Uwe: Дійсно, я це переплутав, але тепер, коли я знову дивлюся на це, я думаю, що я відключений двома факторами 10 - чи не має бути 0,316ppb? Визначається як 1s / (100 * secs_per_year), де secs_per_year = 31556952.
R .. GitHub СТОП ДОПОМОГА ВІД

39

Системи реального часу - це те, що реагує на внутрішню чи зовнішню подію / подразники у визначений час, і цей час, як правило, становить мілі або мікро секунди. Він потребує таймера малої точності, а не RTC.

І відповідь на ваше запитання - Ні, це не вплине на реальну вчасність системи.


1
Це стисла відповідь на питання ІМО.
Rev1.0

Деякі федеральні структури, як, наприклад, банки, використовують 1нс РТК на своїх серверах на основі атомних годин. Навіть натяк на підробку їхніх мікрохвильових ліній змінить час проходження до приймача. Швидкий RTC також хороший для багатофазних семафорів.
Sparky256

4
Деяким системам у режимі реального часу не потрібен таймер, оскільки вони керуються повністю подіями, і жодна з подій не потребує часу. Системі потрібно просто реагувати на кожну подію протягом періоду, відведеного для цієї події, у тому числі, коли багато подій відбувається дуже близько один до одного. У деяких випадках може знадобитися попереджувальне ядро. Зовнішні таймери можуть бути використані для перевірки роботи системи протягом своїх часових обмежень.
rcgldr

2
Якщо вам потрібен приклад у реальному світі, операційна система MicroWare OS-9 для процесорів Motorola 6809 / Hitachi 6309 - це операційна система в реальному часі. Серія Tandy Color Computer використовувала 6809 і використовувала OS-9 (моє перше опромінення у * nix-подібної ОС), а годинники в режимі реального часу ніколи не були стандартним обладнанням для цієї системи і не вимагали для роботи ОС-9.
zmerch

3

Якщо ваша система в режимі офлайн після скидання та має RTC, вона зможе помістити належні дати у журнали. Журнали можуть бути величезними, якщо вам потрібно буде переглядати їх, а неправильна мітка часу змусить вас, ваших розробників програмного забезпечення та клієнтів звести з розуму, і взагалі розслідування майже неможливо.

Легко чи важко, низько чи високо в статті, на яку ви посилаєтесь, - це певна особиста думка. Це складно і дорого, якщо ви ніколи цього не робили раніше і не маєте чітких системних вимог та заяв про роботу; і це легко і дешево, коли ви знаєте, що вам потрібно і який найкращий пристрій для використання.


Питання полягає в тому, як оцінити зменшений час процесора та використання оперативної пам'яті RTC проти відсутності RTC в системі реального часу. Ваша відповідь не відповідає на це.
труба

1
@pipe Це залежить від архітектури та вимог процесора. Відповісти з дефіцитною інформацією просто неможливо. У моїй відповіді сказано, чому RTC повинен бути там замість загального бла-бла про те, як це може бути без нього. Програміст і системний архітектор можуть спроектувати хорошу систему та код та погану систему та код з точки зору часу, витраченого на терміни.
Анонім

3

У більшості систем єдиною реальною перевагою периферійних пристроїв RTC перед іншими формами зберігання часу є те, що вимірювання часу RTC не вплине, коли решта системи перейде у режим сну або - у деяких випадках - вимкнеться повністю. Багато периферійних пристроїв RTC насправді розроблені таким чином, щоб зробити їх непрактичними для більшості цілей, крім запису приблизного часу доби. Багато периферійних пристроїв RTC (можливо, більшість, але, можливо, не надмірність), наприклад, обмежені часом звітування з кроком на одну секунду, і багато з них, принаймні, іноді потребуватимуть чекання синхронізації під час встановлення сигналу тривоги або - у деякі випадки - навіть просто намагаючись прочитати час. Як наслідок, звичайний спосіб використання RTC - це просто скопіювати його значення на більш корисний тактовий час при запуску, встановити його щоразу, коли встановлено "час стіни",

і будь-які чотири послідовні читання гарантовано містять два, які відповідають (і таким чином є правильними), якщо між першим та останнім не пройде більше 1/32768 секунд. Встановлення сигналу може породжувати помилкові події пробудження, але послідовність:

  • відключити переривання від засувки для пробудження
  • встановіть час пробудження до 0x7FFFFFFF кліщів (приблизно на 9 годин) до цього моменту
  • скинути схему пробудження
  • читати годинник
  • якщо нещодавно прочитаний час вказує, що час пробудження досягнуто, дійте належним чином
  • включити переривання від засувки для пробудження

повинні обробляти всі крайові корпуси досить легко, щоб вони були придатними для використання у загальних цілях. На жаль, з будь-якої причини периферійні пристрої RTC ніколи не розробляються таким чином, а натомість є більш складними та менш корисними.


"Справжні" RTC також забезпечують функціональність календаря (день місяця, день тижня, високосні роки, ...), що може бути громіздко реалізовувати себе в програмному забезпеченні.
JimmyB

1
@JimmyB: Програмне забезпечення, якому потрібно робити що-небудь нетривіальне з датами та часом, як правило, включає таку логіку, і можливість зберігати речі в лінійному форматі, за винятком випадків, коли виконання вводу-виводу користувача буде набагато чистішим, ніж необхідність перетворення з непотрібного BCD YMDhms в лінійний час кожного разу, коли він зчитує RTC і перетворюється назад в непотрібний формат при написанні.
supercat

1
@JimmyB: Як простий приклад, якби хтось увімкнув систему в тому, що здавалося, 2016-03-01 00:30, і він востаннє працював у 2015-10-01 о 00:30:00, що час був би? Програмному забезпеченню потрібно знати, що в лютому було 29 днів у 2016 році, щоб визначити, що час 2015-02-29 23:30:00, тож що саме купує апаратне обладнання календаря?
supercat

Мікросхема RTC, на яку посилається OP, обробляє високосні роки правильно.
JimmyB

1
@JimmyB: Якщо система вперше вмикається після переходу на літній час, програмному забезпеченню потрібно буде мати можливість повернути годинник на годину. Якщо це станеться між півночі та 1:00 ранку, це, в свою чергу, вимагатиме повернення календаря на день, що, в свою чергу, потребує розуміння календарів. Дійсно, якщо користувач не вимагає, щоб користувач вручну встановив будній день, а також дату, найпростіший спосіб застосувати літній час - це робота з лінійними датами.
supercat

3

Здається, це питання термінології, що стосується використання терміна "реальний час".

Годинник у режимі реального часу

Годинник у режимі реального часу - це пристрій для стабільного / точного (в межах деякої толерантності) хронометражу, щоб приймаюча система могла використовувати його для асоціації подій / дій з часом та датою виникнення.

Ви можете вважати годинник у реальному часі аналогічним внутрішнім цифровим годинником, пов'язаним з комп'ютером. Він має незалежне джерело часу, розроблений таким чином, щоб бути стабільним і досить точним. Як і цифровий годинник, він не втратить поточний час лише тому, що головний комп'ютер був вимкнений. Годинники в режимі реального часу були встановлені на комп’ютери, як правило, для зручності, так що користувачеві не потрібно повторно вводити поточний час і дату щоразу, коли система запускається, або здійснювати часті корективи для компенсації дрейфу.

Альтернативою годиннику в режимі реального часу буде використання програмного забезпечення та внутрішніх таймерів, керованих системним годинником. Такий підхід є працездатним (оригінальний комп'ютер IBM працював таким чином), але не є особливо стійким; він також втратить дату / час у будь-який момент, коли операційна система вимкнеться, зависає або виходить з ладу.

Система в режимі реального часу

Коли термін "в реальному часі" застосовується до комп'ютерної системи чи програми, він описує систему, яка реагує на події реального часу за дуже короткий, детермінований проміжок часу - часто лише кілька мілісекунд, іноді менше, із визначеним упорядкуванням одночасних входів. Системи в режимі реального часу використовуються для таких речей, як управління машиною - робототехніка, моделювання та ігри. Хоча програма в реальному часі може використовувати інформацію про поточний час та дату, програма не є "в режимі реального часу" лише тому, що використовує поточний час та дату.

Годинники в режимі реального часу та таймери високої роздільної здатності

Як було сказано вище, метою годин в режимі реального часу є надійне відстеження поточної дати та часу, як правило, лише до другої; хороший матиме мінімальний дрейф (секунди, що отримуються або втрачаються щодня). Годинники в режимі реального часу зазвичай не мають високої роздільної здатності; їх базові годинники часто працюють досить повільно порівняно з сучасними процесорними годинами; це звести до мінімуму споживання електроенергії (злив на її незалежне джерело живлення), щоб годинник продовжував надійно зберігати час, якщо головний комп'ютер буде вимкнено протягом тривалого періоду.

Таймер високої роздільної здатності не стосується поточного часу чи дати; її мета - вимірювати часові інтервали з певною точністю, можливо, мікросекундами або навіть меншими. Для цього необхідно базуватись на стабільній та високочастотній тактовій частоті - як правило, на тактовій системі комп'ютерного типу. Таймери високої роздільної здатності, як правило, не пов'язані з дрейфом протягом тривалої тривалості, оскільки звичайна мета - вимірювання часу за коротких тривалостей. Таймери високої роздільної здатності не мають такого ж побоювання щодо споживання електроенергії, як годинники в режимі реального часу, оскільки їм не доводиться виконувати роботу, поки головний комп'ютер вимкнений.


1
Як невеликий хитрощі, "найкоротший [...] можливий" "не вважається реальним часом. Реальний час - це відповідь у детермінований час або з певним упорядкуванням, якщо відбувається декілька подій одночасно.
awjlogan

0

Я думаю, що основною причиною годинника в режимі реального часу є точний час з деяким інтервалом. Звичайний годинник, як правило, оброблений конденсаторами і може мати більші розбіжності за частотою на основі широкого спектру факторів, можливо, поза контролем, таких як пропущена ємність / опір ланцюга синхросигналу тактової частоти, невизначеність у часі синхросигналу, який використовується служить меті поєдинку для виконання, а також часто існує програмована логіка для поділу часу, яка знову може ввести помилку.

Зазвичай RTC може мати таймери і спостерігати за собаками і т.д. Ви не можете легко отримати це за допомогою звичайного годинника. Або вам потрібно бути дуже обережними у виробництві, щоб годинник був точним. Ви можете бачити такі речі, як аудіо, а що не потрібно використовувати rtc замість високошвидкісного системного годинника.

Щодо того, що означає RTC, я сам не можу сказати точно. Я знаю, що Linux є розповсюдженим інструментом у вбудованому світі, однак я не впевнений, наскільки добре він працює для всіх програм у режимі реального часу. Багатопотокове читання може зробити час виконання не детермінованим, проте коли апаратне забезпечення значно перевищує вимоги до продуктивності, багато рішень спрацюють добре навіть у додатках у режимі реального часу.

Потім є критично важливі та низькопродуктивні програми. Одна бажана річ - це детермінований і часто менший рівень складності. Тут RTC можна використовувати очевидно. Linux може надати спеціальний доступ до з’єднаних з ним переривань. Мені здається, що для детермінованого реального часу вам потрібен не тільки rtc, але і перериває доступ до них.


1
Як саме приєднання RTC до сторожової собаки може гарантувати, що годинник залишається «у фазі з різними речами»?
Дмитро Григор’єв

Добре, якщо ви використовуєте зовнішнє тактове джерело, ви залежите від цього джерела, а також схеми, що з'єднує його, як ємність та опір чи імпеданс. Отже, це описується гармонічними коливаннями, рішенням яких є хвиля, а потім побачити фазовий кут тощо, а також застосуванням мікропроцесора, щоб відповісти на все, що ви запитали. На жаль, все це потрібно враховувати у багатьох програмах.
маршальське ремесло

0

Вам знадобиться годинник у режимі реального часу, якщо ви покладаєтесь на безпечне спілкування з іншими комп’ютерами в Інтернеті (не на 100%, але якщо у вас немає місцевого часу, вам потрібно довіряти чомусь іншому, і ви можете " t довірчих сертифікатів, якщо ви не знаєте дату).

Отже, ні, він вам не потрібен для всіх систем «реального часу». Однак, залежно від вашої програми, ви все-таки можете захотіти RTC як найбільш енергоефективний спосіб отримати правильний час виправлення після перебування в стані низької потужності.


Це не зовсім вірно. Наприклад, ви можете довіряти сертифікату (особливо прикріпленому), навіть якщо термін його дії закінчився чи теоретично виданий у майбутньому. Однак, як правило, краща ідея отримати виправлення NTP, перш ніж намагатися бути клієнтом SSL; природно, схеми безпеки для NTP повинні бути розроблені так, щоб вони працювали без необхідності починати з розумного уявлення про час.
Кріс Страттон

4
Навряд чи перебільшене, а перебільшення - це захоплююча та красива річ, якщо воно є головним повідомленням, то це неправильно. Відсутність режимів роботи шифрів принципово вимагає часу або дати.
Пол Ушак
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.