Pourquoi les microcontrôleurs ont-ils si peu de RAM?

39

C’est peut-être plus un problème de perception, mais il semble que les microcontrôleurs aient progressé à pas de géant au cours des 20 dernières années, à presque tous les égards, une vitesse d'horloge plus élevée, plus de périphériques, un débogage plus facile, des cœurs 32 bits, etc.

Il est encore courant de voir la RAM dans les 10 de Ko (16/32 Ko).

Il ne semble pas que cela puisse être directement une question de coût ou de taille. Est-ce un problème de complexité avec le contrôleur RAM au-dessus d'un certain seuil?

Ou est-ce simplement que ce n'est pas généralement nécessaire?

En regardant une matrice de pièces chez un fournisseur Internet populaire, je vois un Cortex M4 de 256 Ko pour moins de 8 USD, puis pour quelques dollars de plus, vous pouvez en trouver quelques-uns de plus sans ROM, mais cela semble plutôt rare ...

Je n'ai pas vraiment besoin d'un microcontrôleur avec un MB de stockage volatile, mais il semble que quelqu'un puisse ...

Grady Player
la source
8
Peut-être y a-t-il une raison plus technique, mais pour moi, cela semble être une question de marché. Vous utilisez des microcontrôleurs lorsque des applications les utilisent, lorsque vous avez besoin de plus de puissance, vous passez généralement à un système intégré plus complet.
Jarrod Christman
15
10s de ko. C'est énorme. Mon microcontrôleur préféré pour le prototypage dispose de 68 octets de RAM: en.wikipedia.org/wiki/PIC16x84
slebetman
2
Une fois, j'ai écrit un logiciel de pixellisation 3D en 86B sur un Arduino doté de 2 Ko de RAM. Cela me fâchait parce que si j'avais eu 10 Ko ou 50 Ko, j'aurais pu commencer à ajuster des modèles réels en mémoire et à faire quelque chose d'intéressant. J'ai eu exactement la même question à l'époque et je ne pense pas que les réponses actuelles soient correctes. abordez-le assez bien. Oui, la mémoire SRAM est chère - mais les processeurs ont des mégaoctets de cache fabriqués à partir de la mémoire SRAM, mais ils sont encore relativement bon marché. Cela ressemble à une excuse boiteuse.
imallett
2
@slebetman avez-vous une préférence pour un micro de 20 ans alors que des appareils bien meilleurs sont plus largement disponibles et moins chers?
markrages
3
it seems like somebody mightest le piège ici, la plupart des gens ne le font pas. Vous n'allez pas diffuser Netflix sur cette puce, et le 64K est généralement plus que suffisant pour tout ce que vous devez faire avec un micro- contrôleur. Si vous voulez aller plus haut, procurez-vous une composition complète, par exemple une framboise.
TC1

Réponses:

44

Il y a plusieurs raisons à cela.

Tout d’abord, la mémoire occupe beaucoup de silicium. Cela signifie que l'augmentation de la quantité de RAM augmente directement la surface de silicium de la puce et donc le coût. Une plus grande surface de silicium a un effet "double whammy" sur le prix: de plus grandes puces signifient moins de puces par tranche, en particulier autour du bord, et de plus grandes puces signifient que chaque puce est plus susceptible de présenter un défaut.

Deuxièmement, il y a la question du processus. Les matrices de mémoire vive doivent être optimisées de différentes manières que la logique, et il n'est pas possible d'envoyer différentes parties d'une même puce à travers des processus différents - la puce entière doit être fabriquée avec le même processus. Il existe des fonderies de semi-conducteurs qui se consacrent plus ou moins à la production de DRAM. Pas les processeurs ou autre logique, juste la DRAM. La mémoire DRAM nécessite des condensateurs efficaces en surface et des transistors à très faible fuite. La fabrication des condensateurs nécessite un traitement spécial. Faire des transistors à faible fuite a pour résultat des transistors plus lents, ce qui est un bon compromis pour l'électronique de lecture DRAM, mais ne serait pas aussi bon pour construire une logique à hautes performances. Produire de la DRAM sur un dé de microcontrôleur signifierait que vous auriez besoin de faire un compromis sur l'optimisation des processus. Les grandes baies de mémoire RAM sont également plus susceptibles de développer des défauts simplement en raison de leur grande surface, de leur rendement décroissant et de leur coût croissant. Tester de grandes baies de mémoire RAM prend également beaucoup de temps et donc, inclure de grandes baies augmentera les coûts de test. De plus, les économies d’échelle réduisent davantage le coût de puces de RAM séparées que de microcontrôleurs plus spécialisés.

La consommation d'énergie est une autre raison. De nombreuses applications embarquées sont soumises à des contraintes de puissance. Par conséquent, de nombreux microcontrôleurs sont conçus pour pouvoir être placés dans un état de veille très basse consommation. Pour permettre une très faible veille, la mémoire SRAM est utilisée en raison de sa capacité à conserver son contenu avec une consommation électrique extrêmement faible. La SRAM protégée par batterie peut conserver son état pendant des années sans une seule pile bouton 3V. La DRAM, par contre, ne peut pas conserver son état plus d’une fraction de seconde. Les condensateurs sont si petits que la poignée d'électrons se faufile dans le substrat ou fuit à travers les transistors de cellule. Pour lutter contre cela, la DRAM doit être lue et écrite en permanence. Par conséquent, la mémoire DRAM consomme beaucoup plus d’énergie que la mémoire SRAM au repos.

D'un autre côté, les cellules de bits SRAM sont beaucoup plus volumineuses que les cellules de bits DRAM. Par conséquent, si une grande quantité de mémoire est requise, la mémoire DRAM est généralement une meilleure option. C’est pourquoi il est assez courant d’utiliser une petite quantité de SRAM (ko / Mo) comme mémoire cache sur puce associée à une plus grande quantité de DRAM hors puce (Mo à Go).

Certaines techniques de conception très utiles ont été utilisées pour augmenter la quantité de RAM disponible dans un système intégré à un coût réduit. Certains d'entre eux sont des packages multi-puces contenant des matrices séparées pour le processeur et la RAM. D'autres solutions impliquent la production de pads sur le dessus du boîtier du processeur, de manière à pouvoir empiler une puce RAM. Cette solution est très astucieuse car différentes puces de RAM peuvent être soudées sur le processeur en fonction de la quantité de mémoire requise, sans aucun routage supplémentaire au niveau de la carte (les bus de mémoire sont très larges et occupent beaucoup de surface de carte). Notez que ces systèmes ne sont généralement pas considérés comme des microcontrôleurs.

Beaucoup de très petits systèmes embarqués ne nécessitent de toute façon pas beaucoup de RAM. Si vous avez besoin de beaucoup de RAM, vous voudrez probablement utiliser un processeur haut de gamme doté d'une mémoire DRAM externe au lieu d'une mémoire SRAM intégrée.

alex.forencich
la source
J'ai vu de vrais circuits intégrés de RAM avec des pieds et tout ce qui était collé / placé sur les processeurs (qui sont des paquets BGA) et acheminés dans ceux-ci! Les choses que nous faisons pour l'espace conseil !! Comme le soulignent les Russes avec leur méthodologie de conception TRIZ, si vous manquez d'espace en X et Y, allez en Z :)
KyranF
2
+1 Pour la distinction importante entre SRAM et DRAM. La mémoire SRAM est à la fois plus rapide et plus économe en énergie, en particulier lorsqu'elle est inactive, mais elle est considérablement plus chère et nécessite plus d’espace.
Fizzle
Je ne pense pas que la SRAM soit la sorte de RAM la plus chère. Une combinaison de bascules et de multiplexeurs peut être utilisée comme mémoire à accès aléatoire qui offrira de meilleures performances que la mémoire SRAM, mais à un coût en silicium beaucoup plus élevé. De telles mémoires ne dépassent généralement pas environ 32 mots, mais une telle mémoire peut gérer des lectures et des écritures simultanées d’une manière qu’une SRAM ne peut pas.
Supercat
1
Certes, les fichiers de registre et les bascules complètes coûtent plus cher que la SRAM, mais ils ne sont pas utilisés pour la mémoire système à usage général.
alex.forencich
1
J'ai vu un serveur HTTP en état de fonctionnement sur un MCU avec 160 Ko de SRAM et aucune DRAM externe. Il ne pouvait pas gérer beaucoup de connexions parallèles mais cela fonctionnait.
Jan Dorniak
15

La mémoire occupe probablement le plus d’espace en silicium, et la mémoire RAM très rapide à utiliser est volatile - et utilise constamment l’énergie pour conserver son état. À moins que vous n'ayez besoin de beaucoup de RAM, ce n'est pas utile pour beaucoup d' autres applications. Si un concepteur de système embarqué a besoin de plus de RAM, il se contente d’obtenir une puce de RAM externe et d’utiliser les interfaces de mémoire périphériques que les microcontrôleurs ont souvent de nos jours pour une extension de mémoire plug-and-play très facile. C’est la raison pour laquelle, selon moi, les microcontrôleurs disposent généralement d’une mémoire vive embarquée assez faible, car un code d’application raisonnable et des scénarios de cas d’utilisation n’ont normalement pas besoin de beaucoup.

Lorsque vous commencez à vous familiariser avec les grandes architectures qui doivent fonctionner intégralement sur des systèmes d’exploitation, la RAM devient extrêmement importante. Cependant, cela sort du domaine des microcontrôleurs et dans des ordinateurs embarqués plus comme ceux que vous voyez dans les cartes Beaglebone et Raspberri Pi. journées. Et même à ce stade, les processeurs sont si complexes et si riches en fonctionnalités qu’ils n’ont aucune place pour la quantité de RAM nécessaire à leur tâche. Il leur faut donc une mémoire externe pour fonctionner.

MODIFIER:

Comme anecdote personnelle, j'ai récemment réalisé un petit tableau de commande de robot autonome dans le but de l'utiliser pour la vision par ordinateur à basse résolution, comme la détection de mouvement, le suivi et le suivi d'objets. J'ai choisi un ARM Cortex M3 à faible nombre de broches pour cette tâche et, tout en regardant dans la sélection par Atmel de leurs processeurs de la série SAM3, j'ai en effet opté pour la mémoire vive la plus élevée que j'ai pu trouver - car dans ce cas, je ne voulais pas acheter de RAM externe. en raison de l'espace de la carte et de ne pas vouloir la complexité d'un bus de mémoire RAM à grande vitesse sur le PCB. Dans ce cas, pour mon application particulière, j'aurais beaucoup aimé pouvoir disposer de plusieurs centaines de ko de plus de RAM si possible.

KyranF
la source
bon point, je ne pensais même pas à la consommation d'énergie ...
Grady Player
4
"Et la RAM étant volatile mais très rapide à utiliser, utilise l’énergie constamment pour conserver son état" à peine. La logique CMOS, SRAM incluse, utilise extrêmement peu d'énergie sans changer d'état. Notez que la plupart des microcontrôleurs conservent leur mémoire vive même en mode de mise hors tension extrêmement faible.
Chris Stratton
@ChrisStratton: J'ai vu un certain nombre de microcontrôleurs, provenant de différents fabricants, avec des modes qui coupent une partie de leur RAM pour économiser de l'énergie, bien que ceux-ci aient un peu gênant ceux que j'ai vus ne permettent pas à la RAM d'être alimentée sans une réinitialisation du système. Je ne sais pas quel est le but de cette dernière restriction; si j'ai besoin d'une grande quantité de RAM pour le stockage temporaire lors de certaines opérations, mais pas autrement, je ne vois pas pourquoi je ne pourrais pas l'activer si nécessaire et l'éteindre sinon, mais je ne l'ai pas vu fonctionnalité.
Supercat
14

Outre les excellents arguments évoqués dans les autres réponses, l’architecture du microcontrôleur est une autre raison de la limitation de la mémoire RAM. Par exemple, prenons la puce PIC10LF320, qui ne contient que 448 octets de mémoire programme (flash) et 64 octets de RAM. Mais cela ne coûte probablement que 25ȼ (ou moins) en grande quantité. La taille limitée du mot d'instruction PIC10 (12 bits) lui permet de n'adresser directement que 128 octets de RAM.

Je suis sûr qu'il existe d'autres microcontrôleurs qui ne disposent que d'un bus d'adresses à 8 bits, les limitant à 256 octets de RAM.

Mais la plupart des microcontrôleurs de milieu de gamme (même ceux avec des chemins de données de 8 bits) ont un bus d’adresse de 16 bits. Une considération architecturale majeure pour ces puces est de savoir si la puce utilise l' architecture de Harvard ou de Von Neumann .

La plupart des microcontrôleurs utilisent l'architecture Harvard, qui dispose d'espaces adresse distincts de 16 bits pour la mémoire programme, la RAM et les adresses d'E / S mappées en mémoire. Donc, pour ces derniers, le bus d’adresse 16 bits peut accéder à 64 Ko (65 536) octets de RAM. Il y a toujours une limite de 64 Ko imposée par l’architecture, et si l’on veut aller au-dessus, une sorte de pagination doit être utilisée. Il est beaucoup plus courant de faire de la pagination pour l’espace programme que pour l’espace RAM.

Les microcontrôleurs utilisant l'architecture Von Neumann, tels que la ligne Freescale HCS08, ne disposent que d'un seul espace adresse divisé entre la mémoire de programme, la RAM et les E / S mappées en mémoire. Afin de disposer d'une quantité raisonnable d'espace de programme, cela limite la quantité de RAM à 4K ou 8K. Là encore, on peut utiliser la pagination pour augmenter le programme disponible ou l’espace RAM.

tcrosley
la source
1
Cependant, vous devez garder à l'esprit que le noyau PIC est tellement inefficace en termes de code qu'il va consommer beaucoup de mémoire flash supplémentaire pour rien. Et une des raisons pour lesquelles il n’a pas besoin de beaucoup de RAM, c’est qu’il dispose de restrictions sévères concernant, par exemple, la profondeur de la pile d’appels.
Lundin
@Lundin D'accord, vous devez à peu près programmer les PIC10 et PIC12 d'origine en langage assembleur, avec beaucoup de soin . Les nouveaux périphériques PIC12F et PIC16F ont maintenant une pile matérielle à 16 niveaux et 14 nouvelles instructions. certains ont été ajoutés uniquement pour C, ils sont donc beaucoup plus utilisables.
tcrosley
@Lundin: Je pensais que les puces PIC avec des longueurs d'instructions de 12 et 14 bits étaient assez correctes pour la densité de code. Le PIC18F est où la densité de code a vraiment tendance à baisser lors de l’utilisation du compilateur HiTech en raison du nombre excessif de commutations de banque généralement requis.
Supercat
7

Ayant travaillé avec des microcontrôleurs et de petits systèmes pendant un bon bout de temps, j'aimerais préciser que très souvent, très peu de RAM est nécessaire. N'oubliez pas que, même si un MCU est capable d'accomplir de nombreuses tâches, la tendance actuelle consiste à en utiliser beaucoup plus que jamais et à en utiliser davantage pour répartir de nombreuses tâches dans des systèmes plus grands. Ceci, combiné au fait que contrairement aux systèmes de développement saturés nécessaires à la programmation sous Windows, le développement MCU utilise souvent des compilateurs très bien optimisés, le plus souvent avec un code source très efficace en C et C ++, parfois avec peu ou pas de surcharge du système d'exploitation. Il est à peine possible d’écrire un programme Windows pour afficher votre nom sur n’importe quel appareil sans consommer au moins des centaines de kilo-octets, ressources OS comprises,

Bien sûr, il y a des problèmes de coût et d'espace, comme d'autres l'ont souligné. Mais l’histoire actuelle est que ce qui est considéré comme une petite quantité de RAM par les nouveaux arrivants aujourd’hui est en réalité un peu plus que jamais auparavant, et tout le temps que les composants et les périphériques avec lesquels le MCU devra s’interfacer deviennent eux-mêmes plus intelligents. Honnêtement, mon utilisation la plus importante de RAM dans de nombreuses applications MCU a été récemment pour les tampons de communication pilotés par interruption, afin de libérer le MCU pour d’autres tâches sans craindre de perdre des données. Mais croyez-le ou non, pour la logique ordinaire et les fonctionnalités de calcul, les MCU sont assez bien adaptés à leurs ressources Flash et RAM intégrées, et vous pouvez vraiment faire beaucoup avec très peu.

Gardez à l'esprit qu'il était une fois des jeux vidéo célèbres avec des graphismes rudimentaires mais une logique de jeu complexe comme "PAC Man" et "Space Invaders" étaient généralement réalisés dans des ROM 8K, sur des machines ne disposant que de 8 ou 16 Ko de RAM!

Excité
la source
Qu'en est-il des cartes SD? Les cartes SDHC ne nécessitent-elles pas une mémoire tampon de 256 ou 512 octets (les cartes SD standard / anciennes ne sont plus produites)?
Peter Mortensen
La version de Pac Man pour le système informatique vidéo Atari 2600 était au format 4K ROM et le VCS lui-même disposait de 128 octets de RAM. Cependant, de nombreuses machines d'arcade avaient une part assez décente de ROM et de RAM comparée aux ordinateurs personnels de l'époque. Je pense que Defender, par exemple, avait 32K ou ROM et 64K de RAM, bien que 32K de RAM soit "en écriture seule" du point de vue du processeur (le processeur y mettrait des données que le matériel d'affichage synchroniserait au moniteur) .
Supercat
@PeterMortensen De nombreuses cartes SD ont un processeur intégré pour gérer le flash. Certaines cartes ont un cœur ARM complet de 32 bits auquel 16 ou 32 Ko de RAM sont probablement rattachés.
alex.forencich
@ alex.forencich: Oui, mais l'interface SPI permettant de faire fonctionner une carte SD SDHC ne nécessite-t-elle pas un tampon côté hôte (système intégré / microcontrôleur), contrairement aux cartes plus anciennes? C'est-à-dire que l'adressage des bits n'est plus possible pour les nouvelles cartes (SDHC)? Ou est-ce seulement dépendant du système de fichiers (l'adressage de bits est toujours possible)? Les cartes les plus récentes ne nécessitent-elles pas des transferts de blocs (et nécessitent donc une mémoire tampon de 256 ou 512 octets)?
Peter Mortensen
Oui, 512B, si je me souviens bien. Vous pouvez simplement écrire un pilote de carte SD inefficace pour supprimer les X premiers octets de données -> aucun tampon "volumineux" n'est nécessaire.
dimanche
3

Outre les excellents arguments relatifs au coût et à la fabrication, il existe étonnamment peu de demande pour beaucoup de RAM sur puce.

Je travaille souvent avec des microcontrôleurs avec des mémoires flash de plusieurs dizaines de Ko (16 Ko, 32 Ko) et des mémoires RAM de l'ordre du Ko (1 Ko, 2 Ko). Je manque souvent de mémoire flash et presque jamais de mémoire vive. Dans la plupart de mes projets, je me rapproche de la limite de mémoire flash, mais j'ai généralement besoin de beaucoup moins de 20% de la mémoire vive.

La plupart des très petits microcontrôleurs ont deux types de rôles:

  • régulation et contrôle: ils doivent contrôler une machine. Même dans le cas d'un algorithme de contrôleur compliqué, qui peut occuper des dizaines de ko d'espace de code, très peu de RAM est nécessaire. Vous êtes en contrôle d'un processus physique et avez des variables contenant quelques unités physiques, et peut-être quelques variables en tant que compteurs de boucles. Pas besoin de plus.

  • traitement des données: dans les rares cas où vous devez stocker une grande quantité de données en même temps, vous pouvez utiliser de la RAM externe. Pratiquement tous les microcontrôleurs modernes ont un support natif pour cela. Si vous avez besoin d'un programme simple utilisant beaucoup de mémoire, il sera à la fois moins coûteux et moins coûteux d'utiliser un petit microcontrôleur et de la mémoire vive externe, plutôt qu'un microcontrôleur de haut niveau. Personne ne fabrique de contrôleurs avec peu de ports, une petite mémoire flash et une mémoire vive importante, car ils sont si peu sollicités.

vsz
la source
2

Toutes les raisons déjà mentionnées sont, bien sûr, techniquement valables et précises. Cependant, n'oubliez pas que l'électronique est une entreprise et que les MCU constituent l'un des créneaux les plus compétitifs du secteur de l'électronique.

J'ose dire que les raisons réelles de lier le prix d'un MCU à la quantité de mémoire SRAM intégrée sont principalement des raisons de marketing et non de coût:

  • Dans la plupart des conceptions, la fréquence d'horloge maximale pouvant être atteinte n'est pas le facteur limitant. Au lieu de cela, la quantité de mémoire SRAM disponible est de. Ne vous méprenez pas, la fréquence de l'UC est extrêmement importante, cependant, dans un certain segment de la famille des MCU , différents modèles de périphériques ne sont généralement pas proposés à des prix différents en fonction de la fréquence maximale de l'UC. De plus, le stockage de programme Flash est l'autre facteur limitant clé. Cependant, je ne me concentrerai pas trop sur Flash (la question s'adresse spécifiquement à SRAM).

  • La quantité de mémoire SRAM disponible est directement liée au niveau de complexité que vous pourrez intégrer à votre MCU, que ce soit avec des bibliothèques tierces ou avec votre propre code déployé. Il est donc naturel de segmenter sur la base des prix de votre MCU au moyen d’une mesure «naturelle». Il est compréhensible pour un client technique d’accepter qu’une MCU capable de tâches plus complexes (davantage de SRAM, plus de stockage Flash) coûte plus cher. Le prix, ici, est un reflet de la valeur sous-jacente (capacités de livraison) du MCU. Le stockage Flash est généralement offert dans une quantité proportionnelle à la SRAM.

  • Au contraire, si vous prenez le marché des processeurs de bureau et mobiles, vous ne pouvez généralement pas vous procurer un MCU / CPU spécifique avec différentes tailles de SRAM. Au lieu de cela, le schéma de tarification est généralement construit sur les capacités d'exécution / de performances du MCU / CPU: fréquence, nombre de cœurs, efficacité énergétique ...

jose.angel.jimenez
la source
Je pense que cela est probablement exact, mais existe-t-il des preuves? Vous aimez effacer des traces pour vendre une puce en tant que puce b?
Grady Player
Uhm ... pensée intéressante. Je n'ai aucune preuve de telles pratiques. Cependant, cela soulève une question intéressante sur les coûts de fabrication sous-jacents. Serait-il plus coûteux de gaspiller l’immobilier de la puce de silicium (wafer) dans le cas où une puce de taille de SRAM plus élevée serait grattée à une taille de SRAM inférieure? Ou l’augmentation des coûts de fabrication et d’inventaire associés à la fabrication non pas d’un seul appareil mais de deux? Je crains fort que l’ensemble du secteur de l’électronique ne soit pas enclin à discuter ouvertement de ses coûts. Nous pouvons ne jamais le savoir.
jose.angel.jimenez
1
Pour preuve: la MT6250 est une puce à puces multiples, utilisée pour les téléphones à puce monopuce, coûte moins de 2 USD en volume et est beaucoup plus complexe qu'un mcu, et comprend un die sram de 8 Mo. Il serait trivial de le construire à l'aide de technologie un SRAM riche MCU.
Hulkingtickets
Ce serait une bonne réponse à "pourquoi l’étiquette de prix du MCU est-elle liée à la quantité de mémoire SRAM intégrée?". Mais cela ne semble pas répondre à la question initiale. Pourquoi y a-t-il si peu de microcontrôleurs disponibles avec plus de 512 Ko de SRAM sur puce, à tout prix? Pourquoi y a-t-il tant de microcontrôleurs dotés de SRAM «bizarres» sans taille de puissance supérieure à 2, alors que les fabricants de puces SRAM dédiées semblent penser que les coûts de stockage réduits font qu'il vaut la peine de produire uniquement des puces SRAM dédiées de taille supérieure à 2?
davidcary
1

Vous devez donc d’abord considérer que 16 Ko ou 32 Ko représentent une énorme quantité de mémoire et que la plupart des microcontrôleurs vendus aujourd’hui ne disposent pas d’une telle quantité de RAM.

De nombreux programmes de microcontrôleurs nécessitent 10 ou 50 octets de mémoire. Même des choses plus complexes nécessitent principalement des centaines d'octets.

Il existe essentiellement trois cas d'utilisation de RAM en ordre de ko: a) lorsque votre microcontrôleur crée des graphiques b) lorsque vous utilisez un microcontrôleur pour des calculs arbitraires volumineux

Deuxièmement, notez que si vous parlez de RAM de microcontrôleur, vous parlez de cache de niveau 0 / niveau 1. Si vous considérez qu'un processeur Intel Haswell ne dispose "que" de 64 Ko de cache de niveau 1, vous réexaminerez la taille de la RAM d'un microcontrôleur.

Troisièmement, vous pouvez attacher n’importe quelle quantité de RAM externe à un microcontrôleur, et même plus qu’à un processeur.

Personnellement, je développe de nombreuses applications de microcontrôleurs et je n'ai jamais eu besoin de 1 Ko de mémoire, ni même plus. J'ai aussi jamais utilisé de RAM externe.

Les choses sont différentes si nous arrivons à ROM (aujourd'hui Flash), car votre programme et vos données sont dans la ROM. Il existe vraiment de nombreuses applications où vous attachez une ROM externe à votre microcontrôleur, car vous avez beaucoup de données.

Examinons un exemple: analysons une application de microcontrôleur et prenons un lecteur MP3 portable avec écran et 4 gigaoctets de Flash.

Pour cette application, vous avez besoin d'environ 1 Ko de RAM. C'est assez pour faire le travail. Cependant, vous pouvez utiliser davantage de RAM pour des mémoires tampons plus importantes afin d'accélérer l'écriture USB à Flash.

Vous voyez maintenant la différence: un PC type contient tous les programmes et toutes les données dans la RAM. Par conséquent, il nécessite beaucoup de RAM. Pour le microcontrôleur, tout est en Flash / ROM.

Franc
la source
2
Vous sous-estimez l'utilisation de la RAM dans de nombreuses applications. Pas énormément, mais peut-être un facteur de 10 à 100 selon les cas. Les lecteurs MP3 doivent traiter les signaux numériques.
Jason S
J'aimerais savoir pourquoi l'un de vous deux dit ces choses. Quels types de commandes C nécessitent de la RAM. Plutôt que de dire "ces applications nécessitent plus de RAM," je préférerais "ces opérations nécessitent plus de RAM, car ..."
Frederick
-1

Lors de la conception d'un MCU, vous devez faire face à des conditions qui ne sont pas aussi importantes sur les PC.

  1. Durabilité

    Pour choisir les composants, vous ne prenez pas nécessairement les pièces les plus performantes, mais celles qui ont fait leurs preuves après plusieurs années d’utilisation seront disponibles pendant plusieurs années et capables de fonctionner 24h / 24 et 7j / 7. ans. En raison de cette situation, si un contrôleur est sur le marché depuis plusieurs années et fait bien son travail, il semble avoir une mémoire RAM faible, comparé au standard PC actuel. Quoi qu'il en soit, il fait bien son travail et il ne devrait pas être nécessaire de le remplacer, si l'ingénierie fonctionnait bien.

  2. Espace

    Les unités de microprocesseur sont littéralement des micros. Vous devez réduire l'espace nécessaire au strict minimum. Bien sûr, vous pouvez obtenir 256 Mo dans le même espace que des puces de 64 Ko vieilles de 10 ans. C'est là que le n ° 1 vient à point.

  3. Prix

    Non seulement le prix d'achat, mais aussi la consommation d'énergie. Vous ne voulez pas concevoir un MCU qui contrôle un système d’entrée, nécessitant 1000 W, si votre concurrent en a un qui nécessite seulement 25 W. Et bien sûr, un prix d’achat moins cher (de même qualité) est: Toujours mieux.

Sempie
la source
1
c'est un microprocesseur de très haute puissance!
KyranF
2
Je suppose qu'un MCU de 1kW ne resterait pas dans un état solide très longtemps.
Dan Bryant
1
Ces trois points sont extrêmement importants dans la conception des PC de nos jours.
@KyranF: Oui, divisez les deux nombres par 100. Mais au moins, il minimise la différence de puissance relative entre un processeur haute performance et des microcontrôleurs basse consommation pour les applications avec batterie.
Ben Voigt