SMI C1 Introduction
SMI C1 Introduction
SMI C1 Introduction
GIF-3002 Introduction
Ce document rappelle certaine notions d’électronique et d’informatique nécessaires à la
bonne compréhension du cours de Système Microprocesseur et Interfaces. La suite du
cours assumera que les notions qui suivent sont assimilées, car déjà vue dans d’autres
cours.
L’apparition des transistors vers la fin des années 1960 (1954, Bipolar Junction
Transistor, Texas Instrument --- 1960, Metal-Oxyde Semiconductor, Bell Labs) a permis
de réduire considérablement la taille des circuits avec microprocesseurs.
Les transistors ont ensuite été intégrés dans de petits circuits électroniques simples
(portes logiques ou amplificateur opérationnel par exemple). Puis, ils ont été intégré dans
des circuits de plus en plus complexes (VLSI = Very Large Scale Integration).
Les premiers microprocesseurs avec transistors (de 1964 à 1971) étaient donc constitués
de plusieurs circuits intégrés simples. Ils étaient conçus avec une logique câblée (le
microprocesseur exécute chaque instruction avec du matériel unique) ou avec des micro
instructions (le microprocesseur découpe chaque instruction en sous-instructions qui
peuvent être communes à des instructions différentes)1.
En 1971 est apparu le premier microprocesseur entièrement contenu sur un seul die : le
4004 d’Intel. Ce précurseur a rapidement été suivi d’autres microprocesseurs, de plus en
plus puissants.
La Loi de Moore (1965, par Gordon Moore, co-fondateur d’Intel), décrit en partie
l’augmentation de puissance des microprocesseurs : elle stipule que le nombre de
transistors par pouce carré, pour les microprocesseurs, double à tous les deux ans (voir
http://fr.wikipedia.org/wiki/Loi_de_Moore pour une illustration). Cette augmentation est
permise grâce à l’amélioration technologique des techniques “d’écriture” des transistors à
l’intérieur de silicone.
Les concepteurs de microprocesseurs ont utilisé les transistors, de plus en plus nombreux
pour une surface donnée, de plusieurs façons. D’un côté, la puissance des
microprocesseurs a été augmentée. D’un autre côté, le niveau d’intégration a augmenté :
1
Dans les deux cas, du matériel exécute les instructions. De nos jours, les microprocesseurs découpent
toutes les instructions en sous-instructions.
Page 1 de 17
GIF-3002 Introduction
plusieurs composantes connexes aux microprocesseurs ont été intégrées dans le même
circuit, dans la même matrice de silicone.
Dans les années 2000-2010, les transistors, toujours plus nombreux par unité de surface,
ont été essentiellement utilisés afin d’augmenter le nombre de cœurs à l’intérieur des
microprocesseurs. Des avancées techniques, ont permis d’accélérer le traitement
parallèle, au niveau matériel, de plusieurs processus différents.
(http://www.emittsolutions.com/images/microcontroller_market_analysis_2008.pdf).
Page 2 de 17
GIF-3002 Introduction
D Memoire Memoire
é RAM ROM
Horloge c (données) (instructions)
o
d Bus
e d'addresse
u
r
Bus de données
Microprocesseur
Bus de contrôle
Bus de contrôle
=
Monde extérieur
Figure 1 - Système microprocesseur avec ses interfaces
2.1.1 Le microprocesseur
• Le microprocesseur exécute des instructions.
• Le microprocesseur accomplit les tâches suivantes, en boucle perpétuelle :
o Lire une instruction de la mémoire
o Décoder l’instruction lue
o Exécuter l’instruction
o Lire une instruction de la mémoire
o Décoder l’instruction lue
o Exécuter l’instruction
o …
• Le microprocesseur contient plusieurs éléments de base tel qu’illustré ci-dessous.
o L’unité de contrôle (CCU) gère l’exécution des instructions.
o Le MMU (Memory Management Unit) détermine l’adresse des
instructions (ou des données) à traiter dans la mémoire (ou les caches).
o L’unité de branchement gère les instructions de saut
o L’unité d’accès aux données gère les instructions lisant ou écrivant une
donnée en mémoire (Load/Store)
o L’ALU (Arithmetical and Logical Unit) permet d’effectuer des opérations
mathématiques ou booléennes
o L’interface de bus gère les signaux des bus pour accéder à la mémoire
Page 3 de 17
GIF-3002 Introduction
o Les registres sont des variables spéciales dans le microprocesseur (lire des
bascules D) permettant d’entreposer temporairement des valeurs pour faire
des calculs ou ayant un rôle particulier dans le microprocesseur.
Unité
d'accès aux
Bus d'adresse
données
Unité de Bus de
Registres Unité
Gestion données
d'instructions Interface
de
et de contrôle de bus
mémoire
ALU CCU
MMU
Bus de contrôle
Unité de
branchements
Microprocesseur
Figure 2 – Microprocesseur, architecture Von Neumann
Page 4 de 17
GIF-3002 Introduction
2.1.2 La mémoire
• La mémoire contient les programmes.
• La mémoire contient les données.
• Il y a plusieurs types et catégories de mémoire. La mémoire RAM (SRAM,
DRAM, DRR…) est une mémoire volatile qui contient habituellement les
données traitées par vos programmes. La mémoire ROM (EEPROM, FLASH,
ROM…) est une mémoire non-volatile qui contient habituellement les
instructions de vos programmes.
• Pour lire la mémoire: une adresse doit être choisie à partir du bus d’adresse et
l’activation de signaux sur le bus de contrôle doit déclencher l’opération. Les
données de l’adresse choisie se retrouvent sur le bus de données.
• Pour écrire la mémoire: une adresse doit être choisie à partir du bus d’adresse et le
bus de contrôle doit déclencher l’opération. Les données à l’adresse choisie sont
remplacées par celles sur le bus de données.
2
Les périphériques aussi peuvent avoir des registres! Il s’agit toujours d’une variable spéciale dans une
mémoire locale et très rapide ayant un rôle à jouer à l’intérieur du circuit intégré. Voir plus loin pour plus
de détails…
Page 5 de 17
GIF-3002 Introduction
Toutes les instructions sont des séquences de bit. Dans les architectures RISC (Reduced
Instruction Set Computer), les instructions ont toute la même longueur, c’est-à-dire le
même nombre de bits. Dans les architectures CISC (Complex Instruction Set Computer),
les instructions ont des longueurs variables, qui dépendent de l’opcode. Enfin, dans les
architectures hybrides, le processeur supporte des instructions ayant uniquement 2
longueurs différentes. De nos jours, presque tous les nouveaux microprocesseurs ont des
architectures RISC ou hybrides, même si certains microprocesseurs (ceux d’Intel par
exemple) semblent avoir des instructions de longueurs diverses : les instructions
complexes (CISC) sont découpées en instructions de longueur fixe par le
microprocesseur…
Page 6 de 17
GIF-3002 Introduction
Une plage d’adresses est attribuée à chaque mémoire et à chaque périphérique. Ces
adresses servent à désigner une cellule de mémoire ou les registres d’un périphérique
donné.
Dans la plupart des nouveaux microprocesseurs, chaque adresse est unique. Par exemple,
les adresses 0 à 1023 sont attribuées à la ROM, les adresses 8192 à 16383 sont réservées
à la RAM et les adresses 65536 à 65663 sont attribuées aux périphériques.
Pour certains systèmes microprocesseurs, les adresses sont répétées. Il peut y avoir
plusieurs adresses 0 : il peut y avoir l’adresse 0 pour la mémoire d’instruction et l’adresse
0 pour la mémoire de données. Il peut également y avoir l’adresse 0 pour la mémoire
interne et l’adresse 0 pour la mémoire externe. Il peut aussi y avoir l’adresse 0 pour la
mémoire et l’adresse 0 pour les périphériques. Il peut également y avoir les adresses 0
Page 7 de 17
GIF-3002 Introduction
pour les registres et pour le reste. Enfin, il peut y avoir des adresses 0 pour toutes les
combinaisons possibles de ces éléments.
Les adresses réservées aux périphériques sont communément appelées “ports” dans
la littérature.
2.4 Interruptions
Pour signaler un évènement, les périphériques utilisent souvent des interruptions : une
tension prédéterminée est appliquée sur une broche du microprocesseur et cette tension,
une valeur digitale, signale une interruption.
Une interruption est dite “masquée” lorsqu’elle est désactivée. Le mot “masquer » est
employé parce que le signal d’interruption est conservé de telle sorte que
l’interruption se produira immédiatement après la réactivation de l’interruption, si
l‘interruption a eu lieu pendant qu’elle était désactivée.
Une interruption non-masquable (NMI) est une interruption qui ne peut être
désactivée.
Page 8 de 17
GIF-3002 Introduction
Les interruptions ont des priorités (voir la table ci-dessous) et des numéros. Une
interruption peut interrompre une autre interruption si elle est de priorité plus élevée.
Il est possible de gérer les interruptions par interrogations successives (polling) plutôt
qu’avec une ligne dédiée: à intervalle régulier le système demande à tous les
périphériques s’ils ont un évènement à signaler.
2.5 Microcontrôleurs
Pour limiter le nombre de circuits intégrés nécessaires dans un système microprocesseur,
il est courant d’ajouter, sur le même die que le microprocesseur, de la mémoire et certains
périphériques. Le circuit intégré résultant est un microcontrôleur (microcontrôleur =
microprocesseur + mémoires + interfaces/périphériques).
Page 9 de 17
GIF-3002 Introduction
Horloge externe
Bus de données
Microprocesseur
Bus de contrôle
Bus de contrôle
Interfaces d'entrées/ Timers GPIO
Contrôle
sorties et de
d'alimentation,
communication UART ...
modes d'opération,
watchdog et reset
=
Figure 3 - Microcontrôleur
Page 10 de 17
GIF-3002 Introduction
Les registres sont des variables spéciales ayant un rôle spécial à jouer à l’intérieur
d’un circuit intégré. Le microprocesseur a des registres, la mémoire peut contenir des
registres, les périphériques ont des registres… Il s’agit habituellement d’un ensemble
de bascules D qui conservent leurs valeurs jusqu’à ce qu’un coup d’horloge de la
bascule (une écriture de registre) vienne les changer.
Microcontrôleur :
• Avantages: tout en un, fiabilité, faible coût et faible espace, simplicité générale,
développement rapide, beaucoup de choix.
• Inconvénients: prix payé pour des fonctions que l’on n’utilise pas dans une
application souvent dédiée à une tâche unique. Idem avec l’énergie utilisée.
• Utilisé dans toutes les applications embarquées!
Page 11 de 17
GIF-3002 Introduction
De nos jours, les microprocesseurs pour ordinateur de bureau tendent à intégrer des
périphériques (carte graphique par exemple) alors que les microcontrôleurs sont de plus
en plus puissants.
Memoire D D Memoire
ROM é é RAM
(instructions) c Horloge c (données)
o o
d d Bus
e e d'addresse
u u
r r
Microprocesseur
Bus de données
Avec instructions
de traitement de
signal
Bus de contrôle
Bus de contrôle
Interfaces
Circuit d'alimentation d'entrées/sorties et
et Reset de communication
=
Monde extérieur
Figure 4 – DSP, Architecture Harvard
Beaucoup de microprocesseur ayant une architecture Harvard ont trois bus plutôt que
deux, surtout lorsqu’ils ont un pipeline d’instruction (ce qui est le cas de presque tous les
Page 12 de 17
GIF-3002 Introduction
micros modernes !). Il y a un bus additionnel pour accéder aux constantes dans la
mémoire ROM (FLASH) :
2.7 DMA
Dans certains systèmes microprocesseurs, un ou des coprocesseurs exécutent des tâches
spécialisées à la demande des programmes. Ces coprocesseurs, contrôlés par le
microprocesseur (qui est lui-même contrôlé par les instructions de vos programmes),
permettent de libérer le processeur principal pour qu’il puisse réaliser d’autres tâches.
La tâche la plus commune pouvant être exécutée par un coprocesseur est le transfert de
données d’un périphérique vers la mémoire ou vice-versa. On retrouve donc, dans
presque tous les systèmes microcontrôleurs (sauf pour les moins dispendieux), un
contrôleur de DMA (Direct Memory Access). Le contrôleur de DMA, dont les registres
sont programmés et configurés par l’usager, transfert des données d’un périphérique à la
mémoire (ou vice-versa), sans intervention du microprocesseur.
Habituellement, le transfert par DMA s’effectue sur une plage contigüe de mémoire. Le
contrôleur de DMA communique les octets de données un par un (ou deux par deux,
voire même plus!) jusqu’à ce que toute la plage de mémoire soit lue ou écrite.
Page 13 de 17
GIF-3002 Introduction
Dans la plupart des systèmes microprocesseurs avec DMA, il existe des bus additionnels
entre le contrôleur de DMA, la mémoire et les périphériques pour que le microprocesseur
puisse accéder à la mémoire de donnée pendant le transfert par DMA.
Canal 1
Contrôleur DMA Mémoires RAM
Canal 2
Il existe une multitude de connections possibles entre les diverses composantes des
systèmes microcontrôleurs modernes. La matrice de bus permet :
Habituellement les séquences de bits ont une taille finie : celle d’un mot. Un mot, en
informatique, définit le nombre de bits qu’il faut pour représenter une donnée ou une
instruction.
Page 14 de 17
GIF-3002 Introduction
En informatique, un octet (byte) est une séquence de 8 bits. Un short, un int, ou un long
sont des séquences de bits plus longues que 8bits (de plus en plus longues) et multiples de
8 bits. Par exemple, un short sera 16 bits, un int sera 32 bits et un long sera 64 bits.
En informatique, les nombres sont souvent écrits en hexadécimal (avec une base 16, avec
des nombres allant de 0 à F où F vaut 15d). Cela permet de remplacer 4 bits par un seul
symbole hexadécimal (24 = 16). Par exemple, la valeur 1101b sera remplacée par Dh ou
0xD (le h or le 0x indique qu’il s’agit d’hexadécimal).
Lorsqu’un bit de signe est utilisé, le bit le plus significatif du mot indique si le nombre est
positif ou négatif (habituellement, un ‘1’ indique un nombre négatif). Par exemple
10010011b, indiquera -19 (le 1 le plus à droite –le plus significatif- indique un nombre
négatif, 0010011b indique 19).
La notation complément 2 est très largement répandue parce que les additions et les
soustractions se font toujours de la même manière (la manière traditionnelle!), peu
importe le signe des nombres additionnés ou soustraits. Par exemple, si on soustrait 0x24
de 0xC3 (0xC3 – 0x24), on obtient 0x9F : le résultat (-61 - 36 = -97) est bon même si le
premier opérande est négatif, tout comme la réponse.
Pour qu’une séquence de bits représente une fraction, il faut aussi établir une convention.
Page 15 de 17
GIF-3002 Introduction
Encore une fois, deux conventions principales existent : la virgule flottante et la norme
IEEE754. Il existe cependant une multitude de conventions moins universelles.
S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF
0 1 8 9 31
Exemples:
Page 16 de 17
GIF-3002 Introduction
Exemple 1 : Le protocole NEMA des GPS (NMEA 0183) encode toutes les valeurs en
ASCII pour que ces messages soient lisibles d’un terminal quelconque. Ainsi, le nombre
372.1 sera encodé avec 5 caractères : ‘3’, ‘7’, ‘2’, ‘.’ et ‘1’. Vous retrouverez, pour ce
nombre, les octets 0x33, 0x37, 0x32, 0x2E et 0x31 en mémoire…
Exemple 2 : Vous avez une sonde de température qui mesure des températures allant de -
30oC à 70 oC et la sonde a une précision de 0.1 oC. Malheureusement, toutes les lectures
de la sonde de température doivent être entreposées sur 10 bits seulement (de 0 à 1023).
Solution : vous décidez que 0 vaut -30 oC, que 1 vaut -29.9oC… et que 70oC est
représenté par la valeur 1000!
Les termes Little Endian (petit boutiste en français) et Big Endian (gros boutiste)
indiquent l’ordre des données sur plusieurs octets en mémoire. Une donnée sauvegardée
en Little Endian aura ses octets les plus significations aux adresses de mémoire les plus
hautes. Une donnée sauvegardée en Big Endian aura ses octets les plus significations aux
adresses de mémoire les plus basses.
Les occidentaux que nous sommes visualisent les nombres en Big Endian
conventionnellement. Ainsi, la valeur 0x1234 aura l’octet 0x12 à l’adresse 0 et l’octet
0x34 à l’adresse 1.
Page 17 de 17