Piedra seca
Dhrystone es un programa de referencia de computación sintética desarrollado en 1984 por Reinhold P. Weicker con la intención de ser representativo de la programación de sistemas (enteros). El Dhrystone creció hasta convertirse en un representante del rendimiento general del procesador (CPU). El nombre "Dhrystone" es un juego de palabras con un algoritmo de referencia diferente llamado Whetstone (juego de palabras explicado: whet-stone = wet-stone | dhry-stone = dry-stone), que enfatiza el rendimiento de punto flotante.
Con Dhrystone, Weicker reunió metadatos de una amplia gama de software, incluidos programas escritos en FORTRAN, PL/1, SAL, ALGOL 68 y Pascal. Luego caracterizó estos programas en términos de varias construcciones comunes: llamadas a procedimientos, direcciones indirectas de punteros, asignaciones, etc. A partir de esto, escribió el punto de referencia Dhrystone para corresponder a una combinación representativa. Dhrystone se publicó en Ada, con la versión C para Unix desarrollada por Rick Richardson ("versión 1.1") que contribuyó en gran medida a su popularidad.
Piedra seca contra piedra de afilar
El punto de referencia Dhrystone no contiene operaciones de punto flotante, por lo que el nombre es un juego de palabras con el entonces popular punto de referencia Whetstone para operaciones de punto flotante. El resultado del punto de referencia es el número de Dhrystones por segundo (el número de iteraciones del bucle de código principal por segundo).
Tanto Whetstone como Dhrystone son puntos de referencia sintéticos, lo que significa que son programas simples que están cuidadosamente diseñados para imitar estadísticamente el uso del procesador de algún conjunto común de programas. Whetstone, desarrollado en 1972, se esforzó originalmente por imitar los programas típicos de Algol 60 basados en mediciones de 1970, pero finalmente se hizo más popular en su versión Fortran, lo que refleja la orientación altamente numérica de la informática en la década de 1960.
Problemas abordados por Dhrystone
La eventual importancia de Dhrystone como indicador del rendimiento de propósito general ('entero') de las nuevas computadoras lo convirtió en un objetivo para los escritores de compiladores comerciales. Varias técnicas modernas de análisis de código estático del compilador (como la eliminación de código muerto: por ejemplo, código que usa el procesador pero produce resultados internos que no se usan o no se emiten) dificultan el uso y el diseño de puntos de referencia sintéticos. La versión 2.0 del benchmark, lanzada por Weicker y Richardson en marzo de 1988, tenía una serie de cambios destinados a frustrar una variedad de técnicas de compilación. Sin embargo, fue diseñado cuidadosamente para no cambiar el índice de referencia subyacente. Este esfuerzo por frustrar a los compiladores solo tuvo un éxito parcial. Dhrystone 2.1, lanzado en mayo del mismo año, tuvo 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 citado varios otros problemas con Dhrystone. La mayoría de estos, incluido el tamaño pequeño del código y el tamaño pequeño del conjunto de datos, se entendieron en el momento de su publicación en 1984. Más sutil es la ligera sobrerrepresentación de las operaciones de cadenas, que está en gran medida relacionada con el lenguaje: tanto Ada como Pascal tienen cadenas como variables normales en el lenguaje, mientras que C no lo hace, por lo que lo que era una simple asignación de variables en los puntos de referencia de referencia se convirtió en operaciones de copia de búfer en la biblioteca C. Otro problema es que el puntaje informado no incluye información que es crítica al comparar sistemas, como qué compilador se usó y qué optimizaciones.
Dhrystone sigue siendo notablemente resistente como un simple punto de referencia, pero su valor continuo para establecer un rendimiento real es cuestionable. Es fácil de usar, está bien documentado, es completamente autónomo, se entiende bien y puede funcionar en casi cualquier sistema. En particular, se ha mantenido en uso generalizado en el mundo de la computación integrada, aunque la suite de evaluación comparativa EEMBC recientemente desarrollada, la evaluación comparativa independiente CoreMark, HINT, Stream e incluso Bytemark son ampliamente citados y utilizados, así como evaluaciones comparativas más específicas para la memoria. subsistema (Cachebench), TCP/IP (TTCP) y muchos otros.
Resultados
Dhrystone puede representar un resultado de manera más significativa que MIPS (millones de instrucciones por segundo) porque las comparaciones de recuento 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 puede ejecutarse más rápido que una sola instrucción CISC. Por lo tanto, la puntuación de Dhrystone solo cuenta el número de iteraciones completadas del programa por segundo, lo que permite que las máquinas individuales realicen este cálculo de una manera específica de la máquina. Otra representación común del punto de referencia de Dhrystone es el DMIPS (Dhrystone MIPS) que se obtiene cuando la puntuación de Dhrystone se divide por 1757 (la cantidad de Dhrystones por segundo obtenida 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 de DMIPS se divide aún más por la frecuencia de la CPU, para permitir una comparación más sencilla de las CPU que se ejecutan a diferentes frecuencias de reloj.
Deficiencias
Usar Dhrystone como punto de referencia tiene sus inconvenientes:
- Cuenta con un código inusual que no suele ser representativo de los programas modernos de la vida real.
- Es susceptible a las optimizaciones del compilador. Por ejemplo, hace mucha copia de cadena en un intento de medir el rendimiento de copia de cadena. Sin embargo, las cuerdas en Dhrystone son de longitud constante conocida y sus inicios están alineados en límites naturales, dos características generalmente ausentes de programas reales. Por lo tanto, un optimizador puede reemplazar una copia de cadena con una secuencia de movimientos de palabras sin bucles, que será mucho más rápido. Por consiguiente, esta optimización exagera el rendimiento del sistema, a veces en más del 30%.
- El pequeño tamaño de código de Dhrystone puede caber en el caché de instrucciones de una CPU moderna, de modo que el rendimiento de la instrucción de captura no se prueba rigurosamente. Del mismo modo, Dhrystone también puede encajar completamente en el caché de datos, por lo que no hace falta el rendimiento del caché de datos. Para contrarrestar el problema de ajuste-en-la-cache, el parámetro SPECint se creó en 1988 para incluir un conjunto de (inicialmente 8) programas mucho más grandes (incluyendo un compilador) que no podían encajar en los caches L1 o L2 de esa era.
Contenido relacionado
Ceceo común
XML
KOMPILER