Pergunta

Eu sei que há 10 anos atrás, típico relógio de precisão equivalia a um sistema de escala, que estava na faixa de 10-30ms.Nos últimos anos, a precisão foi aumentada em várias etapas.Hoje em dia, existem maneiras de medir intervalos de tempo real de nanossegundos.No entanto, o habitual quadros ainda voltar o tempo com uma precisão de apenas cerca de 15ms.

A minha pergunta é, quais são os passos fez aumentar a precisão, como é possível medir em nanossegundos, e por que ainda estamos, muitas vezes, chegando a menos que precisão de microsegundos (por exemplo .NET).

(Isenção de responsabilidade:Me parece estranho que este não foi perguntado antes, então eu acho que eu perdi essa pergunta quando eu procurei.Por favor, feche e leve-me para a questão, nesse caso, obrigado.Eu acredito que este pertence e não em qualquer outra SOFU site.Eu entendo a diferença entre precisão e exactidão.)

Foi útil?

Solução

Ele realmente é um recurso da história do PC.O original IBM-PC usado um chip chamado de Relógio de Tempo Real qual foi a bateria de backup (você se lembra a necessidade de mudar as baterias esses ?) Estes operado quando a máquina foi desligada e manteve o tempo.A frequência destas foi 32.768 kHz (2^15 ciclos/segundo), o que torna fácil para calcular o tempo em um de 16 bits do sistema.Este relógio de tempo real, em seguida, foi escrito para CMOS que estava disponível através de uma interrupção do sistema em sistemas operacionais mais antigos.

Um padrão mais recente é o limite a partir do Microsoft e Intel chamado de Eventos de Alta Precisão do Temporizador que especifica uma velocidade de clock de 10 mhz http://www.intel.com/hardwaredesign/hpetspec_1.pdf Ainda mais recente do PC arquiteturas, dê este e colocá-lo sobre o Northbridge e o controlador de HPET pode tun a 100MHz ou até mesmo maior.Em 10Mhz nós deve ser capaz de obter uma resolução de 100 nano-segundos e em 100MHZ, devemos ser capazes de obter 10 nano-segundo resolução.

Os seguintes sistemas operacionais são conhecidos por não ser capaz de usar HPET:Windows XP, Windows Server 2003 e versões anteriores do Windows, Linux mais antigas versões

Os seguintes sistemas operacionais são conhecidos para ser capaz de usar HPET:Windows Vista, Windows 2008, Windows 7, baseados em x 86 versões do Mac OS X, Linux, sistemas operacionais usando o kernel 2.6 e FreeBSD.

Com um kernel do Linux, você precisa o mais recente "rtc-cmos" relógio de hardware do driver de dispositivo em vez do original "rtc" driver

Tudo o que disse, como temos acesso a este extra resolução?Eu poderia cortar e colar a partir anterior stackoverflow artigos, mas não Apenas a busca por HPET e você irá encontrar as respostas sobre como obter mais fino temporizadores de trabalho

Outras dicas

Eu literalmente li um post no MSDN sobre isso hoje, Leia aqui, ele cobre o tópico muito bem. Ele tem ênfase no DateTime de C#, mas é universalmente aplicável.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top