2010-04-23 8 views
9

Estoy tratando de encontrar una referencia para aproximadamente cuántos ciclos de CPU requieren varias operaciones.Número aproximado de ciclos de CPU para varias operaciones

No necesito números exactos (ya que esto va a variar entre las CPU) pero me gustaría algo relativamente creíble que da cifras de estadio que podría citar en la discusión con amigos.

Como ejemplo, todos sabemos que la división de coma flotante requiere más ciclos de CPU que, por ejemplo, hacer una transferencia de bits.

Supongo que la diferencia es que la división es de alrededor de 100 ciclos, donde como un cambio es 1, pero estoy buscando algo que citar para respaldar eso.

¿Alguien puede recomendar tal recurso?

+2

¿Qué procesador? – nos

Respuesta

1

Esto dependerá del hardware. Lo mejor que puede hacer es ejecutar algunos puntos de referencia en el hardware particular que desea probar.

Un punto de referencia iría más o menos así:

  • Ejecutar una operación primitiva un millón de veces (por ejemplo, la adición de dos números enteros)
  • registrar el tiempo que se tardó en ejecutar (por ejemplo, en segundos)
  • Multiplique por el número de ciclos que su máquina ejecuta por segundo; esto le dará el número total de ciclos gastados.
  • Dividir 1000000 por el número del paso anterior; esto le dará el número de instrucciones por ciclo. Tenga en cuenta que con la canalización, esto podría ser inferior a 1.
3

Para los procesadores x86, consulte Intel® 64 and IA-32 Architectures Optimization Reference Manual, probablemente Apéndice C.

Sin embargo, no es de ninguna manera fácil de averiguar el número de ciclos de una la instrucción tarda en ejecutarse en un procesador x86 moderno, ya que depende demasiado de, por ejemplo, acceder a datos en caché, acceso alineado, si la predicción de bifurcación falla, si hay un bloqueo en la canalización de instrucciones y un montón de otras cosas.

4

Hice una pequeña aplicación para probar esto. Una aplicación muy aproximada usando SynthMaker edición gratuita ... e es para vacío, los números son muy aprox ciclos

divide|e:115|10 
    mult|e: 48|10 
    add|e: 48|10 
    subs|e: 50|10 
compare>|e: 50|10 
    sin|e:135:10 

Las lecturas en el analizador ciclo varían tremendamente de 50 a 100, por lo general simple o doble de la cantidad esperada, Estas son figuras que representan promedios, el analizador de ciclos es una herramienta muy tosca, pero da resultados justos, un exponente de usuario provisional codificado en ASM que calcula tanto la exp como la base a una velocidad de audio de, por ejemplo, alrededor de 800 ciclos, así que Diría que las cifras anteriores están cerca de al menos 50 por ciento. ¡Pensé que la división era mucho más! Parece casi el doble. Si quieres que el archivo que he creado se ejecute en la versión gratuita de SM envíame un correo electrónico, iba a guardar un archivo ejecutable, por eso lo hice pero no puedes guardarlo en la versión gratuita. No voy a codificarlo desde el cuadrado en la versión 1.17:/ ant.stewart en el lugar yahoo dotty com.

Cuestiones relacionadas