Informatique Industrielle - legtux.org

32
Olivier Snoeck Informatique Industrielle Microcontrôleurs Arduino

Transcript of Informatique Industrielle - legtux.org

Page 1: Informatique Industrielle - legtux.org

Olivier Snoeck

Informatique Industrielle

Microcontrôleurs

Arduino

Page 2: Informatique Industrielle - legtux.org

Le microcontrôleur

Page 3: Informatique Industrielle - legtux.org

Le microcontrôleur (µC)=

1 microprocesseur (µP)+

Des périphériques adaptés (...)µP

Page 4: Informatique Industrielle - legtux.org

Le µP (ou processeur) ne peut pas fonctionner seul !

Il a besoin de :

HorlogeCadence à une fréquence (8MHz) le µP

ROM : Read-Only MemoryMémoire morte qui contient quelques lignes de programmes ineffaçables

RAM : Random Access MemoryMémoire vive où sont stockées les instructions, les calculs,...

I/O : Input/OutputLes périphériques d’entrées / sorties

+ Mémoire FlashMémoire vive, assez rapide, qui garde en mémoire les données ….

Page 5: Informatique Industrielle - legtux.org

Le microprocesseurLa logique programmée

Page 6: Informatique Industrielle - legtux.org

UALMémoire

Données

&

Programmes Unité decommande

UAL : Unité Arithmétique et Logique

Page 7: Informatique Industrielle - legtux.org

Fabrication

Page 8: Informatique Industrielle - legtux.org

Fabrication

Page 10: Informatique Industrielle - legtux.org

Présentation

                                                             

                                                                                         

Page 11: Informatique Industrielle - legtux.org

Evolution de l’intégration

Page 12: Informatique Industrielle - legtux.org

● L’Unité de contrôle– Décodage des instructions– Chargement des informations depuis la mémoire

dans l ’UAL– Contrôle du flux du programme

● L’Unité Arithmétique et Logique– Réalisation des opérations

● Calculs entiers● Calculs sur les nombres réels● Comparaisons

Microprocesseur = Unité Contrôle + UAL

Page 13: Informatique Industrielle - legtux.org

Le langage machine

● Ensemble d ’instructions élémentaires traitées par le microprocesseur– Environ un millier d’instructions

Branchements Calculs sur les entiersComparaisons Communication mémoireCalculs sur les réels Opérations «multimédia» (MMX…)

● Codage dans la mémoire – « code instruction » : 08F537B8….

● Assembleur : – Représentation « lisible » du langage machine– Mnémonique: représentation des instructions :

LD pour load ; ST pour Store ;….

Page 14: Informatique Industrielle - legtux.org

De l’assembleur au code machine

OUTBUF EQU 80H

LD A,'A'-1NCB: INC A

OUT (OUTBUF),ACP 'Z'JP NZ,NCBHALT

Langage assembleur Code machine

Page 15: Informatique Industrielle - legtux.org

Les registres

● Mémoires contenues dans le microprocesseur● Codés sur n bits

– Capacité de traitement du processeur– 64 bits dans les microprocesseurs modernes– 4/8 bits dans les processeurs anciens

● 3 types de registres– Registres entiers : Traitement des nombres entiers– Registres de contrôle : état et déroulement du programme– Registres calcul flottant

Page 16: Informatique Industrielle - legtux.org

Principaux registres de contrôle

● Registre d ’instruction : RI– Code de l ’instruction courante

● Registre de position dans le programme : CO– Compteur Ordinal : adresse de la prochaine instruction à éxecuter

● Registre de pile : SP– Permet de créer une « pile » dans la mémoire

● Registres d ’état– États du microprocesseur

● Débordements de capacité● Comparaisons● Mode d ’exécution

● Accumulateur– Registre de travail principal

Page 17: Informatique Industrielle - legtux.org

Exemple d’instructions

● Chargement depuis la mémoire– LD Registre, Adresse : Place dans un registre le contenu de l’adresse

Chargement d’une valeur– LD Registre, Valeur : Place dans un registre la valeur fournie

● Sauvegarde en mémoire– LD Registre, Adresse : Place dans la mémoire le contenu du registre

● Addition– ADD Registre1, Registre2 : Ajoute Registre2 à Registre 1– ADD Registre, Valeur : Ajoute la valeur au registre

● Multiplication (n’existe pas)– Mult Registre1, Registre2 : Multiplie Registre1 par Registre 1

Mult Registre, Valeur : Multiplie le registre par la valeur● Comparaison

– CP Registre1, Registre2 : Compare le registre 1 au registre 2 et place les bits d’état● Sauts inconditionnel

– JP, JR Adresse (ou libellé) : Effectue un saut inconditionnel vers l’adresse spécifiée (ou le libellé pour simplifier)

Page 18: Informatique Industrielle - legtux.org

L’horloge

● Cadence les traitements dans l ’ordinateurCycle du microprocesseur <=> Traitements effectués en un top d ’horlogeDétermine la vitesse du microprocesseur

● Ne suffit pas pour connaître la performance réelle d ’une machine

Page 19: Informatique Industrielle - legtux.org

Liaisons avec la mémoire

● Registre d ’adresse et registre mot– Stockage de l ’adresse mémoire et de la donnée– Sélection de l ’opération

● Lecture● Écriture

– Transfert 1 transfert par cycle au maximum

– Dépend de la vitesse du bus mémoire– Processeurs actuels très dépendants de vitesses d’échange

Page 20: Informatique Industrielle - legtux.org

L’adressage

● Adressage direct– Spécification de l ’adresse

LD (0120H),A : Charge dans A la valeur contenue en 0120H● Adressage indirect

– L ’adresse à considérer est stockée (indirection)LD BC, 0120HLD (BC),A

● Adressage indexé– Utilisation d ’un registre d ’index (IX, IY sur Z80)

● Adresse = Base + indexLD (IX+3), 72 : Charge 72 à l’adresse IX+3

● La pile– Empilage (push) et dépilage (pop ou pull)– En général pas de contrôle de ces opérations !

Page 21: Informatique Industrielle - legtux.org

Exemple: le Z80

Page 22: Informatique Industrielle - legtux.org

Structure complexe

● 2,5 unités d ’exécution– Arithmétique

● Calcul et comparaison des nombres entiers– Calcul flottant :

● coprocesseur mathématique => calcul sur les nombres réels– Unité multimédia

● MMX/SSE/3DNow! : exécution particulière de certaines opérations

Page 23: Informatique Industrielle - legtux.org

Exécution en pipeline

● Exécution de plusieurs instructions en même temps– Partage de l ’UAL– 1 instruction prend « 1 cycle »

● Pb : – Vidage du pipeline– Instructions de branchement

Page 24: Informatique Industrielle - legtux.org

Exécution parallèle/prédictives

● Mise à disposition de plusieurs UAL– Problème de remplissage du pipeline

● Exécution prédictive

Page 25: Informatique Industrielle - legtux.org

Exemple: le pentium

Page 26: Informatique Industrielle - legtux.org

Exemple: l ’Athlon

Page 27: Informatique Industrielle - legtux.org

Exemple : le Pentium 4

Page 28: Informatique Industrielle - legtux.org

Pipeline Réel

● PIV : 20 Niveaux● PIII: 10 Niveaux● Athlon: 11 Niveaux

Page 29: Informatique Industrielle - legtux.org

L’Hyper Threading

● Simule deux processeurs sur un seul– 2 files d’exécution– Mêmes UAL

● Nécessite des applications compatibles– Augmente la disponibilité du système

Page 30: Informatique Industrielle - legtux.org

Optimisation de l’utilisation des ressources

Page 31: Informatique Industrielle - legtux.org

3 architectures : RISC/CISC/VLIW

● CISC● RISC● VLIW

Page 32: Informatique Industrielle - legtux.org

Exemple de compilation : Factorielle

En algorithmiqueFact = 1Pour i allant

de 2 à NFact = Fact * i Fin pour

En CInt fact(int n)

{ int i = 2 ; int result = 1 ; while(i <= N) { result *= i ; i++ ; } fact = result ;} ;

En assembleur Load A, adresse de NLoad B, 1Load C, 2Boucle Cmp A,CJmp FinMult B,CAdd C,1Jmp BoucleFin RTN