Pourquoi les appareils relativement simples tels que les microcontrôleurs sont-ils tellement plus lents que les processeurs?


25

Étant donné le même nombre d'étages de pipeline et le même noeud de fabrication (disons, 65 nm) et la même tension, les appareils simples devraient fonctionner plus rapidement que les plus compliqués. De plus, la fusion de plusieurs étapes de pipeline en une seule ne devrait pas ralentir d'un facteur plus important que le nombre d'étapes.

Prenez maintenant un processeur vieux de cinq ans, exécutant 14 étages de pipeline à 2,8 GHz. Supposons que l'on fusionne les étapes; cela ralentirait en dessous de 200 MHz. Augmentez maintenant la tension et réduisez le nombre de bits par mot; cela accélérerait les choses.

C'est pourquoi je ne comprends pas pourquoi de nombreux microcontrôleurs actuellement fabriqués, tels que AVL, fonctionnent à une vitesse abyssale (comme 20 MHz à 5 V), même si les processeurs beaucoup plus compliqués fabriqués il y a des années étaient capables de fonctionner 150 fois plus vite, ou 10 fois plus vite si vous regroupez toutes les étapes du pipeline en une seule, à 1,2 V-ish. Selon les calculs les plus grossiers de l'arrière de l'enveloppe, les microcontrôleurs, même s'ils sont fabriqués à l'aide d'une technologie obsolète limite, devraient fonctionner au moins 10 fois plus rapidement à un quart de la tension avec laquelle ils sont alimentés.

D'où la question: quelles sont les raisons de la lenteur des fréquences d'horloge du microcontrôleur?


8
Une bonne partie des microcontrôleurs sont fabriqués avec une technologie obsolète limite car l'usine est payante.
Matt Young

18
Puissance. Tenez compte de la consommation d'énergie des deux processeurs et ils seront assez proches des mêmes performances / watts, ou le micro gagnera.
Brian Drummond

34
L'idée qu'un simple == plus rapide est tout simplement faux. Une grande partie de la complexité d'un processeur cisc moderne se trouve dans des fonctionnalités pour le rendre plus rapide, comme les caches à plusieurs niveaux, les pipelines et la prédiction de branche
PlasmaHH

1
ce vieux processeur ne fonctionne pas à partir d'une petite batterie pendant des mois / années. utilisé la technologie de pointe (lire: cher) pour son époque. Je n'ai pas eu à attendre un flash lent / bon marché pour chaque instruction. il est rarement nécessaire qu'un mcu fonctionne rapidement, ils peuvent prendre un nouveau verilog pour le bien des développeurs et l'implémenter sur n'importe quelle fonderie. J'aime le mieux le vélo contre la voiture de formule 1, je pense que cela résume.
old_timer

14
20 MHz n'est pas du tout lent. Nous sommes simplement choyés par des vitesses de GHz pour les PC, où la plupart des ressources sont utilisées pour le rendu de graphiques sophistiqués. Vous pouvez voler vers la Lune avec un processeur Kilohertz ...
vsz

Réponses:


66

Il y a d'autres facteurs qui contribuent à la vitesse.

  • Mémoire: les performances réelles sont souvent limitées par la latence de la mémoire. Les processeurs Intel ont de grands caches pour compenser cela. Les microcontrôleurs ne le font généralement pas. La mémoire flash est beaucoup plus lente que la DRAM.

  • Consommation d'énergie: c'est souvent un gros problème dans les applications embarquées. Les processeurs Intel à 200 MHz réels consommaient plus de 10 watts (souvent beaucoup plus) et avaient besoin d'un grand dissipateur de chaleur et d'un ventilateur. Cela prend de l'espace et de l'argent, sans compter la logique externe et la mémoire qui l'accompagnaient. Un AVR 20 MHz prend environ 0,2 watts, ce qui comprend tout ce dont vous avez besoin. Cela est également lié au processus - les transistors plus rapides ont tendance à être plus étanches.

  • Conditions de fonctionnement: Comme le souligne Dmitry dans les commentaires, de nombreux microcontrôleurs peuvent fonctionner sur une large plage de tension et de température. Cet ATMega que j'ai mentionné ci-dessus fonctionne de -40C à 85C, et peut être stocké à n'importe quoi de -65C à 150C. (Les autres microcontrôleurs fonctionnent jusqu'à 125C ou même 155C.) La tension VCC peut aller de 2,7 V à 5,5 V (5 V +/- 10% pour des performances de pointe). Cette fiche technique du Core i7 est difficile à lire car elle réduit le VCC autorisé pendant la fabrication, mais les tolérances de tension et de température sont certainement plus étroites - ~ 3% de tolérance de tension et 105C max de température de jonction. (5C minimum, mais lorsque vous tirez> 100 ampères, les températures minimales ne sont pas vraiment un problème.)

  • Nombre de portes: Simpler n'est pas toujours plus rapide. Si c'était le cas, Intel n'aurait pas besoin d'architectes CPU! Ce n'est pas seulement un pipeline; vous avez également besoin de choses comme un FPU haute performance. Cela fait grimper le prix. Beaucoup de MCU bas de gamme ont des processeurs uniquement entiers pour cette raison.

  • Budget de la zone de matrice: les microcontrôleurs doivent intégrer de nombreuses fonctionnalités dans une matrice, qui inclut souvent toute la mémoire utilisée pour l'application. (SRAM et flash NOR fiable sont assez volumineux.) Les processeurs PC parlent à la mémoire et aux périphériques hors puce.

  • Processus: Ces AVR 5 V sont fabriqués selon un ancien processus à faible coût. N'oubliez pas qu'ils ont été conçus dès le départ pour être bon marché. Intel vend des produits de consommation à marges élevées en utilisant la meilleure technologie que l’argent puisse acheter. Intel vend également du CMOS pur. Les processus MCU doivent produire une mémoire flash sur puce, ce qui est plus difficile.

Bon nombre des facteurs ci-dessus sont liés.

Vous pouvez acheter des microcontrôleurs 200 MHz aujourd'hui ( voici un exemple ). Bien sûr, ils coûtent dix fois plus que ces ATMegas 20 MHz ...

La version courte est que la vitesse est plus compliquée que la simplicité, et les produits bon marché sont optimisés pour le bon marché, pas la vitesse.


11
N'oubliez pas la robustesse: un processeur typique échouera si la tension d'alimentation change de plus de 5% environ, tandis qu'un ATMega fonctionne à partir de quoi que ce soit dans une plage de 1,8 à 5,5 V à 4 MHz.
Dmitry Grigoryev

1
@DmitryGrigoryev Bon point! J'ai mis à jour ma réponse.
Adam Haun

25

Une raison technique sous-jacente majeure pour les vitesses lentes est que les microcontrôleurs bon marché / petits utilisent uniquement la mémoire flash sur puce pour le stockage de programme (c'est-à-dire qu'ils ne s'exécutent pas à partir de la RAM).

Les petits microcontrôleurs ne mettent généralement pas en cache la mémoire du programme, ils doivent donc toujours lire une instruction à partir de Flash avant de l'exécuter, à chaque cycle. Cela donne des performances déterministes et # cycles / opération, est juste moins cher / plus simple, et évite les problèmes de type PC où le code et les données sont mélangés créant un nouvel ensemble de menaces de débordements de tampon, etc.

La latence de lecture à partir de la mémoire flash (de l'ordre de 50 à 100 ns) est beaucoup plus lente que la lecture à partir de SRAM ou de DRAM (de l'ordre de 10 ns ou moins), et cette latence doit être encourue à chaque cycle, ce qui limite la vitesse d'horloge du partie.


4
De plus, la puissance (et donc la chaleur) augmente plus que linéairement avec la fréquence.
Kimberly W

1
Je ne pense pas que la lecture à partir du flash soit proche de 100 ns, n'est-ce pas? L'IIRC, c'est deux ordres de grandeur de plus. Cependant, si votre contrôleur flash contient un petit cache DRAM et que le code n'est pas trop ramifié, le taux d'accès au cache peut être très élevé (90% +), de sorte que votre latence moyenne peut être beaucoup plus faible.
MSalters

2
Cette fiche AT91SAM7S que j'ai ouverte dit pour son flash interne "Temps d'accès rapide, accès à un cycle de 30 MHz dans les pires conditions" pour son flash interne. C'est 33ns. Et il a un dword de tampon de prélecture. Flash éteint peut en effet avoir une latence plus élevée.
pjc50

1
@Jamil Je ne me souviens pas de la formule exacte, mais je crois que c'était un carré de fréquence.
Jan Dorniak

22

Pourquoi les gens font-ils du vélo ou une petite moto, quand vous avez une voiture de Formule 1? Il faut sûrement mieux rouler disons 300 km / h et se déplacer instantanément partout?

Pour le dire simplement, il n'est pas nécessaire d'être plus rapide qu'eux. Je veux dire, bien sûr, il y a des microcontrôleurs un peu plus rapides qui permettent certaines choses, mais qu'allez-vous faire, par exemple, un distributeur automatique qui est en utilisation continue pendant peut-être 1 heure par jour? Qu'allez-vous faire dans une télécommande par exemple pour un téléviseur?

D'un autre côté, ils ont d'autres capacités importantes, comme une faible consommation d'énergie, étant BEAUCOUP plus simple à programmer et ainsi de suite. Fondamentalement, ils ne sont pas des processeurs et font des choses différentes.


12
@Michael D'où vous vient l'idée simple = rapide?
Matt Young

3
@Michael Un vélo est beaucoup plus simple qu'une voiture, mais il est encore plus lent. En tout cas, Matt a raison. Quelque chose de simple n'est pas automatiquement rapide. C'est-à-dire que quelque chose de rapide va être compliqué, simplement en raison de considérations nécessaires pour des fréquences plus élevées.
AndrejaKo

2
Les processeurs CISC hautes performances ont tendance à émettre bien plus d'instructions que les simples processeurs intégrés. Ils font beaucoup plus de travail en parallèle, ils sont donc à la fois plus complexes et plus rapides.
Kimberly W

2
@Michael $ 1 pourrait être luxueusement cher pour certaines applications, j'ai lu que les micro-contrôleurs des cartes micro SD coûtaient environ 19 cents
Xen2050

2
@Michael "c'est l'idée derrière les architectures RISC: les tâches simples peuvent être traitées plus rapidement que les tâches compliquées" Non! Les architectures RISC modernes sont extrêmement complexes car elles doivent introduire plus d'instructions (comme SIMD) et prendre en charge plus de fonctionnalités comme superscalaire, hyperthreading, exécution dans le désordre ... Leur complexité peut facilement dépasser les architectures CISC. MIPS a de nos jours des centaines ou des milliers d'instructions. "CISC v RISC est en grande partie un débat historique"
phuclv

13

Il existe de nombreux contrôleurs ARM qui fonctionnent à des centaines de MHz ou plus. Qui a besoin d'un PIC à 500 MHz et est prêt à payer suffisamment par pièce pour justifier des masques d'un million de dollars pour un processus proche de l'état de l'art?

L' ATmega328 populaire serait fabriqué avec la technologie 350 nm, ce qui est un peu en retard sur les derniers processeurs Intel de production (14 nm pour Skylake ).

Même les contrôleurs 8 bits bon marché ont lentement progressé en vitesse, et vous pouvez obtenir des contrôleurs PIC 32 et 64 MHz (par exemple, PIC18F14K22) qui fonctionnent toujours à 5 V (ce dernier est une considération dans le coût total du système).

Une considération est que ces contrôleurs ont une architecture optimisée pour les petits espaces mémoire et les vitesses d'horloge lentes. Une fois que vous commencez à atteindre des vitesses d'horloge élevées, vous devez redéfinir les choses avec des pré-détartreurs, etc.

Il y a eu une tentative de retour (fin des années 1990) pour produire des contrôleurs de type PIC très rapides, avec l'idée que le micrologiciel pourrait remplacer les périphériques si le microcontrôleur était assez rapide. Par exemple, vous pouvez mordre un UART. Je ne pense pas qu'ils aient été un succès commercial - Scenix-> Ubicom-> Qualcomm (game over).


350 nm? Cela expliquerait cela. Je ne savais pas que quiconque fabriquerait quoi que ce soit en utilisant une technologie vieille de 20 ans.
Michael

3
Certains d'entre nous conçoivent toujours (pas seulement en utilisant) des CMOS de la série 4000, ce qui est quelque chose comme 3000 nm.
Spehro Pefhany

6
Les processus plus anciens sont également potentiellement utiles pour les personnes confrontées à des environnements de rayonnement ou à des systèmes de haute fiabilité qui nécessitent une traçabilité.
Krunal Desai

5
Le jeu n'est pas terminé - l'hélice Parallax est une continuation de ce concept.
Dave Tweed

3
@Michael: Ce n'est pas seulement l'âge de la technologie. La taille est également importante. Une plus grande taille de processus a des taux de défauts plus faibles, ce qui signifie moins de rejets et donc un rendement plus élevé - ce qui conduit à un coût par puce inférieur. Si vous êtes prêt à payer 100 $ pour un processeur (comme des ordinateurs de bureau), le coût plus élevé en raison d'un rendement inférieur est justifié. Si vous ne voulez payer que 50 cents, ce n'est pas justifié.
slebetman

3

Imaginez que l'on veuille produire des automobiles. Une approche consisterait à utiliser un tas d'équipements en série dans l'usine, en construisant une voiture à la fois. Cette approche peut être effectuée avec une quantité modeste d’équipements moyennement compliqués, de nombreux équipements peuvent être utilisés pour effectuer plus d’une étape. D'un autre côté, une grande partie du matériel de l'usine restait inactif la plupart du temps.

Une autre approche consiste à mettre en place une chaîne de montage, de sorte que dès que l'équipement qui a géré la première étape de production a terminé cette opération sur la première voiture, il peut alors commencer à démarrer l'opération correspondante sur la voiture suivante. Essayer de réutiliser une pièce d'équipement à plusieurs étapes du processus de fabrication serait compliqué, donc dans la plupart des cas, il serait préférable d'utiliser plus de pièces d'équipement qui sont chacune optimisées pour effectuer une tâche très spécifique (par exemple, s'il est nécessaire de percer 50 trous de 10 tailles différentes, alors une configuration d'équipement minimal comprendrait un foret avec 10 forets et un mécanisme de changement rapide, mais une chaîne de montage pourrait avoir 50 forets chacun avec un foret installé en permanence et pas besoin de changement rapide) .

Pour des choses comme les DSP ou les GPU, il est possible d'atteindre des vitesses très élevées à un coût relativement bas car la nature du travail à effectuer est très cohérente. Malheureusement, de nombreux processeurs doivent être capables de gérer des erreurs arbitraires d'instructions de complexité différente. Il est possible de le faire efficacement, mais cela nécessite une logique de planification très complexe. Dans de nombreux processeurs modernes, la logique nécessaire pour "travailler" n'est pas trop compliquée ou coûteuse, mais la logique nécessaire pour coordonner tout le reste l'est.


2
Désolé si je l'ai raté, mais quelle pertinence cela a-t-il pour les CPU par rapport aux microcontrôleurs «plus lents»? Il semble se concentrer uniquement sur les processeurs par rapport aux processeurs spécialisés (généralement encore plus rapides).
underscore_d

1
@underscore_d: Le premier paragraphe couvre les microcontrôleurs plus simples - ils sont comme le petit magasin qui construit une voiture à la fois. Le deuxième paragraphe note qu'il existe des contrôleurs bon marché qui peuvent effectuer beaucoup d'opérations très rapidement, mais sont limités dans les types d'opérations qu'ils peuvent effectuer. Ce qui est difficile, c'est de pouvoir effectuer un mélange arbitraire d'opérations tout en les chevauchant à un degré significatif (mais très variable). Si l'on a un sous-système qui, à chaque cycle, peut accepter deux numéros et affichera le produit de deux numéros qui ont été soumis il y a quatre cycles, et ...
supercat

1
... un autre qui, à chaque cycle, acceptera deux nombres et produira la somme de ceux qui ont été soumis il y a deux cycles, essayant de comprendre quand les valeurs doivent être soumises, quand les résultats seront disponibles, quand les choses devraient être chargées et sauvegardées aux registres, etc. peut devenir très compliqué, surtout si l'on veut éviter de remplir tous les pipelines pour correspondre au plus long.
supercat

Merci; cela clarifie les choses. Oui, il est logique que les processeurs à usage général rapides encourent la plupart de leurs coûts, à la fois financiers et énergétiques, sur l'échafaudage - pipelining, cache, planification, contrôle de la RAM, etc. pour micros. De même, cela ne cesse de m'étonner de ce qui peut être fait avec une fréquence d'horloge relativement petite dans un processeur spécialement conçu pour une application. Des trucs fascinants des deux côtés!
underscore_d

@underscore_d: L'architecture MIPS a été conçue en partant du principe que les compilateurs seraient responsables de certains problèmes de planification, permettant ainsi de simplifier le matériel. Le concept n'a jamais vraiment fait son chemin, je pense, car les nouveaux processeurs nécessitent souvent plus d'étapes de pipeline que les anciens, mais le code écrit pour un processeur avec des pipelines plus courts ne fonctionnera pas sur un processeur avec des plus longs en l'absence de verrouillages matériels.
supercat
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.