Quelle est la place des microcontrôleurs 8 et 16 bits? Pourquoi le 32 bits n'a-t-il pas pris le relais?

9

Quel est le véritable point de coupure en termes de compromis entre coût et performance pour la sélection de microcontrôleurs 32 bits?

En d'autres termes, avec l'essor et la domination des architectures ARM, pourquoi utilisons-nous toujours des microcontrôleurs 8 bits et 16 bits? Sont-ils encore beaucoup moins chers?

Je comprends que les appareils très bas de gamme n'ont pas besoin des ressources offertes par des architectures plus grandes et plus complexes. Cependant, quelle est la véritable motivation de continuer à les utiliser si les coûts semblent converger vers la même fourchette?

Bruno Morais
la source
1
Consommation d'énergie?
Leon Heller
7
Le µC 32 bits le moins cher sur Digikey que je vois coûte environ 0,64 $, le 8 bits le moins cher est 0,35 $. Si vous êtes une grande entreprise qui va créer un million de widgets simples, c'est une différence très importante.
Samuel
@LeonHeller À première vue, j'ai tendance à être d'accord, mais regardez le point que j'ai soulevé dans les commentaires de la réponse proposée.
Bruno Morais
2
Regarder même des prix en vrac sur DigiKey n'est pas un guide brillant, pour les micros correctement minuscules dans les petites applications intégrées à faible puissance qui sont produites en masse, personne ne les achète de DigiKey et il y a de fortes chances qu'ils achètent des matrices pour ne pas rester un paquet de puces à souder sur une carte. Un micro 8 bits sera toujours plus petit, plus simple, donc moins cher et moins puissant qu'un 32 bits de construction équivalente. Oui, la marge est en train de chuter au point d’être insignifiante pour de nombreuses personnes, mais en masse, même 1 / 10e de centime économisé en vaut la peine.
John U
Voici un article pertinent que j'ai rencontré sur le site Web d'Electronic Design: 8 bits ou 32 bits? Choisir le MCU de votre prochain design
Garth Wilson

Réponses:

17

Il y a peut-être un an, il y avait une différence significative entre les microcontrôleurs 32 bits bas de gamme et les microcontrôleurs 32 bits les moins chers. Ce n'est plus le cas.

Sur la base du prix de gros de Digi-Key, vous pouvez obtenir un PIC10F200 8 bits pour 35ȼ en 2500 quantités dans un boîtier SOT-23-6. Vous obtenez un CY8C4013SXI-400 32 bits (ARM Cortex-M0) pour 36ȼ en 2500 quantités dans un boîtier SOIC-8. (Le prix en gros de Digi-Key n'est pas réaliste en termes de ce que les fabricants paient réellement, ce qui est probablement beaucoup moins, mais je pense qu'il est valable d'utiliser pour une comparaison de prix approximative entre différents produits pour des quantités similaires.)

Donc l'OP a raison, ils convergent.

Alors pourquoi les puces 32 bits ne sont-elles pas davantage utilisées? Eh bien, comme je l'ai dit dans mon premier paragraphe, ce prix et cette parité de taille ne se sont produits qu'au cours de la dernière année ou des 18 derniers mois. Et ils ont encore beaucoup de chemin à parcourir avant d'avoir suffisamment de jetons pour être compétitifs.

Sur les 6875 puces ARM disponibles auprès de Digi-Key, il n'y en a que quatre en stock avec un prix de quantité inférieur à un dollar. Quatre . Pendant ce temps, les ingénieurs peuvent choisir parmi des centaines de puces 8 bits à moins d'un dollar.

Mais disons qu'il y avait au moins quelques dizaines de micros 32 bits bas de gamme disponibles. Seraient-ils automatiquement choisis parmi les 8 bits?

Tout d'abord, vous devez en informer les ingénieurs. Il y a toujours beaucoup de résistance au changement. De nouvelles choses à apprendre - d'un point de vue matériel, apprendre à incorporer la nouvelle puce dans un circuit. Il existe de nouveaux outils, tels que des programmateurs en circuit, de nouveaux compilateurs, etc. Pour les ingénieurs du micrologiciel, apprendre à utiliser un tout nouvel ensemble de périphériques et de temporisateurs (principalement des dispositions de registre et des significations de bits).

32 bits, c'est bien et tout ça, mais à moins que l'on ait besoin de faire beaucoup de calculs lourds, à quoi ça sert? Si vous n'avez que quatre broches GPIO, y accéder en interne en tant que registre 32 bits ne donne aucun avantage par rapport à l'utilisation d'un registre 8 bits.

Je pense que la consommation d'énergie sera toujours en faveur des micros 8 bits.

Par exemple, le PIC10F200 consomme 175 µA fonctionnant à 4 MHz et 2v et 100 nA en mode veille. Le CY8C4013SXI-400 consomme environ 800 µA en fonctionnement à 4 MHz et 2 v et 1 uA en mode veille. (La fiche technique du CY8C4013SXI n'avait pas de chiffres pour 4 MHz ou 2v, j'ai donc dû faire quelques estimations - la fiche technique dit qu'elle consomme 2 ma @ 6 MHz et 3,3v.)

Ainsi, l'ARM consomme 4,5 fois plus de courant lorsqu'il est éveillé et 10 fois lorsqu'il dort. Cela ne semble pas beaucoup, mais c'est la différence entre courir sur une pile bouton pendant 3 mois ou pendant un an. (Je suppose que les deux microcontrôleurs effectuent principalement la synchronisation, la mise à jour des ports, etc. et ne font pas de calculs lourds. Si ce dernier est le cas, et le micro 8 bits doit faire beaucoup d'arithmétique multi-octets pendant une période prolongée de temps, il perd un peu de son avantage.)

Il est intéressant de noter que l'ARM consomme environ quatre fois plus de courant que le 8-bitter, et qu'il possède à son tour des registres internes et des chemins de données quatre fois plus larges. Je ne pense pas que ce soit une coïncidence. Pour CMOS, la consommation d'énergie est à peu près proportionnelle au nombre de transistors commutés, et l'ARM en fait évidemment beaucoup plus par instruction exécutée.

Comme de plus en plus de fournisseurs d'ARM proposent des puces bas de gamme, je ne serais pas surpris si des fournisseurs comme Microchip baissaient encore plus leurs prix. Dans tous les cas, avec des prix plus ou moins égaux, des packages de taille similaire, mais beaucoup moins de puces 32 bits à choisir, je pense que les microcontrôleurs 8 bits vont encore exister pendant un certain temps - en particulier parce que vous avez familiarisé des dizaines de milliers d'ingénieurs avec eux.

tcrosley
la source
Pour la consommation d'énergie avec les modes de veille mis en œuvre, vous devrez également tenir compte de l'efficacité du code. Si le MCU se réveille par un déclencheur, puis exécute du code et se rendort, le nombre de tics d'horloge nécessaires pour terminer le travail sera tout à fait pertinent. Je pense que la majeure partie de la consommation actuelle d'un MCU provient de l'oscillateur fonctionnant à pleine vitesse. Pour faire le même travail qu'un 32 bitter, un 8 bitter aura probablement besoin d'environ cinq fois la quantité de cycles, simplement parce qu'ils sont généralement beaucoup moins efficaces, même lorsqu'ils font de l'arithmétique simple.
Lundin
(Et ce n'est pas tant parce qu'ils ont un bus de données 8 bits, mais principalement parce que tous les 8-bitters traditionnels du marché ont des conceptions de cœur de processeur anciennes des années 70 et 80.)
Lundin
1
@Lundin Je le dis dans ma réponse - si le 8-bitter doit faire beaucoup de calculs sophistiqués dans l'ISR, il perd pourtant un peu de son avantage. Mais s'il s'agit simplement de définir des indicateurs ou de mettre à jour un registre, ce sera plus efficace.
tcrosley
5

Trois points principaux:

  • Prix
  • Taille
  • Consommation d'énergie

50 ¢ lorsque vous commandez 10 000 jetons, c'est beaucoup d'argent. Encore plus lorsque vous commandez 100 000 jetons.

Vous pouvez obtenir des puces 8 bits considérablement plus petites que les puces 32 bits, telles que la PIC10 qui est disponible dans un package SOT23-6.

Les puces 32 bits, car elles sont généralement cadencées plus rapidement et en font plus, consomment beaucoup plus d'énergie qu'une petite puce 8 bits. Les batteries se déchargent plus rapidement, les systèmes d'alimentation doivent fournir plus de courant (et donc être plus coûteux), etc.

Après tout, pourquoi achèteriez-vous un mastodonte pour prendre une tasse de sucre à côté?

Majenko
la source
2
Il suffit de comparer deux puces du même fabricant - par exemple le PIC18F25K20 et le PIC32MX250F512 de Microchip. Les deux MCU modernes. Les deux fiches techniques ont Idd vs vitesse d'horloge. Le graphique de 8 bits dépasse à 5mA, celui de 32 bits à 20mA. Si vous y réfléchissez, une opération 8 bits ferait quelque chose pour 8 verrous - un 32 bits ferait la même chose (ou l'équivalent) pour 32 verrous. C'est 4 fois les verrous qui doivent être manipulés, donc 4x la consommation de courant typique.
Majenko
2
Le courant de repos pour le 32 bits est compris entre ~ 0,5 mA et 7 mA. Le graphique de 8 bits pour le courant de repos est mesuré sur l'échelle µA et atteint 7µA - un simple 4µA en fonctionnement à température ambiante normale ...!
Majenko
3
Creusez quelques fiches techniques et cherchez par vous-même.
Majenko
2
Cela suppose que tout ce que fait la puce, c'est le traitement. Les choses prennent du temps qui ne dépendent pas de la vitesse de la puce, telles que la lecture de données à partir de capteurs externes, etc. Un processeur 32 bits à 80 MHz ne lira pas un périphérique I2C à 100 kHz plus rapidement qu'un processeur 8 bits à 16 MHz.
Majenko
3
N'oubliez pas les logiciels hérités (en particulier pour les systèmes nécessitant une certification) et la familiarité des développeurs, la sélection des composants périphériques / RAM / flash (une conception de microcontrôleur avec un processeur plus performant utilisera plus de surface de puce pour la mémoire; un Cortex-M avec 256 octets de RAM semble peu probable de sitôt) et les choix de boîtier / tension. Une bonne réponse devrait également expliquer pourquoi le marché 16 bits ne fait pas mieux (et les ISA 8 bits plus modernes comme AVR) et pourquoi le marché 4 bits est apparemment très contraint (montres et quoi d'autre?).
Paul A. Clayton
2

Les applications uC que j'ai développées pour les produits commerciaux n'ont presque jamais traité des tailles de données supérieures à 8 bits; donc même si 32 bitters étaient au même prix que 8 bitters, il n'y aurait toujours aucun avantage. Comme quelqu'un d'autre l'a dit, nous optons pour ce qui est familier, afin que nous puissions le faire plus rapidement. Cependant, le dernier que j'ai développé s'est avéré pousser le PIC16 que j'avais utilisé à la limite - mais ce n'était pas à cause de la taille des données. Si je fais plus comme ça, alors je devrais vraiment apprendre ARM.

Garth Wilson
la source
Je suppose que pour la plupart des petites micro-applications, la plus grande taille de données requise serait de 16 bits ou peut-être 24. La plupart des applications n'auront pas besoin de faire grand-chose avec des choses supérieures à 8 bits, mais elles devront faire quelque chose. D'un autre côté, presque tous les microcontrôleurs 8 bits jamais fabriqués (sinon absolument tous) ont un indicateur de report qui permet d'utiliser une séquence d'opérations pour effectuer une séquence de 16 bits (ou même plus).
supercat
2

Je m'attends à ce que les puces ARM prennent en charge la plupart des fonctions où quelque chose se comporte comme un "ordinateur". D'un autre côté, beaucoup de microcontrôleurs 8 bits s'habituent à faire des choses qui pourraient être faites avec un dispositif logique programmable relativement simple ou un nombre modéré de portes, mais qui peuvent en fait se faire moins cher et / ou avec moins de courant en utilisant un micro 8 bits simple. Lors de la conception d'applications plus complexes, il est souvent plus facile d'utiliser un micro 32 bits qu'un micro 8 bits, mais si l'objectif d'une puce est, par exemple, de regarder et de rebondir une certaine entrée et, si elle est élevée, de commencer à produire 200 des impulsions sur une certaine sortie à des intervalles de 1 ms, puis 100 à des intervalles de 2 ms, puis 100 à 3 ms, puis une pause de 100 ms, et continuez jusqu'à ce que l'entrée devienne faible, la conception du code pour cela peut en fait être plus facilesur un micro 8 bits que sur un 32 bits. La différence de coût entre les micros 8 bits et 32 ​​bits peut ne plus être suffisante dans de nombreux cas pour justifier des efforts d'ingénierie supplémentaires pour faire en sorte qu'un projet "s'intègre" dans un micro 8 bits, mais dans les cas où une pièce 32 bits ne le serait pas. 'épargnez aucun effort d'ingénierie, il n'y a aucune raison de dépenser même un sou supplémentaire.

supercat
la source
Je suis d'accord, mais faites remarquer que le maintien et la maîtrise de deux chaînes d'outils impliquent un effort d'ingénierie en soi.
Scott Seidman
2
@ScottSeidman: Vrai. D'autre part, il convient également de mentionner que certains micros 8 bits peuvent commencer à exécuter du code presque immédiatement à la mise sous tension, tandis que les micros 32 bits que j'ai vus prennent un peu plus de temps.
supercat
Je me demande si nous verrons jamais la licence ARM sur les plates-formes 8 bits. Il existe de merveilleuses fonctionnalités des implémentations ARM, comme la possibilité de ne pas simplement synchroniser des périphériques et des bus entiers, qui devraient faire fonctionner ARMS 8 bits autour d'autres plates-formes en termes de puissance de sirotage. Si les mfct fabriquent des bibliothèques compatibles CMSIS, je pense qu'ils finiraient par anéantir les gros joueurs.
Scott Seidman
@ScottSeidman: En fait, ce que j'aimerais voir, ce sont des conceptions qui peuvent faire fonctionner les parties sensibles au timing des périphériques (par exemple, les minuteries, les générateurs de vitesse de transmission, etc.) avec une base de temps constante qui est indépendante de la vitesse du processeur. , mais je n'ai vu qu'un soutien minimal pour un tel concept. Ce ne serait pas difficile dans le silicium, mais je suppose que les outils de synthèse n'ont pas les moyens de faire de telles choses efficacement.
supercat
@supercat Je ne suis pas sûr des autres microcontrôleurs, mais le PIC32 a le concept d'une horloge de bus périphérique qui peut être configurée à une vitesse d'horloge différente de l'horloge principale. Vous pouvez donc modifier la vitesse du processeur, par exemple pour économiser de l'énergie, tout en conservant la même horloge PB afin de ne pas avoir à reprogrammer toutes vos vitesses de transmission périphériques, etc.
tcrosley
1

Bien que je convienne que le coût du processeur et la consommation d'énergie sont les principales raisons, une autre considération que je n'ai pas encore vue ici est l' espace PCB. Pour de nombreux types de systèmes intégrés, comme, par exemple, une balance électronique pour salle de bain, il n'y a pas beaucoup besoin de beaucoup d'E / S, aucun avantage pour une plus grande taille de bus et aucun avantage pour un traitement plus rapide. Cependant, il existeun avantage pour un boîtier plus petit avec moins de broches car il rend la disposition et le routage d'une carte de circuit imprimé plus simples et souvent plus petits. Si une carte peut être conçue comme une carte à 2 couches plutôt que comme une carte à 4 couches, il y a des économies de coûts considérables, et le nombre de broches plus petit qui vient souvent avec les processeurs 8 bits a tendance à faciliter ces économies plus facilement que 32- processeurs de bits qui ont généralement plus de broches et des boîtiers physiquement plus grands.

Edward
la source
Vous vous rendez compte que c'est une question vieille de 2 ans et demi, non?
Olin Lathrop du
@Olin Un autre point de vue ne fait pas de mal.
m.Alin
@OlinLathrop: oui, mon horloge / calendrier piloté par processeur 8 bits fonctionne très bien. :)
Edward
0

Même dans le monde 8 bits, les types plus récents prennent du temps pour prendre le relais en faveur des types plus anciens - voir MCS51 toujours vivant dans ses niches et MCS48 toujours trouvé dans des endroits inattendus.

Dans de nombreux cas, le changement ne se produit pas car il n'apporte aucune valeur supplémentaire et s'accompagne du coût de l'apprentissage d'une nouvelle technologie qui n'a pas encore fait ses preuves et / ou qui devrait rester une cible mouvante (ce qui fait c'est intéressant pour les gens qui veulent se concentrer sur la technologie MCU mais ennuyeux pour ceux qui veulent se concentrer sur leur application et ne pas constamment réparer et retester le logiciel de production pour adapter le millésime ARM de cette année!). Pour certains, un composant qui n'est plus développé est obsolète, pour d'autres, il est finalement devenu stable , et bien qu'il puisse avoir besoin de solutions de contournement pour les bogues incarnés, il fournit au moins une plate-forme stable pour ceux-ci. La coulée de lave n'est pas toujours l'anti-motif qu'elle est fêlée - tend à faire en sorte que les montagnes restent en place.

rackandboneman
la source