Pierre sèche - Dhrystone

Dhrystone est un programme de référence en calcul synthétique développé en 1984 par Reinhold P. Weicker destiné à être représentatif de la programmation système ( entier ). Le Dhrystone est devenu représentatif des performances générales du processeur ( CPU ). Le nom "Dhrystone" est un jeu de mots sur un algorithme de référence différent appelé Whetstone , qui met l'accent sur les performances en virgule flottante .

Avec Dhrystone, Weicker a rassemblé des métadonnées à partir d'un large éventail de logiciels, y compris des programmes écrits en FORTRAN , PL/1 , SAL, ALGOL 68 et Pascal . Il a ensuite caractérisé ces programmes en termes de diverses constructions communes : appels de procédure, indirections de pointeur , affectations, etc. À partir de là, il a écrit le benchmark Dhrystone pour correspondre à un mélange représentatif. Dhrystone a été publié en Ada , avec la version C pour Unix développée par Rick Richardson ("version 1.1") contribuant grandement à sa popularité.

Dhrystone contre pierre à aiguiser

Le benchmark Dhrystone ne contient aucune opération en virgule flottante , donc le nom est un jeu de mots sur le benchmark Whetstone alors populaire pour les opérations en virgule flottante. La sortie du benchmark est le nombre de Dhrystones par seconde (le nombre d'itérations de la boucle de code principale par seconde).

Whetstone et Dhrystone sont tous deux des références synthétiques , ce qui signifie qu'il s'agit de programmes simples soigneusement conçus pour imiter statistiquement l'utilisation du processeur par un ensemble commun de programmes. Whetstone, développé en 1972, s'efforçait à l'origine d'imiter les programmes typiques d'Algol 60 basés sur des mesures de 1970, mais est finalement devenu le plus populaire dans sa version Fortran, reflétant l'orientation hautement numérique de l'informatique dans les années 1960.

Problèmes traités par Dhrystone

L'importance éventuelle de Dhrystone en tant qu'indicateur des performances à usage général (« entier ») des nouveaux ordinateurs en a fait une cible pour les auteurs de compilateurs commerciaux. Diverses techniques modernes d'analyse de code statique du compilateur (telles que l' élimination du code mort : par exemple, le code qui utilise le processeur mais produit des résultats internes qui ne sont pas utilisés ou générés) rendent l'utilisation et la conception de benchmarks synthétiques plus difficiles. La version 2.0 du benchmark, publiée par Weicker et Richardson en mars 1988, comportait un certain nombre de modifications destinées à déjouer une gamme de techniques de compilateur. Pourtant, il a été soigneusement conçu pour ne pas modifier l'indice de référence sous-jacent. Cet effort pour déjouer les compilateurs n'a été que partiellement couronné de succès. Dhrystone 2.1, sorti en mai de la même année, a subi quelques modifications mineures et, en juillet 2010, reste la définition actuelle de Dhrystone.

Outre les problèmes liés à l'optimisation du compilateur, divers autres problèmes ont été cités avec le Dhrystone. La plupart d'entre eux, y compris la petite taille du code et la petite taille du jeu de données, ont été compris au moment de sa publication en 1984. Plus subtile est la légère surreprésentation des opérations sur les chaînes, qui est en grande partie liée au langage : Ada et Pascal ont tous deux chaînes comme des variables normales dans le langage, alors que C ne le fait pas, donc ce qui était une simple affectation de variables dans les tests de référence est devenu des opérations de copie de tampon dans la bibliothèque C. Un autre problème est que le score rapporté n'inclut pas d'informations essentielles lors de la comparaison de systèmes, telles que le compilateur utilisé et les optimisations.

Dhrystone reste remarquablement résistant en tant que simple référence, mais sa valeur continue pour établir de véritables performances est discutable. Il est facile à utiliser, bien documenté, entièrement autonome, bien compris et peut fonctionner sur presque tous les systèmes. En particulier, il est resté largement utilisé dans le monde de l'informatique embarquée, bien que la suite de benchmarks EEMBC récemment développée , le benchmark autonome CoreMark , HINT, Stream et même Bytemark soient largement cités et utilisés, ainsi que des benchmarks plus spécifiques pour la mémoire. sous-système (Cachebench), TCP/IP (TTCP) et bien d'autres.

Résultats

Dhrystone peut représenter un résultat plus significatif que MIPS (millions d'instructions par seconde) car les comparaisons de nombre d'instructions entre différents jeux d'instructions (par exemple RISC vs. CISC ) peuvent confondre les comparaisons simples. Par exemple, la même tâche de haut niveau peut nécessiter beaucoup plus d'instructions sur une machine RISC, mais peut s'exécuter plus rapidement qu'une seule instruction CISC. Ainsi, le score Dhrystone ne compte que le nombre d'itérations de programme terminées par seconde, permettant aux machines individuelles d'effectuer ce calcul d'une manière spécifique à la machine. Une autre représentation courante du benchmark Dhrystone est le DMIPS (Dhrystone MIPS ) obtenu lorsque le score Dhrystone est divisé par 1757 (le nombre de Dhrystones par seconde obtenu sur le VAX 11/780 , nominalement une machine à 1 MIPS).

Une autre façon de représenter les résultats est en DMIPS/MHz, où le résultat DMIPS est encore divisé par la fréquence du processeur, pour permettre une comparaison plus facile des processeurs fonctionnant à différentes fréquences d'horloge .

Lacunes

Utiliser Dhrystone comme référence comporte des pièges :

  • Il comporte un code inhabituel qui n'est généralement pas représentatif des programmes réels modernes.
  • Il est sensible aux optimisations du compilateur. Par exemple, il effectue de nombreuses copies de chaînes pour tenter de mesurer les performances de copie de chaînes. Cependant, les cordes de Dhrystone sont de longueur constante connue et leurs débuts sont alignés sur des limites naturelles, deux caractéristiques généralement absentes des vrais programmes. Par conséquent, un optimiseur peut remplacer une copie de chaîne par une séquence de mouvements de mots sans aucune boucle, ce qui sera beaucoup plus rapide. Cette optimisation surestime par conséquent les performances du système, parfois de plus de 30 %.
  • La petite taille du code de Dhrystone peut tenir dans le cache d'instructions d'un processeur moderne, de sorte que les performances de récupération des instructions ne sont pas rigoureusement testées. De même, Dhrystone peut également s'intégrer complètement dans le cache de données , n'exerçant ainsi pas les performances d'échec du cache de données. Pour contrer le problème des ajustements dans le cache, le benchmark SPECint a été créé en 1988 pour inclure une suite de (initialement 8) programmes beaucoup plus volumineux (y compris un compilateur) qui ne pouvaient pas tenir dans les caches L1 ou L2 de cette époque.

Voir également

Les références

Liens externes