É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?
Réponses:
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.
la source
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.
la source
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.
la source
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).
la source
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.
la source