실시간 시스템에 RTC (Real-Time Clock)가 필요합니까? [닫은]


11

고해상도 타이머로 구성된 실시간 Linux 시스템 및 하드웨어에서 작업한다고 가정하면 RTC가 시스템의 실시간에 영향을 미칩니 까?

여기서는 CPU 및 메모리 사용량을 줄이지 만 어떻게 든 차이점을 비교할 수 있습니까?


13
링크의 비교는 바보입니다.
파이프

10
예, @pipe 그리고 그 꼭대기에는 심지어 숫자조차 완전히 잘못되었습니다. "100 년 만에 1 초의 오류"를 가진 DS12C887 가격의 RTC 칩을 기쁘게 구매할 것이다. 사실 저의 저축으로 구매할 수있는만큼 구매할 것입니다. 이것이 300ppb 정확도입니다. 100 년 이상. 바로 거기에 몇 가지 심각한 주파수 장점이 있습니다.
Marcus Müller

8
실시간 시스템과 실시간 클럭은 서로 다르며 비교가 없습니다. RTC는 시간 관리를위한 것이며 실시간 시스템은 실시간 (UTC 기준이 아니라 신속성) 목적으로 사용됩니다
MaNyYaCk

3
@pipe DS12C887, 100 년 계획 버전 .
Marcus Müller

4
@JimmyB 이와 같은 시계는 시간이 아니라 타이밍입니다 ! 참조 에포크가 있더라도 일반적으로 TAI (또는 GPS)로 설정하고 UTC가 필요할 때 관련 UTC 수정을 적용합니다. GPS의 경우이 수정 매개 변수는 천체에서 나옵니다. UTC는 그런 의미에서 일종의 "시간대"입니다. 마찬가지로 DST가 적용될 때 시계를 재설정하지 않고 다시 안정화 될 때까지 기다립니다. 시계가 타임 스탬프가 아니라 펄스를주기 때문에 재설정 할 것이 없습니다.
궤도에서 가벼움 경주

답변:


40

링크 한 기사는 완전하고 말도 안됩니다. "실시간 시계"의 "실시간"(이 기사에서 설명하는 어려운 장치의 유형을 나타내는 데 사용됨)과 "실시간 시스템"의 "실시간"은 완전히 다른 용어입니다. 전자는 현재 달력 시간 (보통 링크 된 기사와 같은 고정밀과 달리 매우 약한 근사치)을 저장하고 수명이 긴 버튼 / 코 인형 배터리를 사용하여 외부 전원없이 전진하는 것을 의미합니다. 후자는 이벤트 시간에서 응답 시간까지 대기 시간이 긴 경한 이벤트에 응답하는 것을 의미합니다.

신뢰할 수없는 것으로 간주해야한다는 기사의 다른 내용

거의 무시할 수 있습니다. 100 년 동안 1 초 정도

100 년 동안 1 초는 대략 317 ppt입니다 (예, 1 조분의 1입니다 ). 기존의 상용 클록 기술로는 이러한 종류의 클록 안정성을 얻을 수 없습니다. 1 년에 1 초에이를 때조차도 온도를 조절하는 고출력의 항상 작동하는 오븐이 필요한 OCXO가 필요합니다. 수명이 긴 코인 배터리로 구동되는 장치로 얻을 수있는 아이디어는 재미 있습니다.

디지털 시계, 출석 시스템, 디지털 카메라와 같은 실시간 시스템

이것들 중 어느 것도 실시간 시스템이라고 부르지 않습니다.


1
실제로 "소프트 실시간"이지만 처리 틱 누락 / 오버런의 결과가 작기 때문에 이러한 시스템에는 대부분 실시간 구성 요소가 있습니다. 그러나 링크의 저자가 생각했다는 오해의 여지가 없습니다.
Graham

3
@Graham : 어떤 의미에서는 그렇게하지만, 마진이 너무 커서 일반적으로 비 실시간으로 생각합니다. 정의를 충분히 확장하면 몇 분 또는 몇 시간 동안 반응하지 않으면 누군가가 충돌했다고 가정하기 때문에 궁극적으로 모든 대화 형 시스템은 실시간입니다. :-) 따라서 작은 여백과 누락 된 결과가 심각한 경우 "실시간"으로 분류하는 것이 유용하다고 생각합니다.
R .. GitHub 중지 지원 얼음

3
@R .. 모든 마진이 큰 시스템이라하더라도 모든 시스템이 실시간 인 것은 아닙니다. 시스템이 있으면 할 수 무기한 걸려, 그것은 실시간 시스템이 될 수 없습니다. 시스템 에는 타임 슬롯이 한정된 시간 만 걸리고 중단 (데드락 / 라이브 락)은 무한정이라는 절대적인 보장 이 있어야합니다 .

2
실시간 시스템이 정확히 무엇인지에 대한 메타 토론은 주석 섹션에 속하지 않습니다.
파이프

1
@ Uwe : 실제로 그것을 엉망으로 만들었지 만 이제는 다시 보았으므로 10의 두 가지 요소에 의해 벗어났다고 생각합니다-0.316ppb는 안됩니까? 1s / (100 * secs_per_year)로 계산 : secs_per_year = 31556952.
R .. GitHub 중지 지원 얼음

39

실시간 시스템은 지정된 시간 내에 내부 또는 외부 이벤트 / 자극에 응답하는 시간이며 일반적으로 밀리 초 또는 마이크로 초입니다. RTC보다는 작은 정밀도의 타이머가 필요합니다.

그리고 귀하의 질문에 대한 대답은 아니오입니다. 그것은 시스템의 실시간에 영향을 미치지 않습니다.


1
이것은 짧고 질문 IMO에 대한 핵심 답변입니다.
Rev1.0

은행과 같은 일부 연방 기관은 원자 시계를 기반으로 서버에서 1ns RTC를 사용합니다. 그들의 마이크로파 링크를 훼손하는 힌트조차도 수신기로의 전송 시간을 변화시킬 것이다. 고속 RTC는 다상 세마포에도 좋습니다.
Sparky256

4
일부 실시간 시스템은 전적으로 이벤트 중심이므로 타이머가 필요하지 않으며 시간 기반 이벤트가 필요하지 않습니다. 시스템은 여러 이벤트가 서로 매우 근접한 경우를 포함하여 해당 이벤트에 할당 된 기간 내에 각 이벤트에 응답하면됩니다. 경우에 따라 선점 커널이 필요할 수 있습니다. 외부 타이머는 시스템이 시간 제한 내에서 작동하는지 확인하는 데 사용될 수 있습니다.
rcgldr

2
실제 사례를 원한다면 Motorola 6809 / Hitachi 6309 프로세서 용 MicroWare의 OS-9 운영 체제는 실시간 OS입니다. Tandy Color Computer 시리즈는 6809를 사용했으며 OS-9 (* nix와 같은 OS에 처음 노출됨)을 실행했으며 실시간 시계는 해당 시스템의 표준 장비가 아니 었으며 OS-9가 작동하는 데 필요하지 않았습니다.
zmerch

3

재설정하고 RTC를 수행 한 후 시스템이 오프라인 인 경우 로그에 올바른 날짜를 입력 할 수 있습니다. 로그를 살펴보고 타임 스탬프가 잘못되어 사용자, 소프트웨어 개발자 및 클라이언트를 미치게 만들거나 일반적으로 거의 조사 할 수없는 경우 로그가 커질 수 있습니다.

언급 한 기사에서 쉽고 어렵거나 낮거나 높음은 일종의 개인적인 의견입니다. 이전에 해본 적이없고 명확한 시스템 요구 사항과 작업 내용이없는 경우 어렵고 비용이 많이 듭니다. 필요한 것이 무엇인지, 가장 적합한 장치가 무엇인지 알면 쉽고 저렴합니다.


문제는 실시간 시스템에서 RTC를 사용하지 않고 RTC를 사용하여 CPU 시간과 메모리 사용을 줄인 방법을 정량화하는 방법입니다. 당신의 대답은 대답하지 않습니다.
파이프

1
@pipe CPU 아키텍처 및 요구 사항에 따라 다릅니다. 주어진 희소 한 정보로 대답하는 것은 불가능합니다. 내 대답은 RTC가 어떻게 그것을 할 수 있는지에 대한 일반적인 bla-bla 대신 RTC가 있어야하는 이유를 말합니다 . 프로그래머와 시스템 설계자는 타이밍에 소요되는 시간 측면에서 좋은 시스템과 코드, 나쁜 시스템과 코드를 설계 할 수 있습니다.
Anonymous

3

대부분의 시스템에서 다른 형태의 시간 보존에 비해 RTC 주변 장치의 유일한 장점은 시스템의 나머지 부분이 절전 모드로 전환되거나 일부 경우 전 체 전원이 꺼질 때 RTC의 시간 측정에 영향을 미치지 않는다는 것입니다. 많은 RTC 주변 장치는 실제로 대략적인 시간을 기록하는 것 이외의 대부분의 목적에는 실용적이지 않게 설계되었습니다. 예를 들어, 대부분의 RTC 주변 장치 (아마도 다수는 아니지만 초 거대하지는 않음)는 1 초 단위로보고 시간으로 제한되며, 경보를 설정하거나 동기화 할 때 동기화를 위해 통화 중 대기를 요구하는 경우가 많습니다. 때로는 시간을 읽으려고 시도하는 경우도 있습니다. 결과적으로 RTC를 사용하는 일반적인 방법은 시작시 더 유용한 시계에 값을 간단히 복사하여 "벽 시간"이 설정 될 때마다 설정하는 것입니다.

그리고 4 개의 연속적인 판독은 첫 번째와 마지막 사이에 1/32768 초 이상 경과하지 않는 한 일치하는 2 개를 포함하도록 보장됩니다. 알람을 설정하면 가짜 웨이크 업 이벤트가 발생할 수 있지만 순서는 다음과 같습니다.

  • 웨이크 업 래치에서 인터럽트 비활성화
  • 현재보다 최대 0x7FFFFFFF 틱 (약 9 시간)의 깨우기 시간 설정
  • 웨이크 업 회로 재설정
  • 시계를 읽으십시오
  • 새로 읽은 시간이 웨이크 업 시간에 도달했음을 나타내는 경우 적절하게 조치하십시오.
  • 웨이크 업 래치에서 인터럽트 활성화

범용 시간 관리에 적합하도록 모든 에지 케이스를 충분히 쉽게 처리해야합니다. 불행히도, 어떤 이유로 든 RTC 주변 장치는 그런 식으로 설계되지 않았지만 대신보다 복잡하고 유용하지 않습니다.


"실제"RTC는 또한 달력 기능 (매일, 요일, 윤년 등)을 제공하며, 소프트웨어로 구현하기가 번거로울 수 있습니다.
JimmyB

1
@JimmyB : 날짜와 시간으로 사소한 작업을 수행해야하는 소프트웨어에는 일반적으로 이러한 논리가 포함되며 사용자 I / O를 수행 할 때를 제외하고는 일을 선형 형식으로 유지할 수있는 것이 쓸모없는 것에서 변환하는 것보다 훨씬 깨끗합니다. BCD YMDhms는 RTC를 읽을 때마다 선형 시간으로 돌아가고 쓸 때 쓸모없는 fromat로 다시 변환합니다.
supercat

1
@JimmyB : 간단한 예로, 2016-03-01 00:30으로 보이는 시스템의 전원을 켜고 2015-10-01의 00:30:00에 마지막으로 켜진 경우 시간이 될까요? 소프트웨어는 2015 년 2 월 29 일이 2015 년 2 월 29 일 23:30:00임을 확인하기 위해 2016 년 2 월에 29 일이 있었음을 알아야합니다. 그렇다면 달력 하드웨어는 정확히 무엇을 구매합니까?
supercat

OP에서 참조 된 RTC 칩은 윤년 자체를 정확하게 처리합니다.
JimmyB

1
@JimmyB : 일광 절약 시간이 지난 후 시스템 전원을 처음 켤 경우 소프트웨어는 한 시간 뒤로 시계를 설정할 수 있어야합니다. 자정과 오전 1시 사이에 발생하면 일정을 다시 설정해야하며 일정을 이해해야합니다. 실제로 사용자가 요일과 날짜를 수동으로 설정하도록 요구하지 않는 한 일광 절약 시간을 적용하는 가장 쉬운 방법은 선형 날짜를 사용하는 것입니다.
supercat

3

이것은 "실시간"이라는 용어의 사용을 둘러싼 용어의 문제인 것 같습니다.

실시간 시계

실시간 클록은 호스트 시스템이 이벤트 / 동작을 발생 시간 및 날짜와 연관시키는 데 사용할 수 있도록 안정적 / 정확한 (약간의 공차 내) 시간 표시를위한 장치입니다.

실시간 시계는 컴퓨터에 연결된 디지털 시계의 내부와 유사하다고 생각할 수 있습니다. 안정적이고 합리적으로 정확하도록 설계된 독립적으로 전원이 공급되는 시간 기준이 있습니다. 디지털 시계와 마찬가지로 호스트 컴퓨터가 종료 되어도 현재 시간을 잃지 않습니다. 실시간 시계는 대부분 편의상 컴퓨터에 장착되어 사용자가 시스템을 시작할 때마다 현재 시간과 날짜를 다시 입력하거나 드리프트를 보정하기 위해 자주 조정하지 않아도됩니다.

실시간 클록의 대안은 시스템 클록에 의해 구동되는 소프트웨어 및 내부 타이머를 사용하는 것입니다. 이러한 접근 방식은 실행 가능하지만 (원래 IBM PC는 그렇게 작동했습니다) 특히 안정적이지 않습니다. 또한 운영 체제가 종료되거나 정지되거나 충돌하는 시점에서 날짜 / 시간을 추적하지 못하게됩니다.

실시간 시스템

"실시간"이라는 용어가 컴퓨터 시스템 또는 응용 프로그램에 적용되는 경우, 정의 된 순서대로 실제 이벤트에 매우 짧고 결정적인 시간 내에 반응하는 시스템을 설명합니다. 동시 입력의. 실시간 시스템은 로봇 제어, 시뮬레이션 및 게임과 같은 기계 제어에 사용됩니다. 실시간 응용 프로그램은 현재 시간 및 날짜 정보를 사용할 수 있지만 응용 프로그램은 현재 시간 및 날짜를 ​​사용하기 때문에 "실시간"이 아닙니다.

실시간 클록 및 고해상도 타이머

전술 한 바와 같이, 실시간 클록의 목적은 현재 날짜 및 시간을 일반적으로 단지 2 초까지 안정적으로 추적하는 것이다. 좋은 것은 최소한의 드리프트 (매일 얻거나 잃는 초)를 가질 것입니다. 실시간 클록은 일반적으로 높은 해상도를 갖지 않습니다. 기본 클럭은 최신 CPU 클럭과 비교하여 종종 느리게 실행됩니다. 이것은 호스트 컴퓨터의 전원이 장시간 꺼진 경우에도 시계가 지속적으로 시간을 안정적으로 유지할 수 있도록 전력 소비를 최소화 (독립 전원에서 드레인)하는 것입니다.

고해상도 타이머는 현재 시간 또는 날짜와 관련이 없습니다. 그 목적은 마이크로 초 또는 그 이하의 정밀도로 시간 간격을 측정하는 것입니다. 이를 위해서는 안정적인 고주파 클럭 (일반적으로 컴퓨터 시스템 클럭)을 기반으로해야합니다. 고해상도 타이머는 일반적으로 장시간 지속되는 드리프트와 관련이 없습니다. 일반적인 목적은 짧은 시간 동안의 시간 측정이기 때문입니다. 고해상도 타이머는 호스트 컴퓨터의 전원이 꺼진 동안해야 할 일이 없기 때문에 실시간 시계와 전력 소비 문제가 동일하지 않습니다.


1
"최소한 [...] 가능"은 실시간으로 간주되지 않습니다. 실시간은 결정적 시간 또는 여러 이벤트가 동시에 발생하는 경우 정의 된 순서대로 응답 합니다.
awjlogan

0

실시간 시계의 주된 이유는 일정한 간격으로 정확한 시간이라고 생각합니다. 일반 클록은 일반적으로 커패시터로 트리밍되며 클록 타이밍 회로의 미스 튜닝 캐패시턴스 / 저항, 사용중인 클록 타이밍의 불확실성과 같은 제어 할 수없는 다양한 요인에 따라 주파수에 대한 더 큰 불일치를 가질 수 있습니다. 성능을 위해 결투적인 목적을 제공하며, 종종 오류를 유발할 수있는 시간을 나누는 프로그래밍 가능한 논리가 있습니다.

일반적으로 RTC는 타이머와 감시견 등을 가질 수 있습니다. 이것과 결합하여 정기적으로 정확한 간격으로 다양한 절차 나 코드와 같은 단계를 유지할 수 있다는 보장 또는 좋은 가정을합니다. 일반 시계로는 쉽게 얻을 수 없습니다. 또는 시계가 정확한 생산에 매우주의해야합니다. 오디오와 같은 것을 볼 수 있고 고속 시스템 시계 대신 rtc를 사용할 필요가없는 것을 볼 수 있습니다.

RTC가 의미하는 바에 관해서는 확실히 말할 수 없습니다. Linux가 임베디드 세계에서 널리 사용되는 도구라는 것을 알고 있지만 모든 실시간 응용 프로그램에서 Linux가 얼마나 잘 작동하는지 잘 모르겠습니다. 멀티 스레딩은 실행 시간을 결정적이지 않게 만들 수 있지만 하드웨어가 성능 요구 사항을 크게 초과하면 많은 솔루션이 실시간 응용 프로그램에서도 제대로 작동합니다.

그런 다음 미션 크리티컬 및 저 성능 애플리케이션이 있습니다. 여기서 바람직한 것은 결정 론적이며 종종 복잡성이 낮은 솔루션입니다. 여기서는 RTC를 분명히 사용할 수 있습니다. 리눅스는 인터럽트에 대한 특별한 접근을 제공 할 수있다. 결정 론적 실시간으로 rtc뿐만 아니라 인터럽트 또는 os 액세스가 필요합니다.


1
RTC를 워치 독에 정확히 연결하면 클록이 "다양한 것의 위상"을 유지하는 방법은 무엇입니까?
Dmitry Grigoryev

외부 클럭 소스를 사용하는 경우 커패시턴스, 저항 또는 임피던스와 같은 회로를 연결하는 회로뿐만 아니라 해당 소스에 의존합니다. 따라서 이것은 솔루션이 파동 인 고조파 발진으로 설명되며 위상 각도 등을 비롯하여 방금 요청한 모든 것에 응답하기위한 마이크로 프로세서의 적용을 볼 수 있습니다. 불행히도이 모든 것들이 많은 어플리케이션에서 설명되어야합니다.
마샬 크래프트

0

인터넷상의 다른 컴퓨터와의 안전한 통신에 의존하는 경우 실시간 시계가 필요합니다 (100 %는 아니지만 로컬 시간 참조가없는 경우 다른 것을 신뢰해야합니다. ' 날짜를 모르면 인증서를 신뢰하십시오.

따라서 모든 '실시간'시스템에 대해 하나가 필요하지는 않습니다. 그러나 응용 프로그램에 따라 저전력 상태에서 양호한 시간 수정을 얻는 가장 에너지 효율적인 방법으로 RTC가 여전히 필요할 수 있습니다.


그것은 사실이 아닙니다. 예를 들어, 인증서가 만료되었거나 미래에 보이는 것으로 이론적으로 발급 된 경우에도 인증서 (특히 고정 된 인증서)를 신뢰할 수 있습니다. 그러나 SSL 클라이언트가되기 전에 NTP 수정 프로그램을 얻는 것이 일반적으로 더 좋습니다. 당연히 NTP의 보안 체계는 현명한 시간 아이디어로 시작하지 않고도 작동하도록 설계되어야합니다.
Chris Stratton

4
크게 과장되고 과장된 것은 가슴이 따뜻하고 아름다운 것입니다. 그것이 주요 메시지를 구성하면 잘못입니다. 암호의 작동 모드가 아닌 경우 기본적으로 시간 또는 날짜가 필요합니다.
Paul Uszak
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.