¿Cómo logran los microcontroladores un rendimiento> 1 MIPS / MHz?

19

Como este , que hace 1.49 DMIPS / MHz. Incluso con la canalización, solo hay 1 etapa de ejecución por ciclo, ¿no?

Federico Russo
fuente
La única cosa superescalar típica en este segmento de microcontroladores es MADD: multiplique y agregue en un solo ciclo. Aunque, no ayuda mucho en Drystone.
BarsMonster
Los DSP son microcontroladores y pueden tener implementaciones de hardware de transformación de Fourier, multiplicación de matrices, etc. ¿También cuentan? ¿Se aplica esta medida aquí? Incluso los DPS muy antiguos podrían realizar 8 multiplicaciones en 16 registros diferentes en una sola instrucción.
vsz
55
Hay mentiras, malditas mentiras y puntos de referencia ...

Respuestas:

18

DMIPS y MIPS no son lo mismo. DMIPS significa "Dhrystone MIPS", y es un estándar para comparar diferentes rendimientos de microcontroladores / microprocesadores en diferentes conjuntos de instrucciones. El estándar ya no es tan nuevo (*), por lo que lo que el procesador de referencia podría hacer a 1 DMIPS / MHz en 1 segundo puede requerir un controlador más avanzado de 670 ms a la misma velocidad de reloj, solo porque hará algunas acciones en 1 instrucción mientras que el otro controlador puede necesitar 2 instrucciones, o una instrucción que requiera más ciclos de máquina.

Una arquitectura de 16 bits, por ejemplo, normalmente tendrá un mejor rendimiento de Dhrystone que una arquitectura de 8 bits, y una de 32 bits, como la que se refiere, aún más.


(*) m.Alin se refiere al benchmark CoreMark más reciente . Tenga en cuenta que esto está escrito en C, por lo que en realidad también está incluyendo el rendimiento del compilador en el resultado (al igual que Dhrystone, BTW).

stevenvh
fuente
Pero los resultados de Dhrystone también dependen del compilador (también está escrito en C), ¿verdad? De Wikipedia: Las partes principales de Dhrystone son susceptibles a la capacidad de un compilador para optimizar el trabajo; por lo tanto, es más un punto de referencia del compilador que un punto de referencia de hardware
m.Alin
1
@ m.Alin - Claro, no quería sugerir lo contrario. Aclararé mi respuesta. Gracias por la respuesta.
stevenvh
10

DMIPS es una medida relativa en lugar de absoluta. A diferencia de MIPS, en realidad mide qué tan rápido el uC puede hacer algo útil en lugar de cuán rápido ejecuta las instrucciones.

Al igual que cualquier punto de referencia, tiene sus limitaciones, pero una forma simple de verlo es qué tan rápido puede completar el código de referencia en comparación con un VAX 11/780 (una máquina de 1 MIPS).
Así, por ejemplo, si su uC completa el punto de referencia 100 veces más rápido que un VAX 11/780, tiene una máquina 100DMIPS. Si funciona a 100MHz, entonces está clasificado a 1 DMIPS / MHz.

Tenga en cuenta que el DMIPS anunciado generalmente es inalcanzable en el uso normal, especialmente en uC grandes con velocidad de flash, captación previa, tiempos de espera / fallas, etc. Aquí hay una buena discusión sobre el rendimiento del DMIPS PIC32. Este enlace tiene un código Dhrystone para microcontroladores.

Oli Glaser
fuente
Su enlace de wikipedia dice que el estándar Drystone ya tiene 28 años. ¿Sabes si hay herramientas de medición de rendimiento más actualizadas? Gracias.
Federico Russo
3
@FedericoRusso CoreMark
m.Alin
@FedericoRusso: Lo que pasa con la medición del rendimiento es que es comparativo. Si cambia su método de comparación, todos los resultados existentes se vuelven inútiles. De ahí la longevidad de Dhrystone.
Clifford