Dhrystone es un programa de evaluación comparativa de computación sintética desarrollado en 1984 por Reinhold P. Weicker con el objetivo de ser representativo de la programación de sistemas ( enteros ). Dhrystone evolucionó hasta convertirse en un indicador del rendimiento general del procesador ( CPU ). El nombre "Dhrystone" es un juego de palabras con otro algoritmo de evaluación comparativa llamado Whetstone , que se centra en el rendimiento de punto flotante . [ 1 ]
Con Dhrystone, Weicker recopiló metadatos de una amplia gama de software, incluyendo programas escritos en FORTRAN , PL/1 , SAL, ALGOL 68 y Pascal . A continuación, caracterizó estos programas en función de diversas construcciones comunes: llamadas a procedimientos, indirecciones de punteros , asignaciones, etc. Con base en esto, creó el benchmark Dhrystone para que correspondiera a una muestra representativa. Dhrystone se publicó en Ada , y la versión en C para Unix desarrollada por Rick Richardson ("versión 1.1") contribuyó enormemente a su popularidad.
Dhrystone contra Whetstone
La prueba de rendimiento Dhrystone no incluye operaciones de coma flotante , por lo que su nombre es un juego de palabras con la popular prueba Whetstone, también conocida por sus operaciones de coma flotante. El resultado de la prueba es el número de Dhrystones por segundo (el número de iteraciones del bucle principal del código por segundo).
Tanto Whetstone como Dhrystone son pruebas de rendimiento sintéticas , lo que significa que son programas sencillos diseñados cuidadosamente para imitar estadísticamente el uso del procesador de un conjunto común de programas. Whetstone, desarrollado en 1972, originalmente buscaba imitar los programas típicos de Algol 60 basándose en mediciones de 1970, pero finalmente se hizo más popular en su versión Fortran, lo que refleja la marcada orientación numérica de la informática en la década de 1960.
Cuestiones abordadas por Dhrystone
La importancia que Dhrystone adquirió como indicador del rendimiento de propósito general ("entero") de las nuevas computadoras lo convirtió en un objetivo para los desarrolladores de compiladores comerciales . Diversas técnicas modernas de análisis estático de código de compiladores (como la eliminación de código muerto : por ejemplo, código que utiliza el procesador pero produce resultados internos que no se utilizan ni se muestran) dificultan el uso y el diseño de benchmarks sintéticos. La versión 2.0 del benchmark, publicada por Weicker y Richardson en marzo de 1988, presentaba varios cambios destinados a frustrar diversas técnicas de compilación. Sin embargo, fue cuidadosamente diseñada para no alterar el benchmark subyacente. Este esfuerzo por frustrar a los compiladores solo tuvo un éxito parcial. Dhrystone 2.1, publicado en mayo del mismo año, presentaba algunos cambios menores y, a partir de julio de 2010, sigue siendo la definición actual de Dhrystone.
Además de los problemas relacionados con la optimización del compilador, se han señalado otros inconvenientes en Dhrystone. La mayoría de ellos, como el reducido tamaño del código y del conjunto de datos , se comprendían en el momento de su publicación en 1984. Un aspecto más sutil es la ligera sobrerrepresentación de operaciones con cadenas, que se debe principalmente al lenguaje: tanto Ada como Pascal utilizan cadenas como variables normales, mientras que C no, por lo que lo que en las pruebas de rendimiento de referencia se consideraba una simple asignación de variables se convertía en una operación de copia de búfer en la biblioteca de C. Otro problema es que la puntuación obtenida no incluye información crucial para comparar sistemas, como el compilador utilizado y las optimizaciones aplicadas.
Dhrystone sigue siendo una herramienta de evaluación comparativa notablemente sólida, pero su utilidad para determinar el rendimiento real es cuestionable. Es fácil de usar, está bien documentado, es completamente autónomo, se comprende bien y puede funcionar en casi cualquier sistema. En particular, se ha mantenido ampliamente utilizado en el mundo de la informática embebida, aunque la suite de pruebas comparativas EEMBC , la prueba independiente CoreMark , HINT, Stream e incluso Bytemark se citan y utilizan con frecuencia, así como pruebas más específicas para el subsistema de memoria (Cachebench), TCP/IP (TTCP) y muchas otras.
Resultados
Dhrystone puede representar un resultado de manera más significativa que MIPS (millones de instrucciones por segundo) porque las comparaciones del número de instrucciones entre diferentes conjuntos de instrucciones (por ejemplo, RISC frente a CISC ) pueden confundir las comparaciones simples. Por ejemplo, la misma tarea de alto nivel puede requerir muchas más instrucciones en una máquina RISC, pero podría ejecutarse más rápido que una sola instrucción CISC. Por lo tanto, la puntuación Dhrystone solo cuenta el número de iteraciones completadas del programa por segundo, lo que permite que cada máquina realice este cálculo de una manera específica. Otra representación común del benchmark Dhrystone es el DMIPS (Dhrystone MIPS ) que se obtiene cuando la puntuación Dhrystone se divide por 1757 (el número de Dhrystones por segundo obtenidos en el VAX 11/780 , nominalmente una máquina de 1 MIPS).
Otra forma de representar los resultados es en DMIPS/MHz, donde el resultado en DMIPS se divide además por la frecuencia de la CPU, para facilitar la comparación de CPUs que funcionan a diferentes velocidades de reloj . Esta es, en efecto, una versión independiente de la arquitectura de las instrucciones por ciclo .
deficiencias
Utilizar Dhrystone como referencia tiene sus inconvenientes:
- Presenta un código inusual que no suele ser representativo de los programas modernos. [ 2 ]
- Es susceptible a las optimizaciones del compilador. Por ejemplo, realiza muchas copias de cadenas en un intento de medir el rendimiento de la copia de cadenas. Sin embargo, las cadenas en Dhrystone tienen una longitud constante conocida y sus inicios están alineados en límites naturales, dos características que generalmente no se encuentran en los programas reales. Por lo tanto, un optimizador puede reemplazar una copia de cadena con una secuencia de movimientos de palabras sin bucles, lo que será mucho más rápido. En consecuencia, esta optimización sobreestima el rendimiento del sistema, a veces en más del 30 %. [ 3 ]
- El pequeño tamaño del código de Dhrystone puede caber en la caché de instrucciones de una CPU moderna, por lo que el rendimiento de la búsqueda de instrucciones no se prueba rigurosamente. [ 2 ] De manera similar, Dhrystone también puede caber completamente en la caché de datos , por lo que no se evalúa el rendimiento de los fallos de caché de datos. Para contrarrestar el problema de que quepa en la caché, se creó el benchmark SPECint en 1988 para incluir un conjunto (inicialmente 8) de programas mucho más grandes (incluido un compilador) que no podían caber en las cachés L1 o L2 de esa época.
Véase también
Referencias
- ↑ Juego de palabras : w h etstone → wet stone → dry stone → d h rystone.
- 1 2 Weiss, Alan. "Dhrystone Benchmark: Historia, análisis, "puntuaciones" y recomendaciones" (PDF) . Archivado (PDF) del original el 26 de julio de 2011. Recuperado el 28 de abril de 2020 .
- ↑ Franco Zappa (2017). Microcontroladores: Hardware y Firmware para dispositivos de 8 y 32 bits . Società Editrice Esculapio. pag. 66.ISBN 978-88-9385-022-3.
Enlaces externos
- Weicker, Reinhold (octubre de 1984). "Dhrystone: un banco de pruebas sintético para la programación de sistemas" . Communications of the ACM . 27 (10): 1013–30 . doi : 10.1145/358274.358283 . S2CID 9026014 .
- Dhrystone Benchmark: Fundamentos de la versión 2 y reglas de medición (Reinhold P. Weicker, 1988)
- Programa de referencia DHRYSTONE (Reinhold P. Weicker, 1995)
- Puntos de referencia (informática)
- Introducciones relacionadas con la informática en 1984