Comment les microcontrôleurs atteignent-ils des performances> 1 MIPS / MHz?

19

Comme celui-ci , qui fait 1,49 DMIPS / MHz. Même avec le pipelining, il n'y a toujours qu'une seule étape d'exécution par cycle, n'est-ce pas?

Federico Russo
la source
La seule chose superscalaire typique dans ce segment de microcontrôleur est MADD - multiplier et ajouter en un seul cycle. Bien que cela n'aide pas beaucoup dans Drystone.
BarsMonster
Les DSP sont des microcontrôleurs et peuvent avoir des implémentations matérielles de transformation de Fourier, de multiplication de tableaux, etc. Cette mesure s'applique-t-elle ici? Même les très anciens DPS pouvaient effectuer 8 multiplications sur 16 registres différents en une seule instruction.
vsz
5
Il y a des mensonges, des putains de mensonges et des repères ...

Réponses:

18

DMIPS et MIPS ne sont pas identiques. DMIPS signifie "Dhrystone MIPS", et c'est une norme pour comparer les performances de différents microcontrôleurs / microprocesseurs à travers différents jeux d'instructions. La norme n'est plus si nouvelle (*), donc ce que le processeur de référence pourrait faire à 1 DMIPS / MHz en 1 seconde peut prendre un contrôleur plus avancé de 670 ms à la même vitesse d'horloge, juste parce qu'il fera certaines actions en 1 instruction tandis que l'autre contrôleur peut nécessiter 2 instructions, ou une instruction nécessitant plus de cycles machine.

Une architecture 16 bits, par exemple, aura généralement de meilleures performances Dhrystone qu'une architecture 8 bits, et une 32 bits, comme celle à laquelle vous faites référence, encore plus.


(*) m.Alin fait référence au benchmark CoreMark le plus récent . Notez que cela est écrit en C, donc en fait, vous incluez également les performances du compilateur dans le résultat (tout comme Dhrystone, BTW).

Stevenvh
la source
Mais les résultats de Dhrystone dépendent également du compilateur (il est également écrit en C), non? Extrait de Wikipédia: des portions importantes de Dhrystone sont susceptibles de permettre au compilateur d'optimiser le travail; c'est donc plus un benchmark du compilateur qu'un benchmark matériel
m.Alin
1
@ m.Alin - Bien sûr, je ne voulais pas suggérer le contraire. Je vais clarifier ma réponse. Merci pour les commentaires.
stevenvh
10

Le DMIPS est une mesure relative plutôt qu'absolue. Contrairement à MIPS, il mesure la vitesse à laquelle l'UC peut faire quelque chose d'utile au lieu de la vitesse à laquelle il exécute les instructions.

Comme tout benchmark, il a ses limites, mais une façon simple de le voir est la rapidité avec laquelle il peut compléter le code de référence par rapport à un VAX 11/780 (une machine de 1 MIPS)
.Par exemple, si votre uC complète le benchmark 100 fois plus rapidement qu'un VAX 11/780, vous avez une machine 100DMIPS. S'il fonctionne à 100 MHz, il est évalué à 1 DMIPS / MHz.

Notez que le DMIPS annoncé est généralement inaccessible en utilisation normale, en particulier sur les grandes uC avec vitesse de flash, prefetch, temps d'attente / échecs, etc. Voici une bonne discussion des performances du PIC32 DMIPS. Ce lien contient du code Dhrystone pour les microcontrôleurs.

Oli Glaser
la source
Votre lien wikipedia indique que la norme Drystone a déjà 28 ans. Savez-vous s'il existe des outils de mesure des performances plus récents? Merci.
Federico Russo
3
@FedericoRusso CoreMark
m.Alin
@FedericoRusso: La chose au sujet de la mesure du rendement est qu'elle est comparative. Si vous modifiez votre méthode de comparaison, tous les résultats existants sont rendus inutiles. D'où la longévité de la Dhrystone.
Clifford