Pregunta

Se me ha pedido recientemente a la producida MIPS (millones de instrucciones por segundo) para un algoritmo que hemos desarrollado. El algoritmo está expuesto por un conjunto de funciones de estilo C. Tenemos ejercer el código en un Dell Axim para comparar el rendimiento en diferentes entrada.

Esta pregunta vino de nuestro proveedor de hardware, pero yo soy sobre todo un desarrollador de software HL así que no estoy seguro de cómo responder a la solicitud. Tal vez alguien con similares antecedentes HW / SW puede ayudar ...

  1. Dado que nuestro algoritmo no es en tiempo real, no creo que necesitamos cuantificarlo como MIPS. ¿Es posible, simplemente indique el número total de instrucciones de montaje?

  2. Si 1 es cierto, ¿cómo se hace esto (es decir. La forma de medir el número de instrucciones de montaje) ya sea en general o específicamente para ARM / XScale?

  3. Puede 2 ser realizado en un dispositivo de WM o vía el emulador de dispositivos proporcionado en VS2005?

  4. Can 3 automatizarse?

Muchas gracias por su ayuda. Charles


Gracias por toda su ayuda. Creo S. Lott ha puesto el dedo. Y como seguimiento, ahora tengo más preguntas.

5 Cualquier sugerencia sobre cómo hacer para medir MIPS? Oí que alguien sugiera el funcionamiento de nuestro algoritmo y compararla contra Dhrystone / piedra de afilar de referencia para el cálculo de MIS.

6 Dado que el algoritmo no necesita ser ejecutado en tiempo real, es MIPS realmente una medida útil? (Por ejemplo. Factorial (N)) ¿Cuáles son otros aspectos a la cantidad de los requisitos de procesamiento? (Ya he medido el rendimiento de ejecución, pero no fue una respuesta satisfactoria.)

7 Por último, supongo MIPS es una estimación aproximada y sería dep. el compilador, los ajustes de optimización, etc?

¿Fue útil?

Solución

apuesto a que su proveedor de hardware está pidiendo el número de MIPS que necesita.

Al igual que en "¿Necesita un procesador MIPS 1000 o un procesador MIPS 2000?"

Lo que se traduce por la dirección en "¿Cuántos MIPS?"

Equipamiento ofrece MIPS. Software consume MIPS.

Usted tiene dos grados de libertad.

  • inherentes oferta MIPS del procesador.

  • El número de segundos durante los cuales se consumen que muchos MIPS.

Si el procesador no tiene suficiente MIPS, el algoritmo será "lento".

si el procesador tiene suficiente MIPS, el algoritmo será "rápida".

pongo "rápido" y "lento" entre comillas porque es necesario tener un requisito de desempeño para determinar "lo suficientemente rápido como para satisfacer el requisito de rendimiento" o "demasiado lento para cumplir con el requisito de rendimiento."

En un procesador MIPS 2000, que podría tener un nivel aceptable de 2 segundos. Pero en un procesador 1000 MIPS este explota a una inaceptables 4 segundos.


¿Cuántas MIPS necesita?

  1. Obtener las MIPS oficiales para su procesador. Ver http://en.wikipedia.org/wiki/Instructions_per_second

  2. Ejecutar el algoritmo en algunos datos.

  3. Medir el tiempo de servicio exacto. Promediar un montón de muestras para reducir la incertidumbre.

  4. Informe. 3 segundos en un procesador de 750 MIPS es - bien - 3 segundos a 750 MIPS. MIPS es una tasa. El tiempo es el tiempo. Distancia es el producto de la frecuencia * tiempo. 3 segundos a 750 MIPS es 750 * 3 millones de instrucciones.

Recuerde Rate (en instrucciones por segundo) * Tiempo (en segundos) le da instrucciones.

No dicen que es 3 * 750 MIPS. No lo es; es de 2250 millones de instrucciones.

Otros consejos

Algunas notas:

  1. MIPS se utiliza a menudo como una medida general "capacidad" para los procesadores, especialmente en el campo en tiempo real / incrustado suave en la que usted quiere asegurarse de que no sobrecargar un procesador con el trabajo. Tenga en cuenta que esto es de instrucciones por segundo, ya que el tiempo es muy importante!

  2. MIPS usa de esta manera es muy poco científica.

  3. MIPS utilizados de esta manera es todavía a menudo la mejor aproximación existe para el dimensionamiento de un sistema y la determinación de la velocidad del procesador. Es muy posible que se pierda en un 25%, pero no importa ...

  4. Contando MIPS requiere un procesador que está cerca de lo que está utilizando. El conjunto de instrucciones adecuado es obviamente crucial para capturar el flujo de instrucciones real del compilador real en uso.

No se puede de ninguna manera aproximarse a esto en un PC. Es necesario llevar a cabo una de las pocas herramientas para hacer esto bien:

  1. Utilice un simulador de juego de instrucciones para el archicture objetivo tal como Qemu, propias herramientas de ARM, Synopsys, CoWare, Virtutech, o amplios. Estos son rápidos, pero pueden contar con instrucciones bastante bien, y apoyarán el conjunto de instrucciones derecha. Salvo un amplio uso de las instrucciones caros como división entera (y por favor no coma flotante), estos números tienden a ser útilmente cerca.

  2. Encuentra un simulador precisa del ciclo de reloj del procesador objetivo (o algo parecido), lo que dará bastante buena estimación de los efectos de tuberías, etc. Una vez más, obtener de brazo, de carbono SoCDesigner.

  3. Obtener una placa de desarrollo para la familia de procesadores que se dirigen, o un brazo cerca de ella el diseño, y el perfil de la aplicación allí. No utiliza un ARM9 de perfil para un ARM11, sino un ARM11 podría ser una buena aproximación para un ARM Cortex-A8 / A9 por ejemplo.

MIPS se usa generalmente para medir la capacidad de un procesador.

Los algoritmos suelen tener ya sea:

  1. una cierta cantidad de tiempo (cuando se ejecuta en un cierto procesador)
  2. un cierto número de instrucciones (dependiendo de la arquitectura)

Al describir un algoritmo en términos de instrucciones por segundo parecería una medida extraña, pero por supuesto no sé lo que hace su algoritmo.

Para llegar a una medida significativa, sugeriría que se configura una prueba que le permite medir el tiempo medio necesario para su algoritmo para completar. Número de instrucciones de montaje sería una medida razonable, pero puede ser difícil de contarlos! Su mejor apuesta es algo como esto (pseudo-código):

const num_trials = 1000000
start_time = timer()
for (i = 1 to num_trials)
{
    runAlgorithm(randomData)
}
time_taken = timer() - start_time
average_time = time_taken / num_trials

MIPS son una medida de la velocidad de la CPU, no el rendimiento algoritmo. Sólo puedo asumir el algún momento, alguien está un poco confundido. ¿Qué están tratando de averiguar? El único escenario probable es que se me ocurre es que están tratando de ayudar a determinar qué tan rápido un procesador que necesitan para darle a ejecutar su programa de manera satisfactoria.

Ya que se puede medir un algoritmo en el número de instrucciones (que es, sin duda, va a depender de los datos de entrada, por lo que este no es trivial), este caso es necesario un cierto grado de tiempo con el fin de obtener MIPS - por ejemplo, , decir "necesito invocar 1000 veces por segundo". Si el algoritmo es de 1000 instrucciones para ese caso en particular, que va a terminar con:

1000 instructions / (1/1000) seconds = 1000000 instructions per second = 1 MIPS.

Todavía pienso que es una manera muy extraña para tratar de hacer las cosas, por lo que puede pedir una aclaración. En cuanto a sus preguntas específicas, lo dejo a alguien más familiarizado con Visual Studio.

Asimismo, recuerda que diferentes compiladores y opciones del compilador hacen una gran diferencia. El mismo código fuente puede funcionar a muchas velocidades diferentes. Así que en lugar de comprar el procesador 2mips es posible que pueda utilizar el procesador de 1 / 2mips y utilizar una opción del compilador. O gastar el dinero en una mejor compilador y utilizar el procesador más barato.

La evaluación comparativa es deficiente en el mejor. Como hobby he usado para compilar el código mismo dhrystone (y piedra de afilar) en varios compiladores de varios fabricantes para el mismo hardware y los números eran todo el lugar, órdenes de magnitud. código fuente misma mismo procesador, dhrystone no significan una cosa, no es útil como punto de partida. Lo que importa en la evaluación comparativa es la rapidez con que hace su carrera algoritmo, más vale que sea tan rápido o más de lo necesario. Dependiendo de qué tan cerca de la línea de meta que se permite para un montón de decantación. Temprano en el probablemente querrá estar en ejecución 5 o 10 o 100 veces más rápido de lo que necesita para que al final del proyecto tiene por lo menos un poco más rápido de lo que necesita ser.

Estoy de acuerdo con lo que pienso S. Lott está diciendo, esto es todas las ventas y de marketing y gestión de charla. Siendo la que la gestión ha puesto entre la espada y la pared, entonces lo que hay que hacer es llegar a comprar el procesador más rápido y mejores herramientas que están dispuestos a gastar en base a los gráficos circulares y gráficos de colores que se van a generar a partir de aire como justificación. Si cerca del final del camino doesnt bastante satisfacer el rendimiento, entonces se podría volver a stackoverflow, pero al mismo tiempo de gestión se verá obligado a comprar un conjunto de herramientas diferentes en casi todos los procesadores de precios o de intercambio y respin la junta. Por entonces usted debe saber qué tan cerca de la meta eres, necesitamos 1,0 y estamos a 1,25 si compramos el procesador que es el doble de rápido que el uno compramos debemos hacerlo.

Si o no puede automatizar este tipo de cosas o simular ellas depende de las herramientas, a veces sí, a veces no. No estoy familiarizado con las herramientas de las que está hablando, así que no puedo hablar con ellos directamente.

Esta respuesta no pretende responder a la pregunta directamente, sino de proporcionar un contexto adicional en torno a por qué hacen esta pregunta.

MIPS para un algoritmo sólo es relevante para los algoritmos que necesitan para responder a un evento dentro del tiempo requerido.

Por ejemplo, considere un controlador diseñado para detectar la velocidad del viento y mover el actuador dentro de un segundo cuando la velocidad del viento cruza más de 25 millas / hora. Digamos que se necesita 1000 instrucciones para calcular y comparar la velocidad del viento con el umbral. El requisito de MIPS para este algoritmo es 1 kilo instrucciones por segundo (kips). Si el controlador se basa en 1 procesador MIPS, que cómodamente se puede decir que hay más jugo en el controlador para agregar otras funciones.

¿Qué otras funciones se podrían añadir en el controlador? Eso depende de las MIPS de la función / algoritmo para ser añadido. Si hay otra función que necesita 100.000 instrucciones para llevar a cabo dentro de un segundo (es decir, 100 kips), aún podemos dar cabida a esta nueva función y todavía tienen algo de espacio para otras funciones para añadir.

Para una primera estimación de un punto de referencia en el PC puede ser útil.

Sin embargo, antes de comprometerse a una frecuencia de reloj del dispositivo y específica que debería obtener un tablero de desarrollador (o algún PDA?) Para la arquitectura ARM y destino de referencia allí.

Hay muchos factores que influyen en la velocidad de las máquinas de hoy (caching, tuberías, diferentes conjuntos de instrucciones, ...) por lo que sus puntos de referencia en un ordenador pueden lejos w.r.t. la ARM.

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