Microcontrôleur – Chapitre 4 – Les mémoires

Afin de stocker un programme, des données temporaires ou des données persistantes, le microcontrôleur dispose de plusieurs types de mémoires, ayant chacune des caractéristiques particulières.

La mémoire vive (ou RAM)

Il s’agit d’un espace de stockage où va se dérouler l’exécution d’un programme. Elle doit être rapide en lecture et écriture. Elle est généralement volatile, c’est à dire qu’elle est remise à zéro lorsqu’elle n’est plus sous tension.

Ses caractéristiques la rendent chère, c’est pourquoi elle est en disponible de façon très limitée au sein d’un microcontrôleur (de quelques dizaines d’octets à plusieurs kilo-octets pour l’entrée de gamme). Cette limitation encourage particulièrement l’optimisation du code afin de l’utiliser et la nettoyer efficacement.

En utilisant un compilateur, le developpeur n’a pas à s’occuper de la RAM, il doit seulement veiller à ne pas la gaspiller. En revanche, si on souhaite écrire un programme en assembleur, il devient necessaire de se familiariser avec les instructions d’ecriture et lecture en RAM, ainsi qu’avec l’adressage de ses secteurs.

La mémoire morte (ou ROM)

Cette mémoire est beaucoup plus lente mais permet de rester persistante même hors-tension. Un microcontrôleur va utiliser deux types de mémoire morte :

  • la mémoire « programme », qui va contenir le code assembleur à executer sur le processeur lors de la mise sous tension
  • la mémoire « données », où le programme pourra stocker des données de façon persistante. Elle est souvent appelée EEPROM pour Electrically-Erasable Programmable Read-Only Memory (mémoire effaçable électriquement, programmable en lecture seule).

Les mémoires peuvent être stockées sur un même composant ; on distingue ensuite deux architectures :

  • Harvard, qui va séparer l’accès (par les instructions) à la mémoire programme de la mémoire données, au point que les bus utilisés soient séparés. On peut ainsi transférer simultanément des instructions depuis la mémoire programme et des données vers la mémoire données
  • Von Neumann, où une unité de contrôle gère les entrées et sorties vers une mémoire unifiée. Les instructions y sont donc des données manipulables comme celles-ci.
    (il y a bien entendu d’autres subtilités, mais on restera sur celles-ci)

    Bien que ROM signifie à l’origine « Read-Only Memory » (soit mémoire en lecture seule), il est possible d’y écrire et y réécrire, même depuis le programme lui-même. Sa taille varie beaucoup en fonction de la gamme, et peut aller de quelques centaines d’octets à plusieurs millions.

    Il est possible d’utiliser également des mémoires externes, au travers des bus de communication. Celle-ci sont  très lentes comparées à la ROM interne, mais permettent d’étendre la mémoire disponible pour des programmes très gourmands. Il faudra par contre gérer au niveau du logiciel l’écriture et la lecture depuis ces composants.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*