Pregunta

¿Se puede usar el incremento de un registro (en un bucle) para determinar la frecuencia de reloj (efectiva)? Naturalmente, asumí que sí, pero me comentaron que las CPU pueden implantar técnicas superescalares que hacen que este tipo de cálculo sea inútil. También me dijeron que el incremento de registros en la CPU se puede hacer en menos de un ciclo de reloj.

¿es cierto?

¿Fue útil?

Solución

No, no de manera confiable. El número de ciclos que se necesita para incrementar un registro puede variar entre los diferentes tipos de procesadores, y también debe incluir la sobrecarga del bucle. En cualquier sistema operativo moderno, tendrá que lidiar con la multitarea preventiva, por lo que no tiene idea de cuánto tiempo de CPU le dará el programador de procesos. Dependiendo de cuánto trabajo estén haciendo otros procesos, puede obtener mucho o poco tiempo de CPU, por lo que el número de incrementos de registro que puede realizar por segundo es muy variable.

Además, en un entorno multinúcleo, los relojes pueden no funcionar a la misma velocidad. Si el planificador mueve su proceso entre núcleos por alguna razón u otra, su frecuencia de reloj podría cambiar de forma impredecible.

Hay formas mucho mejores de obtener la frecuencia de reloj, como preguntarle al sistema operativo (por supuesto, cómo hacerlo varía según el sistema operativo).

Otros consejos

No, no puede usar eso para determinar la velocidad del reloj. No hay garantía de que un registro pueda incrementarse exactamente una vez por reloj.

¿A qué CPU estás apuntando? Hay formas más definidas de determinar la frecuencia de reloj, al menos en x86.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top