É necessário um relógio em tempo real (RTC) para sistemas em tempo real? [fechadas]


11

Supondo que estamos trabalhando em um sistema e hardware Linux em tempo real que consiste em cronômetros de alta resolução, ter um RTC afeta a atualidade real do sistema?

Aqui diz que reduz o uso da CPU e da memória, mas existe uma maneira de comparar a diferença de alguma forma?


12
A comparação no link é simplesmente boba.
pipe

9
Sim, @pipe, e acima disso, até os números estão totalmente errados. Com prazer comprarei o chip RTC com preço de DS12C887 com "1 segundo de erro em 100 anos". De fato, comprarei quantas minhas economias me permitirem comprar. Essa é uma precisão de 300ppb. Mais de 100 anos. Isso é alguma coisa séria de frequência aqui.
Marcus Müller

8
Sistemas em tempo real e relógio em tempo real são coisas diferentes e não há comparação. RTC é para manter o tempo e Tempo real Sistema é usado para servir em tempo real (não como em UTC, mas como em rapidez) fins
MaNyYaCk


3
@ JimmyB Relógios como este são para cronometrar , não para o tempo ! Mesmo se você tiver uma época de referência, geralmente a definimos como TAI (ou GPS) e aplicamos a correção UTC relevante quando precisamos da UTC. No caso do GPS, esse parâmetro de correção vem de efemérides. O UTC é um tipo de "fuso horário" nesse sentido - da mesma forma que você não redefine o relógio quando o horário de verão entra em vigor e espera que ele se estabilize novamente - não há nada a redefinir, porque o relógio fornece pulsos, não um carimbo de data / hora.
Lightness Races in Orbit -

Respostas:


39

O artigo que você vinculou é apenas um disparate completo e absoluto. O "tempo real" no "relógio em tempo real" (como é usado para se referir ao tipo de dispositivo rígido descrito no artigo) e o "tempo real" nos "sistemas em tempo real" são termos completamente diferentes. O primeiro significa armazenar o horário atual do calendário (geralmente uma aproximação muito pobre, em oposição à alta precisão, como o artigo vinculado afirmava) e avançá-lo sem energia externa, usando uma bateria de longa duração tipo botão / moeda. O último significa responder a eventos com limites rígidos de latência desde o momento do evento até o momento da resposta.

Alguns outros trechos do artigo, para estabelecer que ele deve ser considerado não confiável:

Quase insignificante. Da ordem de 1 segundo em 100 anos

1 segundo em 100 anos é de aproximadamente 317 ppt (sim, são partes por trilhão ). Você não pode obter esse tipo de estabilidade do relógio com qualquer tecnologia de relógio disponível no mercado. Até chegar a 1 segundo por ano exigiria pelo menos um OCXO, que requer um forno sempre ligado e de alta potência que regule a temperatura. A idéia de que você poderia obtê-lo com um dispositivo alimentado por bateria de moedas de longa duração é risível.

sistemas em tempo real como relógio digital, sistema de atendimento, câmera digital

Nenhuma delas é o que se chamaria de sistemas em tempo real.


1
Na verdade, é provável que esses sistemas possuam componentes em tempo real, embora em "tempo real suave", porque as conseqüências da falta / substituição de uma marca de processamento são pequenas. Não no sentido equivocado que o autor do link pensava.
Graham

2
@ Graham: De certa forma, sim, mas as margens são tão grandes que você geralmente as considera como não em tempo real. Em última análise, qualquer sistema interativo é em tempo real se você estender a definição o suficiente, porque quando ela não reagir por minutos ou horas, alguém assumirá que ela falhou. :-) Então, acho que só é útil categorizar algo como "em tempo real" quando houver pequenas margens e sérias conseqüências por falta deles.
R .. GitHub Pare de ajudar o gelo

3
@R .. Nem todos os sistemas são em tempo real, mesmo com margens enormes. Se um sistema é capaz de travar indefinidamente, não pode ser um sistema em tempo real. Os sistemas devem ter garantias absolutas de que um intervalo de tempo levará apenas um período finito de tempo e um travamento (deadlock / livelock) é, por definição, infinito.
forest

2
Uma meta-discussão sobre exatamente o que é um sistema em tempo real não pertence a uma seção de comentários.
pipe

1
@Uwe: Na verdade, eu errei tudo, mas agora que olho para ele de novo, acho que estou com dois fatores de 10 - não deveria ser 0,316ppb? Figurando como 1s / (100 * segs_per_ano) onde secs_per_year = 31556952.
R .. GitHub Pare de ajudar o gelo

39

Sistemas em tempo real são algo que responde a um evento / estímulo interno ou externo em um tempo especificado e esse tempo geralmente é em mil ou microssegundos. Ele precisa de um temporizador de pequena precisão, e não do RTC.

E a resposta para sua pergunta é Não, isso não afetará a atualidade do sistema.


1
Isso é curto e direto ao ponto da pergunta IMO.
Rev1.0

Algumas entidades federais, como os bancos, usam RTCs de 1ns em seus servidores, com base em relógios atômicos. Mesmo uma sugestão de adulteração de seus links de microondas altera o tempo de trânsito para o receptor. RTC rápido também é bom para semáforos multifásicos.
Sparky256

4
Alguns sistemas em tempo real não precisam de um timer, pois são totalmente orientados a eventos, e não é necessário que nenhum dos eventos seja baseado em tempo. O sistema só precisa responder a cada evento dentro do período alocado para esse evento, inclusive quando vários eventos ocorrem muito próximos um do outro. Em alguns casos, um núcleo preventivo pode ser necessário. Temporizadores externos podem ser usados ​​para validar que o sistema está operando dentro das restrições de tempo.
Rcgldr 30/1018

2
Se você quiser um exemplo do mundo real, o sistema operacional OS-9 da MicroWare para os processadores Motorola 6809 / Hitachi 6309 é um sistema operacional em tempo real. A série Tandy Color Computer utilizava 6809s e executava o OS-9 (minha primeira exposição a um sistema operacional * nix) e os relógios em tempo real nunca eram equipamentos padrão nesse sistema e não eram necessários para o funcionamento do OS-9.
Zmerch

3

Se o seu sistema estiver offline após a redefinição e o RTC, ele poderá inserir as datas apropriadas nos logs. Os logs podem ser enormes, caso você precise examiná-los e ter um carimbo de data / hora errado, deixando você, seus desenvolvedores e clientes de software malucos e, em geral, a investigação quase impossível.

Fácil ou difícil, baixo ou alto no artigo a que você se refere é um tipo de opinião pessoal. É difícil e caro se você nunca fez isso antes e não possui requisitos de sistema e declaração de trabalho claros; e é fácil e barato quando você sabe o que precisa e qual é o melhor dispositivo a ser usado.


A questão é como quantificar o tempo reduzido da CPU e o uso de memória de um RTC versus nenhum RTC em um sistema em tempo real. Sua resposta não responde a isso.
pipe

1
@pipe Depende da arquitetura e dos requisitos da CPU. Simplesmente não é possível responder com informações escassas fornecidas. Minha resposta diz por que o RTC deve estar lá, em vez de genérico bla-bla, sobre como poderia ser sem ele. O programador e o arquiteto do sistema podem projetar um bom sistema e código e um sistema e código ruins em termos de tempo gasto no tempo.
Anônimo

3

Isso parece ser um problema de terminologia que envolve o uso do termo "tempo real".

Relógio de tempo real

Um relógio em tempo real é um dispositivo para cronometragem estável / precisa (com alguma tolerância), para que o sistema host possa usá-lo para associar eventos / ações à hora e data da ocorrência.

Você pode pensar em um relógio em tempo real como análogo às entranhas de um relógio digital conectado ao computador. Possui uma referência de tempo com alimentação independente, projetada para ser estável e razoavelmente precisa. Como um relógio digital, ele não perde a noção da hora atual apenas porque o computador host foi desligado. Os relógios em tempo real foram instalados nos computadores principalmente como uma conveniência, para que o usuário não precise digitar novamente a hora e a data atuais sempre que o sistema for iniciado ou faça ajustes frequentes para compensar a deriva.

A alternativa a um relógio em tempo real seria usar software e temporizadores internos acionados pelo relógio do sistema. Essa abordagem é viável (o PC IBM original funcionava dessa maneira), mas não é particularmente estável; também perderá o controle da data / hora a qualquer momento em que o sistema operacional for desligado, travado ou travar.

Sistema em tempo real

Quando o termo "tempo real" é aplicado a um sistema ou aplicativo de computador, ele descreve um sistema que responde a eventos do mundo real em um período determinístico muito curto - geralmente apenas alguns milissegundos, às vezes menos, com pedidos definidos de entradas simultâneas. Os sistemas em tempo real são usados ​​para controle de máquinas - robótica, simulações e jogos. Embora um aplicativo em tempo real possa fazer uso das informações atuais de hora e data, um aplicativo não é "em tempo real" apenas porque faz uso da hora e data atuais.

Relógios em tempo real vs temporizadores de alta resolução

Como mencionado acima, o objetivo de um relógio em tempo real é acompanhar de forma confiável a data e a hora atuais, geralmente apenas a segunda; um bom terá desvio mínimo (segundos ganhos ou perdidos a cada dia). Relógios em tempo real geralmente não têm alta resolução; seus relógios de base costumam rodar bem devagar em comparação aos relógios de CPU modernos; isso é para minimizar o consumo de energia (drenar sua fonte de energia independente) para que o relógio continue mantendo o tempo de forma confiável se o computador host for desligado por um período prolongado.

Um cronômetro de alta resolução não se preocupa com a hora ou data atual; seu objetivo é medir intervalos de tempo com alguma precisão, talvez microssegundos ou até menos. Para fazer isso, ele deve se basear em um relógio estável e de alta frequência - normalmente o relógio do sistema do computador. Timers de alta resolução também não costumam se preocupar com desvios por longas durações, porque o objetivo usual é a medição do tempo em durações curtas. Os cronômetros de alta resolução não têm a mesma preocupação de consumo de energia que os relógios em tempo real, porque não têm um trabalho a fazer enquanto o computador host está desligado.


Como uma pequena coisinha, "o menor [...] possível" não é considerado em tempo real. Tempo real é resposta em tempo determinístico ou com ordenação definida se vários eventos ocorrerem simultaneamente.
awjlogan

2

Na maioria dos sistemas, a única vantagem real de um periférico do RTC em relação a outras formas de controle de tempo é que as medições de tempo do RTC não serão afetadas quando o restante do sistema entrar em suspensão ou - em alguns casos - for desligado completamente. De fato, muitos periféricos RTC são projetados de maneiras que os tornariam impraticáveis ​​para a maioria dos propósitos, além de registrar a hora aproximada do dia. Muitos periféricos RTC (provavelmente a maioria, mas talvez não uma supermaioria), por exemplo, estão limitados ao tempo de relatório em incrementos de um segundo, e muitos deles, pelo menos, às vezes, exigem sincronização de espera ao definir um alarme ou - em alguns casos - até mesmo tentando ler as horas. Como conseqüência, a maneira normal de usar um RTC é simplesmente copiar seu valor para um relógio mais útil na inicialização, defini-lo sempre que "hora da parede" for definida,

e qualquer quatro leituras consecutivas deverá garantir duas que correspondam (e, portanto, estão corretas), a menos que mais de 1/32768 segundos se passem entre a primeira e a última. A configuração do alarme pode gerar eventos de ativação espúrios, mas a sequência:

  • desativar interrupção da trava de ativação
  • defina o tempo de ativação para até 0x7FFFFFFF (cerca de 9 horas) antes do presente
  • redefinir o circuito de ativação
  • leia o relógio
  • se o tempo de nova leitura indicar que o tempo de ativação foi atingido, aja adequadamente
  • ativar a interrupção da trava de ativação

deve lidar com todos os casos de bordas com facilidade o suficiente para ser adequado para uso de manutenção de tempo de uso geral. Infelizmente, por qualquer motivo, os periféricos RTC nunca são projetados dessa maneira, mas são mais complicados e menos úteis.


Os RTCs "reais" também fornecem funcionalidade de calendário (dia do mês, dia da semana, anos bissextos, ...), o que pode ser complicado de se implementar em software.
JimmyB

@ JimmyB: O software que precisa fazer algo não trivial com datas e horas geralmente inclui essa lógica de qualquer maneira, e ser capaz de manter as coisas em formato linear, exceto ao executar a E / S do usuário, seria muito mais limpo do que ter que converter do inútil BCD YMDhms para tempo linear toda vez que lê o RTC e converte de volta para o recurso inútil ao escrever.
Supercat

@JimmyB: Como um exemplo simples, se alguém ligasse o sistema no que parecia ser 2016-03-01 00:30, e foi ligado pela última vez em 01/10/2015 às 00:30:00, o que que horas seriam? O software precisaria saber que fevereiro tinha 29 dias em 2016 para determinar que a hora era 29-02-2015 23:30:00, então o que exatamente o hardware do calendário compra?
Supercat

O chip RTC mencionado no OP lida corretamente com os anos bissextos.
JimmyB

"Software que precisa fazer algo não trivial com datas e horários", com certeza. Mas um RTC é apenas um relógio . Ele diz que horas são quando você solicita, mas não calcula sua idade em segundos para você. Portanto, se você deseja registrar o registro de data e hora de suas entradas de log, o RTC é tudo o que você precisa e não precisará lidar com nenhum tipo de matemática de data / hora. Se você deseja fazer cálculos arbitrários em horários, isso não é muito útil para você.
JimmyB

0

Eu acho que a principal razão para um relógio em tempo real é o tempo exato em um intervalo. O relógio regular geralmente é aparado com capacitores e pode ter discrepâncias maiores na frequência com base em uma ampla variedade de fatores que talvez estejam fora de controle, como capacitância / resistência do circuito de temporização do relógio, incerteza na temporização do relógio que está sendo usada. serve ao propósito de desempenho do duelo, assim como geralmente existe uma lógica programável para dividir os tempos que novamente podem introduzir erros.

Normalmente, o RTC pode ter temporizadores e cães de guarda, etc. Acoplado a ele, dando uma garantia ou boa suposição de que, em intervalos precisos e regulares, que podem permanecer em fase com vários procedimentos ou código, serão executados. Você não pode conseguir isso facilmente com um relógio normal. Ou você precisa ter muito cuidado na produção para que o relógio seja preciso. Você pode ver coisas como áudio e o que não pode precisar usar o rtc em vez do relógio do sistema de alta velocidade.

Quanto ao que significa RTC, não posso dizer com certeza. Eu sei que o Linux é uma ferramenta predominante no mundo incorporado, no entanto, não tenho certeza de quão bem ele funciona para todos os aplicativos em tempo real. O multithreading pode tornar os tempos de execução não determinísticos, no entanto, quando o hardware excede em muito os requisitos de desempenho, muitas soluções funcionam bem, mesmo em aplicativos em tempo real.

Depois, existem aplicativos de missão crítica e de baixo desempenho. Uma coisa desejável aqui é a solução determinística e geralmente de menor complexidade. Aqui o RTC pode ser usado obviamente. O Linux pode fornecer acesso especial às interrupções associadas a ele. Parece-me, em tempo real determinístico, que você requer não apenas um rtc, mas interrompe ou o acesso a eles.


Como o acoplamento exato de um RTC a um cão de guarda pode garantir que o relógio permaneça "em sintonia com várias coisas"?
Dmitry Grigoryev

Tudo bem, se você usa uma fonte de relógio externa, depende dessa fonte, bem como dos circuitos que a conectam como capacitância e resistência ou impedância. Portanto, isso é descrito pela oscilação harmônica cuja solução é uma onda e, em seguida, veja o ângulo de fase etc., bem como a aplicação do microprocessador para responder a tudo o que você acabou de perguntar. Infelizmente, todas essas coisas precisam ser contabilizadas em muitas aplicações.
Marshal craft #

0

Você precisará de um relógio em tempo real se confiar na comunicação segura com outros computadores na Internet (não é necessário 100%, mas se você não tiver uma referência de horário local, precisará confiar em outra coisa e poderá ' não confie nos certificados, a menos que você saiba a data).

Portanto, não, você não precisa de um para todos os sistemas 'em tempo real'. No entanto, dependendo da sua aplicação, você ainda pode desejar um RTC como a maneira mais eficiente de obter uma boa correção de tempo depois de estar em um estado de baixa energia.


Isso não é inteiramente verdade. Você pode, por exemplo, confiar em um certificado (especialmente um fixado), mesmo que ele tenha expirado ou tenha sido teoricamente emitido no que parece ser o futuro. No entanto, geralmente é uma idéia melhor obter sua correção NTP antes de tentar ser um cliente SSL; naturalmente, os esquemas de segurança do NTP precisam ser projetados para funcionar sem a necessidade de começar com uma idéia sensata da época.
22718 Chris Stratton

3
Exageradamente exagerado e enquanto exagero é uma coisa emocionante e bonita, se formar a mensagem principal, estará errado. Um dos modos de operação das cifras não exige fundamentalmente a hora ou a data.
Paul Uszak
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.