MIPS

¿Qué son los MIPS? 

MIPS quiere decir "Millones de Instrucciones Por Segundo".

Muchos están de acuerdo en que es una medida muy subjetiva de la capacidad de procesamiento de un DSP, pero sirve para darse una idea. Pero cuando tomemos en cuenta los MIPS de un DSP, también debemos considerar muchas otras cosas:

Set de instrucciones

De nueva cuenta, depende del tipo de operaciones que queremos hacer. Por poner un ejemplo, si quisiéramos hacer muchas divisiones, pero eligiéramos un micro o DSP que no hace divisiones, nos tomará varias instrucciones para hacer una sola división (a menos, claro, de que las divisiones fueran entre potencias de 2, para lo cual se podrían usar corrimientos).

En los DSPs, normalmente esperamos encontrar la instrucción MAC (multiplicar y sumar). Si nuestro algoritmo la utiliza, encontraremos que nuestro código se vuelve más eficiente.

Adicionalmente, nuestro procesador puede ejecutar instrucciones en paralelo. Esto es posible gracias a que tenga varios buses.

FLOPS y MMACS

FLOPS quiere decir "Floating Point Operations Per Second" (número de operaciones de punto flotante por segundo). Si nuestro DSP no tiene unidad de punto flotante y tenemos que hacer operaciones con punto flotante (estrictamente, no usando pseudo-flotantes), nuestra medición de MIPS es aún más imprecisa.

MMACS se refiere al número (en millones) de instrucciones MAC (multiplicación y suma simultánea). Aunque es un poco menos subjetiva que MIPS, puede haber más factores que afecten el cálculo de este número.

Ciclos por instrucción

En ocasiones un fabricante de DSPs nos dirá que su procesador puede hacer 50 MIPS. Pero una vez que nos fijamos en la hoja de datos, resulta que aunque si puede hacer 50 millones de ciclos de instrucción por segundo, hay instrucciones que toman 2 o más ciclos para ejecutarse. Es decir, que probablemente puede hacer 50 millones de sumas, pero sólo 25 millones de multiplicaciones.

Pipeline

Cuando un procesador tiene pipeline, su medida de MIPS se vuelve mucho más elevada. Sin embargo, cuando el procesador no puede predecir los saltos, éstos logran "vaciar" el pipeline. Esto se traduce en mayor tiempo de espera entre mayor número de saltos.

Hay procesadores que soportan instrucciones retardadas. Si planificamos bien el código, y hacemos buen uso de este tipo de instrucciones, podemos optimizar nuestros saltos para que no desperdicien el pipeline.

Colas circulares

Es muy común en procesamiento de señales tener tablas de coeficientes que debemos estar multiplicando por una señal (ej: convolución en filtros). Para esto, se vuelven muy útiles los procesadores que tienen direccionamiento circular. De nueva cuenta, dependiendo de nuestro algoritmo, la flexibilidad de un DSP de manejar colas circulares puede ahorrar mucho procesamiento.

DMA

¿De qué nos servirían muchos MIPS si tuviéramos que leer individualmente cada dato y moverlos a una localidad de memoria?

Los DMAs suelen trabajar en paralelo con el core; y eso es una gran ventaja.. y una cosa más que no se contempla en los MIPS que da un procesador.

 

[ Regresar