Pergunta

É possível incrementar de um registo (em um loop) ser usado para determinar a velocidade do clock (efetivos)? Eu naturalmente assumiu que pode, mas eu estava comentou que a CPU do pode implantar técnicas de Super-escalares que fazem este tipo de cálculo inútil. Também me foi dito que o incremento de registros na CPU pode ser feito em menos de um ciclo de clock.

é verdade?

Foi útil?

Solução

Não, não é confiável. O número de ciclos que é preciso para incrementar um registo pode variar entre diferentes tipos de processadores, e você também tem que incluir a sobrecarga de looping. Em qualquer sistema operacional moderno, você vai ter que lidar com multitarefa preemptiva, então você não tem idéia de quanto tempo de CPU o programador processo vai dar. Dependendo da quantidade de trabalho outros processos estão fazendo, você pode obter um lote ou um pouco tempo de CPU, de modo que o número de incrementos de registro você pode executar por segundo é altamente variável.

Além disso, em um ambiente de múltiplos núcleos, os relógios podem não marque no mesmo ritmo. Se o seu processo é movido entre os núcleos pelo agendador por algum motivo ou outro, a sua taxa de clock poderia mudar de forma imprevisível.

Há muito melhores maneiras de obter a velocidade de relógio, tais como pedir o sistema operacional para ele (é claro, como fazer isso varia de acordo com OS).

Outras dicas

Não, você não pode usar isso para determinar a taxa de relógio. Não há garantia de que um registo pode ser incrementado exatamente uma vez por clock.

O CPU você está alvejando? Existem formas mais definidas de determinar a taxa de relógio, pelo menos em x86.

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