[[{"text":"
","title":"Circuits intégrés","tagtitle":"h1","posi":0},{"edit":"
"}],[{"text":"
Les circuits électroniques d'un ordinateur (ie ménoire, microprocesseur, etc.) manipulent uniquement des chiffres binaires 0 et 1 qui, en interne, sont simplement représentés par des tensions électriques.
","title":"Transistor et portes logiques","tagtitle":"h1"},{"edit":"
Mettre le résultat ici (code et figure).
"},{"canvas":{"url":"assets/jscanvas/cancas1.js","fct":"test","width":400,"height":140},"posi":0},{"text":"
Ainsi, le chiffre 0 est représenté par
une tension basse (proche de 0 volt) et le chiffre 1 par une tension haute (que l'on notera +V volts, car cette tension varie selon les circuits électroniques).
Par exemple, pour le microprocesseur 4004 d'intel (1971) +V=5V et pour le intel i7 (2020) +V=0,6V
"}],[{"text":"
Les opérateurs (logiques ou arithmétiques) sur ces nombres binaires sont construits à partir de circuits électroniques dont les briques élémentaires sont appelés transistors (Tr).
Les transistors que l'on trouvent dans les circuits électroniques des ordinateurs se comportent comme des interrupteurs qui laissent ou non passer un courant électrique, selon le mode du tout ou rien (commutation), comme représenté de la manière suivante:
","title":""},{"edit":"
"},{"canvas":{"url":"assets/jscanvas/cancas1.js","fct":"diapo1","width":700,"height":450},"posi":0},{"text":"
Dans ce schéma, la commande de l'interrupteur est jouée par la broche B (appelée la Base).
Lorsqu'elle est sous tension haute (niveau logique 1), le courant circule entre la broche C (appelée Collecteur) et la broche E (appelée Emetteur) et la tension entre la borne C et la masse M passe à 0 (niveau logique 0).
Inversement lorsque la base est sous tension basse (niveau logique 0), le courant est bloqué entre la broche C et la broche E et la tension entre la borne C et la masse M passe à +Vcc (niveau logique 1).
Ce simple transistor permet de réaliser une opération élémentaire appelée porte logique NON (appelée NOT en anglais).
","title":"Circuits intégrés","tagtitle":"h1","posi":0},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Une porte logique est une fonction qui prend un où plusieurs bits en entrée et qui produit un bif en sortie.
La porte NOT implantée par un transistor est la plus simple de toutes les portes.
Elle n'a qu'un seul bit en entrée (P) et sa sortie (Q) vaut 0 quand l'entrée vaut 1, et inversement elle vaut 1 quand son entrée est à 0.
Graphiquement, on représente la porte NOT comme dans le schéma ci-dessous, avec à gauche la notation européenne et à droite la notation américaine.
| |
Symbole européen | Symbole américain
|
Pour représenter le calcul réalisé par une porte logique, on utilise une table logique (ou table de vérité) qui relie les valeurs des entrées à la valeur du résultat.
La table logique de la porte NOT cst donnée ci-dessous.
Porte NOT
La porte Non a pour équation logique Q=/P.
Vous pouvez vérifier la table de vérité avec l'application ci-dessous:
","title":""},{"canvas":{"url":"assets/jscanvas/cancas1.js","fct":"diapo2","width":360,"height":220},"posi":0},{"text":"","title":"Circuits intégrés","tagtitle":"h1","posi":0},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
On peut fabriquer d'autres portes logiques en combinant plusieurs transistors.
Par exemple, en combinant deux transistors en série comme ci-dessous
(schéma de gauche) on peut fabriquer la porte NON ET (appelée NAND en anglais) qui, pour deux entrées P et Q, produit un résultat R dont le calcul est donné par la table de vérité à droite.
","title":""},{"edit":"
"},{"canvas":{"url":"assets/jscanvas/cancas1.js","fct":"diapo3","width":290,"height":290},"posi":0},{"text":"
On donne également ci-dessous les schémas européen et américain pour cette porte.
| |
Symbole européen | Symbole américain |
A l'aide de l'animation compléter la table de vérité de la port NAND.
L'équation d'une porte nand est R=/(P.Q)
","title":"Circuits intégrés","tagtitle":"h1","posi":0},{"edit":"
"}],[{"text":"
De la même manière, en combinant deux transistors en parallèle, on obtient la porte NON OU (NOR en anglais) donnée ci-dessous.
","title":""},{"edit":"
"},{"canvas":{"url":"assets/jscanvas/cancas1.js","fct":"diapo4","width":390,"height":290},"posi":0},{"text":"
On donne également ci-dessous les schémas européen et américain pour cette porte NOR .
| |
Symbole européen | Symbole américain |
A l'aide de l'animation compléter la table de vérité de la port NOR.
L'équation d'une porte nor est R=/(P+Q)
","title":"Circuits intégrés","tagtitle":"h1","posi":0},{"edit":"
"}],[{"text":"
Les portes NAND et NOR sont fondamentales dans les circuits électroniques car elles sont complètes, c'est-à-dire que n'importe quel circuit peut être conçu en utilisant uniquement ces deux portes.
Par exemple, la porte NOT peut être fabriquée à partir d'une porte NAND en reliant les deux entrées de cette porte, comme ci-dessous.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Une autre porte logique très inportante est la porte ET (AND en anglais).
Elle peut aussi être construite avec plusieurs portes NOR.
","title":""},{"edit":"
"},{"canvas":{"url":"assets/jscanvas/cancas1.js","fct":"diapo5","width":340,"height":80},"posi":0},{"text":"
On donne également ci-dessous les schémas européen et américain pour cette porte AND .
|
|
Symbole européen | Symbole américain |
A l'aide de l'animation compléter la table de vérité de la port AND.
L'équation d'une porte and est R=P.Q
","title":"Circuits intégrés","tagtitle":"h1","posi":0},{"edit":"
"}],[{"text":"
De la même manière, la porte OÙ (OR en anglais) peut aussi être construite avec plusieurs portes NAND.
Porte OR :
","title":""},{"edit":"
"},{"canvas":{"url":"assets/jscanvas/cancas1.js","fct":"diapo6","width":350,"height":80},"posi":0},{"text":"
On donne également ci-dessous les schémas européen et américain pour cette porte OR.
| |
Symbole européen | Symbole américain |
A l'aide de l'animation compléter la table de vérité de la port OR ou OU.
L'équation d'une porte OR est R=P+Q.
","title":"Circuits intégrés","tagtitle":"h1","posi":0},{"edit":"
"}],[{"text":"
Les grands principes de fonctionnement des ordinateurs tels que nous les connaissons aujourd'hui reposent sur des travaux réalisés au milieu des années 40 par une équipe de chercheurs de l'université de Pennsylvanie.
Ces travaux concernaient la conception d'un ordinateur dans lequel les programmes à exécuter étaient stockés au même endroit que les données qu'ils devaient manipuler, à savoir dans la mémoire de l'ordinateur.
Cette idée d'utiliser une zone de stockage unique pour les programmes et les données est toujours utilisée aujourd'hui.
Cette architecture est appelée modèle de
von Neumann, en l'honneur du mathématicien et physicien John von Neumann qui participa à ces travaux et qui publia en 1945 un rapport sur la conception de l'EDVAC, ce nouvel ordinateur basé sur ce modèle de calcul.
EDVAC 1940
Le schéma de la figure ci-dessous décrit l'organisation des principaux composants d'un ordinateur selon l'architecture de von Neumann.
Ce modèle comporte quatre types de composants:
- une unité arithmétique et logique,
- une unité de contrôle,
- la mémoire de l'ordinateur
- et les périphériques d'entrée-sortie.
Figure 1 — Architecture de von Neumann.
Les deux premiers composants sont habituellement rassemblés dans un ensemble de circuit électronique qu'on appelle Unité Centrale de traitement où plus simplement processeur (CPU en anglais, pour Control Processing Unit).
Lorsqu'un processeur rassemble ces deux unités dans un seul et même circuit, on parle alors de microprocesseur.
- L'unité arithmétique et logique (Arithinetic Logic Unit en anglais ou ALU) est uu circuit électronique qui effectue à la fois des opérations arithmétiques et des opérations sur les bits de nombres entiers en binaire.
- L'unité de contrôle {Control Unit en anglais ou CT) joue le rôle de chef d'orchestre de l'ordinateur. C'est ce composant qui se charge de récupérer en mémoire la prochaine instruction à exécuter et les données sur lesquelles elle doit opérer, puis les envoie à l'unité arithmétique et logique.
La mémoire de l'ordinateur contient à la fois les programmes et les données.
On distingue habituellement deux types de mémoires:
- La mémoire vive ou volatile est. celle qui perd son contenu dès que l'ordinateur est éteint. Les données stockées dans la mémoire vive d'un ordinateur peuvent être lues, effacées ou déplacées comme on le souhaite. Le principal avantage de cette mémoire est la rapidité d'accès aux données qu'elle contient, quel que soit l'emplacement mémoire de ces données. On parle souvent de mémoire RAM en anglais, pour Random-Access Memory.
- La mémoire non volatile est celle qui conserve ses données quand on coupe l'alimentation électrique de l'ordinateur. Il existe plusieurs types de telles mémoires.
Par exemple, la ROM, pour Read-Only Memory en anglais, est une mémoire non modifiable qui contient habituellement des données nécessaires au démarrage d'un ordinateur ou tout autre information dont l'ordinateur à besoin pour fonctionner. La mémoire Flash est un autre exemple de mémoire non volatile. Contrairement à la ROM, cette mémoire est modifiable (un certain nombre de fois) et les informations qu'elle contient sont accessibles de manière uniforme. Contrairement à la RAM, ces mémoires sont souvent beaucoup plus lentes, soit pour lire les données, soit pour les modifier.
Il existe un très grand nombre de périphériques d'entrées/sortie pour un ordinateur.
On peut tenter de les classer par familles. Tout d'abord, les périphériques d'entrée:
- les dispositifs de saisie comme les claviers ou les souris,
- les manettes de jeu, les lecteurs de code-barres,
- les scanners, les appareils photos numériques, les webcams, etc.
Ensuite, les périphériques de sortie comme :
- les écrans et vidéo-projecteurs.
- les imprimantes,
- les haut-parleurs, etc.
Enfin, certains périphériques sont à la fois des dispositifs d'entrée et de sortie, comme par exemple :
- les lecteurs de disques (CD, Blue Ray, etc),
- les disques durs, les clés USB ou les cartes SD,
- les cartes réseaux (modems), etc.
Les flèches du diagramme de la figure ci-dessous décrivent les différentes interactions entre ces composants.
Pour les comprendre, nous allons passer
rapidement en revue le fonctionnement de chaque composant et ses interactions avec les autres composants de l'ordinateur.
Unité de contrôle
Cette unité est essentiellement constituée de trois sous-composants. Tout d'abord, deux registres (mémoires internes très rapides).
Le premier est le registre d'instruction, dénommé IR (car en anglais il se
nomme instruction Register), qui contient l'instruction courante à décoder et exécuter.
Le second registre est le pointe (car en anglais il se nomme Instruction Pointer), qui indique l'emplacement mémoire de la prochaine instruction à exécuter.
Le troisième sous-composant est un programme particulier, appelé micro-programme, qui est exécuté par le CU et qui contrôle presque tous les mouvements de données de la mémoire vers l'ALU (et réciproquement) ou les périphériques d'entrée-sortie.
L'unité de contrôle est donc tout naturellement connectée à tous les autres composants de l'ordinateur.
Unité arithmétique et logique
Cette unité est composée de plusieurs registres, dits registres de données, et d'un registre spécial, appelé accumulateur, dans lequel vont s'effectuer tous les calculs.
À ces registres s'ajoutent tout un tas de circuits électroniques pour réaliser des opérations arithmétiques (addition, soustraction, etc), des opérations logiques (et, ou, complément à un, etc.), des comparaisons (égalité, inférieur, supérieur, etc.), des opérations sur les bits (décalages, rotations) ou des opérations de déplacements mémoire (copie de ou vers la mémoire).
Les entrées d'une ALU sont les données sur lesquelles elle va effectuer une opération (on parle d'opérandes).
Ces registres sont chargés avec des valeurs venant de la mémoire de l'ordinateur et c'est l'unité de contrôle qui indique quelle opération doit être effectuée.
Le résultat d'un calcul (arithmétique ou logique) se trouve dans l'accumulateur.
Cependant, l'ALU peut également envoyer des signaux pour indiquer des erreurs de calcul (division par zéro, dépassement de la mémoire, etc.) où des résultats de comparaison (inférieur, supérieur, etc).
La mémoire
Nous avons vu les mouvements de données entre l'unité centrale de traitement et la mémoire de l'ordinateur.
Ces échanges se font à travers un médium de communication appelé bus.
Mais les périphériques d'entrée-sortie peuvent également lire et écrire directement dans la mémoire à travers ce bus, sans passer par le CPU.
Cet accès direct à la mémoire est réalisé par un circuit électronique spécialisé appelé controleur DMA, pour Direct Memory Access en anglais.
Les dispositifs d'entrée-sortie
Ces composants sont connectés à l'ordinateur par des circuits électroniques appelés ports d'entrée-sortie sur lesquels il est possible d'envoyer ou recevoir des données.
L'accès à ces ports se fait habituellement à travers des emplacements mémoires à des adresses prédéfinies.
Ainsi, l'envoi ou la réception de données revient simplement à lire ou écrire dans ces emplacements réservés.
Pour connaître l'état d'un périphérique, le CPU peut soit périodiquement lire dans ces emplacements mémoires, mais il peut aussi être directement prévenu par un périphérique d'un changement à travers un mécanisme spécial d'interruption prévu à cet effet.
Une fois interrompu, le CPU peut simplement lire le contenu des ports.
","title":"Architecture de von Neumann ","tagtitle":"h1"},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Limitation du modèle de von Neumann
Ce modèle impose un va-et-vient constant entre le CPU et la mémoire, soit pour charger la prochaine instruction à écouter, soit pour récupérer les données sur lesquelles l'instruction courante doit opérer.
Cependant, la différence de vitesse entre les microprocesseurs (nombre d'opérations par seconde) et la mémoire (temps d'accès) est telle qu'aujourd'hui, avec cette architecture, les microprocesseurs modernes passeraient tout leur temps à attendre des données venant de la mémoire, qui, bien qu'ayant aussi gagné en rapidité, reste beaucoup plus lente qu'un CPU.
C'est ce qu'on appelle le goulot d'étranglement du modèle de von Neumann.
Pour tenter de remédier à ce problème, les fabricants d'ordinateurs ont inventé les mémoires caches.
Ce sont des composants très rapides (mais
très chers) qui s'intercalent entre la mémoire principale et le CPU.
L'idée principale pour gagner du temps est qu'une donnée utilisée une fois a de grandes chances d'être utilisée plusieurs fois.
Ainsi, la mémoire cache est chargée avec des données provenant de la RAM quand une instruction en à besoin, ceci afin de diminuer le temps d'accès ultérieurs à ces données.
D'autres pistes ont également été explorées. Il s'agit des architectures
dites parallèles. Le modèle de von Neumann est également appelé SISD (Single Instruction Single Data, une seule instruction et une seule donnéc), le CPU exécutant un seul flot d'instructions sur des données dans une seule mémoire.
- Le modèle SIMD (pour Single Instruction Multiple Data). Il s'agit d'une architecture avec un seul CPU où une instruction peut être appliquée en parallèle à plusieurs données, pour produire plusieurs résultats en même temps.
- Le modèle MIMD (pour Multiple Instructions Multiple Data). Il s'agit d'une architecture dotée de plusieurs CPU qui exécutent chacun un programme, de manière indépendante, sur des données différentes.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Gordon Earle Moore
né en 1929
En 1975, Gordon E. Moore (cofondateur de la société Intel) énonça la conjecture suivante sur l'évolution des capacités des circuits intégrés, appelés familièrement puces électroniques:
Dans les microprocesseurs, le nombre de transistors sur une puce va doubler tous les deux ans.
Bien que fondée sur un constat empirique de l'industrie des fabricants de circuits entre les années 1965 et 1975, cette prédiction, qu'on appelle aussi loi de Moore, s'est révélée incroyablement juste.
Intel 4004
2050 Transitores
Gravure 10 micromètres
1971
Apple M1
16 milliards de transistors
Gravure 5 nanomètres
2020
On est ainsi passé de 2250 transistors en 1971 sur un microprocesseur Intel 4004 (un des premiers microprocesseurs) à plusieurs dizaines de milliards aujourd'hui.
Sur les derniers microprocesseurs, où la taille des transistors n'est que de 5 nanomètres (5nm), soit à peine plus que l'épaisseur de quelques dizaines d'atomes de silicium.
Cette loi de Moore, qui est (plus ou moins) généralisable à tous les composants électroniques (mémoire, etc.), à permis non seulement une augmentation de la puissance de calcul des ordinateurs (en augmentant leur fréquence de fonctionnement grâce à une diminution de la distance entre les composants), mais également une baisse des coûts (en rassemblant plusieurs composants en un seul).
La diminution de la taille des transistors a également permis de baisser la tension électrique pour les faire fonctionner, ce qui a engendré une diminution de leur consommation énergétique à puissance de calcul équivalente.
La miniaturisation des circuits électroniques est telle qu'il est possible aujourd'hui de rassembler sur une même puce tous les composants essentiels d'un ordinateur (microprocesseur, mémoire, interfaces d'entrées-sorties, etc.).
Ces systèmes complets, que l'on retrouve dans tous les systèmes embarqués, portent les noms de microcontrôleur, système sur puce (en anglais, System on Chip) ou circuit logique programmable.
","title":"L'évolution des microprocesseurs","tagtitle":"h1"},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Source : https://www.arduino.cc
Les microcontrôleurs sont des circuits intégrés qui regroupent sur une même puce (de quelques centimètres carrés) un microprocesseur, de la mémoire, des ports d'entrée-sortie, des périphériques et des bus de communication.
La puissance de caleul et la capacité en mémoire de ces puces sont bien en dessous des composants que l'on trouve sur les cartes mères des ordinateurs.
Ainsi, la fréquence d'horloge (qui détermine le nombre d'instructions exécutées par seconde) est généralement de quelques dizaines de mégahertz (MHz) et la taille de la mémoire se mesure seulement en kilo octets (Ko).
En revanche, les microcontrôleurs ont une consommation électrique très faible, ce qui leur confère une très grande autonomie lorsqu'ils sont alimentés par des batteries.
Enfin, leur coût de fabrication est aussi très réduit et les microcontrôleurs s'achètent pour seulement quelques euros.
Ces «mini»-ordinateurs sont principalement utilisés dans des systèmes
informatique embarqués, par exemple dans des avions, des voitures, des robots, etc.
Les rôles des microcontrôleurs dans ces systèmes sont très spécifiques mais ils partagent néanmoins certaines caractéristiques:
- acquisition de données (grandeurs physiques),
- contrôle d'un processus (actions mécaniques ou électroniques),
- contraintes de temps.
Prenons l'exemple d'un régulateur de vitesse d'une voiture qui maintient le véhicule à une vitesse définie par le conducteur:- il récupère la vitesse de la voiture via un capteur externe branché à l'un de ses ports d'entrée;
- il est en charge de contrôler l'accélération ou le freinage automatique du véhicule pour conserver la vitesse définie par le conducteur et pour cela il envoie des ordres à des actionneurs, externes également, reliés à ses ports de sortie;
- il est soumis à des contraintes temporelles (temps de réponse) très fortes pour garantir la sécurité des passagers.
Des périphériques auxiliaires, intégrés dans la puce du microcontrôleur, peuvent être nécessaire pour réaliser cette tâche.
Par exemple, un filtre de conversion analogique/numérique est utilisé pour interpréter les données analogiques en entrée du capteur.
Un timer peut aussi être utilisé pour mesurer le temps afin de s'assurer que les réponses seront envoyées dans un
certain délai.
Étant données les capacités de calcul et de mémoire des microcontrôleurs, il n'est pas envisageable d'y faire tourner un système d'exploitation (OS) qui prendrait beaucoup trop de place et de temps d'exécution.
De plus, un OS complique fortement la mise au point d'applications temps réel car il faut maîtriser par exemple quand celui-ci va interrompre les processus en
activité, combien de temps prend le basculement entre les tâches, etc.
Nous découvrirons ces notion dans la séquence suivante.
","title":"Microcontrôleurs"},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Architecture d'un microcontrôleur
Les microcontrôleurs sont principalement des composants autonomes qui, dès qu'ils sont sous tension, exécutent le programme contenu dans leur mémoire.
Ainsi, la principale différence entre l'architecture d'un microcontrôleur et celle d'un ordinateur basée sur le modèle de von Neumann est que la mémoire qui contient les programmes n'est pas la même que celle qui contient les données.
La mémoire Programme est une mémoire morte, c'est-à-dire une mémoire qui ne
perd pas l'information qu'elle contient quand le microcontrôleur n'est plus alimenté en électricité.
Il y à plusieurs type de mémoire morte:
- ROM (Read-Only Memory), désigne une mémoire dont le contenu est enregistré à la construction de la mémoire et ne peut être que lu.
- EEPROM (Electrically-Erasable Programmable Read-Onty Memory), désigne une mémoire dont le contenu peut être écrit et effacé plusieurs fois. L'accès en lecture/écriture est assez lent, mais on peut effacer et écrire son contenu octet par octet.
- FLASH, désigne un type de mémoire similaire à l'EEPROM mais avec un accès très rapide en lecture et (un peu moins) rapide en écriture.
Contrairement à l'EEPROM, la mémoire FLASH est découpée en secteurs physiques (dont la taille varie de quelques centaines d'octets à plusieurs kilo octets) et ne peut être effacée ou écrite octet par octet comme l'EEPROM, mais uniquement secteur par secteur.
De plus, pour réécrire un octet, on est obligé d'effacer tout le secteur qui le
contient avant d'écrire (un secteur entier).
La mémoire Données (Data) peut être composée d'une partie de mémoire morte et d'une autre de mémoire vive (aussi appelée mémoire RAM, pour Random Access Memory), c'est-à-dire de la mémoire dans laquelle on peut lire et écrire à convenance (avec un temps d'accès identique quelle que soit la partie de la mémoire ), mais qui perd toutes ses données dès qu'elle n'est plus alimentée en électricité.
Certains microcontrôleurs profitent de la séparation des mémoires de programmes et de données pour implémenter une architecture dite de Harvard.
Dans cette architecture, on accède aux mémoires Programme et Données (ou ports d'entrée-sortie) à travers deux bus distincts, ce qui procure plusieurs avantages.
Figure 3 - Architecture de Harvard.
Tout d'abord, cela permet de gagner du temps en transférant simultanément au microprocesseur les instructions et les données sur lesquelles elles agissent.
Ensuite, cela permet d'avoir des mots mémoires différents pour les instructions et les données.
Par exemple, on peut utiliser une mémoire morte avec des mots de 16 bits pour stocker les instructions, et seulement des mots de 8 bits pour la mémoire de données.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Jeu d'instructions
Lorsqu'ils sont basés sur une architecture Harvard, les microcontrôleurs ont un jeu d'instructions réduit (en anglais RISC, Reduced Instruction Set Computer), composé d'instructions simples, avec une longueur et un format d'instruction fixe.
Cela simplifie à la fois le circuit de décodage mais également l'architecture globale.
Par exemple, les instructions pour déplacer directement des données entre deux cellules mémoires sont impossibles (il faut passer par des registres du microprocesseur).
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Périphériques
Les microcontrôleurs sont équipés de nombreux périphériques pour effectuer des tâches bien spécifiques.
Voici ci-dessous quatre familles de périphériques couramment utilisés.
- Les Timers sont utilisés pour la gestion du temps. Ils servent à déclencher une action au bout d'un laps de temps t. Ceci est réalisé à l'aide d'un compteur, initialisé à t, qui est décrémenté à chaque cycle d'horloge. L'action est déclenchée quand la valeur du compteur atteint 0.
- Les modules de capture de signaux permettent de récupérer la valeur d'un timer au moment où un événement extérieur se déclenche, par exemple quand un signal d'entrée change d'état.
- Les convertisseurs Analogique/Numérique permettent de transformer une valeur de tension analogique en un nombre binaire.
- Les modules de communication permettent de faire communiquer les microcontroleurs entre eux.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Exemple
Les microcontrôleurs PIC sont fabriqués par la société Microchip.
Il s'agit d'une gamme de microcontrôleurs qui s'appuient sur une architecture de Harvard avec un jeu d'instructions RISC.
Il existe plusieurs familles de puces PIC.
Chaque famille se distingue par le type et la quantité de mémoires utilisées, le nombre de bits par instruction, la fréquence d'horloge du CPU, le nombre de ports d'entrée-sortie ou encore les périphériques présents dans la puce.
Par exemple, la figure ci-dessous représente l'architecture de la famille des microcontrôleurs PIC18F
On y distingue les caractéristiques suivantes:
- Un CPU avec jeu d'instructions RISC avec des registres de 8 bits et des instructions codées sur 16 bits.
- Une mémoire programme de type FLASH dont la capacité peut aller jusqu'à 128 Ko (même si, en théorie, une capacité de 2Mo est possible).
- Un bus de communication vers la mémoire programme sur 21 bits d'adressage (permet donc d'accéder jusqu'à 2 Mo de mémoire) et 16 bits de large pour récupérer en un cycle une instruction sur 16 bits.
- Une horloge pouvant être cadencée jusqu'à 64 MHz.
- Une mémoire de données de type SRAM (Static RAM) de 4 ko. Il s'agit d'un type de mémoire RAM qui ne nécessite pas de rafraîchissement pour maintenir ses informations.
- Un bus de communication sur 12 bits d'adressage et 8 bits de données.
- Jusqu'à 5 ports d'entrée-sortie bidirectionnels.
- Des périphériques comme des timers, des modules de capture de signaux, des convertisseurs A/N (Analogique Numérique) et des modules de communication.
","title":" ","tagtitle":"h1"},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Un système sur puce, appelé System on Chip (SoC) en anglais, rassemble sur un même circuit intégré tous les composants habituellement présents sur la carte mère d'un ordinateur.
Figure 4 — Architecture d'un System on Chip.
Les caractéristiques d'un SoC sont de fait très proches de celles d'un ordinateur.
Ils ont une puissance de calcul comparable qui repose sur des microprocesseurs de dernière génération avec de nombreux cœurs cadencés à plusieurs giga-hertz (GHz), ainsi que des processeurs dédiés (graphique, sécurité).
Leur capacité mémoire se mesure en gigaoctets et ils incluent des mémoires de type RAM et FLASH.
Enfin, ils contiennent de nombreux périphériques.
Tout cela sur une puce d'environ 100mm.
","title":"Système sur puce"},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Architecture d'un système sur puce
Figure 4 — Architecture d'un System on Chip.
Les SoC reposent habituellement sur une architecture comparable à celle donnée dans le schéma ci-dessus.
Contrairement à l'architecture de Harvard sur laquelle repose les microcontrôleurs, on retrouve un modèle de Von Neumann dans lequel il n'y a pas de différence entre la mémoire des programmes et celle de données.
Les unités de calcul sont ainsi connectées à la mémoire (RAM ou ROM) ou aux périphériques par un unique bus de communication.
Les microprocesseurs des SoC sont presque toujours basés sur un jeu d'instructions RISC, avec des registres de 32 ou 64 bits.
Contrairement aux microcontrôleurs, ces CPU sont cadencés à des fréquences tellement élevées qu'ils sont fortement ralentis dès qu'ils lisent ou écrivent des données dans la mémoire ou qu'ils dialoguent avec des périphériques.
Cette différence de vitesse entre unité de calcul, mémoires et périphériques est telle qu'il est crucial de concevoir des moyens de communication entre ces composants qui soient bien calibrés en fonction des vitesses et débits de données de chacun, afin de ralentir le moins possible le microprocesseur.
Ainsi, parce que les composants mémoire ont généralement une fréquence de fonctionnement et des débits de données bien plus importants que les autres périphériques, certaines architectures de SoC mettent en place un système de transfert d'informations reposant sur deux bus de communication.
- Un bus haute performance est dédié à l'échange d'information entre le microprocesseur (CPU), les processeurs dédiés à une tâche particulière comme les processeurs graphique (GPU) et les différents composants mémoire.
- Un deuxième bus est utilisé pour la communication avec les périphériques plus lents. Ce bus est relié au bus rapide via un pont de communication qui met en œuvre un protocole d'échange.
Cette architecture permet d'éviter que les bus de communication ne deviennent des goulots d'étranglement pour le CPU qui, lorsqu'il souhaite communiquer avec des composants très rapides comme les mémoires, se retrouve bloqué en attente d'une réponse d'un périphérique beaucoup plus lent.
Afin de limiter encore plus l'impact de la différence de vitesse entre le CPU et les autres composants, les SoC disposent d'un mécanisme d'accès direct à la mémoire (en anglais Direct Memory Access — DMA) similaire aux cartes mères des ordinateurs.
Ce mécanisme permet de transférer directement des données de la mémoire vers où depuis un périphérique, sans aucune intervention du CPU.
Pour cela, le CPU ou les périphériques envoient des informations concernant les adresses et la quantité de données à échanger au contrôleur DMA, qui se charge en retour de réaliser ces transferts et d'avertir quand ils sont effectués.
Même en utilisant un bus à haute performance, le microprocesseur risque
d'être fortement ralenti lorsqu'il accède à la mémoire centrale (RAM ou ROM). Pour limiter l'effet de ce goulot d'étranglement, un mécanisme de mémoire cache, identique à celui des microprocesseurs des ordinateurs, est
intégré dans les systèmes sur puce.
Cela consiste à insérer une mémoire très
rapide entre le CPU et la mémoire centrale afin de servir de tampon en lecture et en écriture.
Ainsi, lorsqu'une instruction doit accéder à la mémoire centrale, elle vérifie d'abord si la mémoire cache contient une copie des cellules qu'elle recherche. Si c'est le cas, alors elle écrit ou lit directement dans le cache.
Sinon, il se produit ce qu'on appelle un défaut de cache et les tâches à réaliser dans ce cas sont différentes selon qu'il s'agisse d'un accès en lecture où en écriture.
- Accès en lecture. Un défaut de cache va provoquer un chargement des données de la mémoire centrale vers le cache, puis les données seront ensuite envoyées au CPU. Ce chargement nécessite de libérer de l'espace dans le cache pour accueillir les nouvelles données. Le choix de cet espace n'est pas anodin car le CPU pourrait avoir besoin de son contenu quelques instructions après. La politique de remplacement mise en œuvre dans une mémoire cache est donc un point important de son efficacité.
- Accès en écriture. Si le cache ne contient pas la partie de la mémoire dans laquelle le CPU souhaite écrire, il commence par la charger puis elle est modifiée dans le cache. Pour qu'il y ait une cohérence entre la mémoire dans le cache et la mémoire centrale, une politique d'écriture est mise en place. Là encore, le choïx de cette politique a une grande influence sur l'efficacité du SoC.
Bien que l'architecture globale d'un SoC soit celle d'un microprocesseur RISC, le CPU peut également contenir des circuits dédiés à certaines opérations afin d'accélérer certains calculs. Par exemple, on peut trouver
aujourd'hui:
- Une unité de calcul pour nombres flottants (FPU) simple où double précision.
- Un circuit dédié aux opérations sur les matrices, par exemple pour accélérer les algorithmes d'apprentissage automatique (en anglais Machine Learning — ML) très utilisés par les applications d'intelligence artificielle. Ce circuit peut par exemple exploiter les possibilités de parallélisation des opérations sur ces structures.
- Un composant pour la sécurité qui implémente des opérations élémentaires pour accélérer les algorithmes cryptographiques.
Enfin, la liste des périphériques présents dans un système sur puce n'est
limitée que par l'espace physique qu'ils occupent sur la puce.
Voici ci-dessous une liste non exhaustive des composants fréquemment présents sur de telles puces:
- des modems (2G/3G/4G),
- des circuits radio (WiFi, Bluetooth),
- une puce GPS,
- des ports d'entrée-sortie (USB, Ethernet, HDMI, Audio), des capteurs (CCD).
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Avantages et inconvénients
Les SoC sont aujourd'hui les composants
incontournables de l'informatique nomade (smartphones, tablettes). Ils sont également de plus en plus utilisés dans le monde plus large des systèmes embarqués (voitures, robots, etc).
Ce succès est dû aux avantages suivants:
- Énergie. Il est admis qu'une grande partie de la consommation électrique d'un circuit est liée au câblage (et donc au transport) entre les composants. Comme tous les composants d'un SoC sont connectés entre eux sur des distances très petites, et de manière interne sans câblage énergivore, les gains sont très importants. Cette faible consommation énergétique implique aussi une très faible perte de chaleur qui évite de recourir à un ventilateur pour refroidir la puce. Les SoC sont donc silencieux.
- Coût. Le prix d'un système sur puce est très petit si on le compare à celui d'une carte mère rassemblant les mêmes composants. Ceci s'explique d'une part par son coût de production, très bas, résultant de la forte automatisation du processus de fabrication des puces de l'industrie du hardware et, d'autre part, par des volumes de production importants.
- Sécurité. Le circuit d'un SoC est conçu de manière globale, tant pour la partie hardware que pour celle du micro-logiciel (en anglais firmware), c'est-à-dire des programmes intégrés dans les différents composants qui leur permettent d'assurer leurs fonctions. Cette vue d'ensemble du système, sans aucune possibilité d'ajouter ou changer les composants, est un avantage important pour garantir la sécurité du système.
Bien qu'ayant de nombreux avantages, les systèmes sur puce ont aussi quelques inconvénients. Contrairement à un ordinateur équipé d'une carte mère, où chaque composant est connecté et peut être remplacé en cas de panne ou pour une nouvelle version, les SoC ne permettent pas de mise à jour, aucune extension n'est possible et, si un seul transistor est endommagé, il ne sera pas possible de réparer l'unité défaillante.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Exemple
Le système sur puce A13 bionic, disponible sur les téléphones et tablettes de la société Apple, est un SoC qui repose sur une architecture similaire à celle présentée dans cette section.
Cette puce électronique contient 8,5 milliards de transistors gravés avec une précision de 7 nanomètres.
La liste ci-dessous résume ses principaux composants:
- Un CPU disposant d'un jeu d'instructions RISC et de registres de 64 bits. Il contient six cœurs dont deux rapides (2.65GHz) et quatre plus lents (1.8GH2), ces derniers étant plus économes en énergie. Les cœurs rapides intègrent un module (AMX) pour accélérer les opérations de Machine Learning comme les multiplications de matrices. Ensemble, ces modules sont capables d'effectuer 1000 milliards d'opérations 8 bits par seconde.
- Un processeur graphique (GPU) avec quatre cœurs pour toutes les opérations 3D.
- Un processeur avec huit cœurs, appelé Neural Engine, qui s'occupe de tous les traitements d'informations et calculs liés à l'intelligence artificielle, pour la reconnaissance faciale et la réalité augmentée notamment.
- Un module spécialisé pour les opérations cryptographiques (AES).
- Une capacité mémoire de 4Go de RAM, directement sur la puce.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Intel 4004
2050 Transitores Gravure 10 micromètres
1971
| Apple M1 16 milliards de transistors Gravure 5 nanomètres 2020
|
La miniaturisation des circuits intégrés aujourd'hui est telle qu'il est possible d'avoir des ordinateurs sur une unique puce d'une centaine de millimètres carrés. Ces mini-ordinateurs. appelés microcontrôleurs ou System on Chip (SoC), intègrent tous les composants habituellement présents sur la carte mère d'un ordinateur (CPU, mémoire et périphériques).
Les microcontrôleurs, peu coûteux et avec des capacités de calculs et de mémoire limités, reposent souvent sur une architecture de Harvard où la mémoire des programmes est dissociée de
celle des données.
Les SoC sont de véritables ordinateurs avec des CPU très puissants, tellement rapides qu'une architecture avec deux bus est nécessaire pour éviter les goulots d'étranglement.
","title":"Conclusion","tagtitle":"h1"},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Quels sont les spécificités et les avantages de Harvard par rapport à celle de Von Neumann?
","title":"Exercice"},{"edit":"
Mettre le résultat ici (code et figure).
"},{"solution":"
Dans une architecture de Harvard, les mémoires contenant les programmes et les données sont séparées.
Cela permet de transférer simultanément au CPU la prochaine instruction à exécuter ainsi que les données sur lesquelles elle doit opérer.
Par ailleurs, les bus de commu-
nication entre ces mémoires étant aussi distincts, cela permet d’avoir des
tailles de mots mémoire différents pour les deux mémoires.
"}],[{"text":"
Que signifie l'acronyme RISC?
","title":"Exercice"},{"edit":"
Mettre le résultat ici (code et figure).
"},{"solution":"
Cet acronyme signifie Reduced Instruction Set Computer et indique qu'un CPU dispose d’un jeu d’instructions plus simples et
plus uniformes qu’un CPU CISC (pour Compler Instruction Set Computer).
"}],[{"text":"
Quels sont les éléments essentiels d'un microcontrôleur?
","title":"Exercice","tagtitle":"h1"},{"edit":"
Mettre le résultat ici (code et figure).
"},{"solution":"
Un microcontrôleur est constitué d’une unité de calcul (CPU), de deux mémoires (programme et données) et de périphériques (comme des capteurs ou des convertisseurs analogique/numérique).
"}],[{"text":"
Donner quelques critères pour choisir d'utiliser un microcontrôleur.
","title":"Exercice"},{"edit":"
Mettre le résultat ici (code et figure).
"},{"solution":"
Les microcontrôleurs sont adaptés pour réaliser une tâche dans un systèmes embarqués qui ne nécessite pas de calculs trop intensifs ni trop complexes.
Leur petite taille fait aussi qu’ils peuvent être installés sans trop de difficultés dans n'importe quel endroit du système à contrôler.
Leur utilisation simplifie également la construction d’un système plus complexe car ils disposent à la fois d’une mémoire qui contient l'unique programme à exécuter, des bus de communication pour transférer des données et des capteurs nécessaires pour interagir avec leur environnement.
"}],[{"text":"
Quelles sont les spécificités et les avantages d'un système sur puce? So
","title":"Exercice","tagtitle":"h1"},{"edit":"
Mettre le résultat ici (code et figure).
"},{"solution":"
Un système sur puce est composé des mêmes éléments qu’un ordinateur.
La principale différence est qu’ils sont rassemblés sur le même circuit intégré.
Outre le gain de place, les distances réduites entre les composants et le fait qu'ils soient directement connecté dans la puce de silicium fait qu’ils consomment beaucoup moins d'énergie électrique.
Ainsi, ils ont une plus grande autonomie.
"}],[{"text":"
On souhaite écrire un programme Python qui affiche toutes les n secondes la température du CPU d'un ordinateur.
Pour cela, on peut utiliser la bibliothèque psutil qui donne accès à de nombreuses informations concernant les composants de la machine.
En particulier, la fonction sensors_temperatures() renvoie des données renvoyées par les sondes de températures sous la forme d'un dictionnaire.
Une entrée 'coretemp' de ce dictionnaire contient les informations de température pour le CPU rassemblées sous la forme d'un tableau qui décrit chaque cœur du CPU.
L'information d'un cœur est donnée sous forme d'un n-uplet nommé qui contient, entre autres, un champ current qui donne sa température actuelle.
Ainsi, si on appelle tempinfos ce dictionnaire, la température courante du premier cœur sera accessible par tempinfos['coretemp'][0].current .
Indication : Pour installer la bibliothèque psutil, il faut utiliser la commande suivante:
pip3 install psutil
","title":"Exercice"},{"edit":"
Mettre le résultat ici (code et figure).
"},{"solution":"
from time import sleep
import psutil
n = int (input (\"fréquence? \"))
while True:
tempinfos = psutil.sensors_temperatures()
t = tempinfos['coretemp'][0].current
print(\"Température du coeur 0 : \", t)
sleep(n)
"}],[{"text":"
Compléter le schéma du SoC ci-dessus
","title":"Exercice"},{"edit":"
Mettre le résultat ici (code et figure).
"},{"solution":""}],[{"text":"
Parmi les images ci-dessus, la(les)quelle(s) représente(nt) un SoC.
","title":"Exercice"},{"edit":"
Mettre le résultat ici (code et figure).
"},{"solution":""}],[{"text":"
A partir de l'article du site elektormagazine.fr
1) Relevez les differentes caractéristiques du SoC du Raspberry Pi 3 modèle B+.
2) Les comparez au SoC du Raspberry Pi 4.
3) Quelles sont les principales évolutions qui contribuent à ce gain? Une copie de l'article est disponible ici.
","title":"Exercice"},{"edit":"
Mettre le résultat ici (code et figure).
"},{"solution":""}],[{"text":"
La photo ci-dessus montre le détail d'un SoC Kirin 990
Identifier les différentes parties de ce SoC
","title":"Exercice"},{"edit":"
Mettre le résultat ici (code et figure).
"},{"solution":""}],[{"text":"
Quel type d'architecture de l'ESP32?
Dans quels domaines sont utilisés les ESP32?
","title":"Exercice"},{"edit":"
Mettre le résultat ici (code et figure).
"},{"solution":""}]]