Informatique Industrielle - legtux.org

Post on 16-Oct-2021

7 views 1 download

Transcript of Informatique Industrielle - legtux.org

Olivier Snoeck

Informatique Industrielle

Microcontrôleurs

Arduino

Le microcontrôleur

Le microcontrôleur (µC)=

1 microprocesseur (µP)+

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

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 ….

Le microprocesseurLa logique programmée

UALMémoire

Données

&

Programmes Unité decommande

UAL : Unité Arithmétique et Logique

Fabrication

Fabrication

Présentation

                                                             

                                                                                         

Evolution de l’intégration

● 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

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 ;….

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

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

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

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)

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

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

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 !

Exemple: le Z80

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

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

Exécution parallèle/prédictives

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

● Exécution prédictive

Exemple: le pentium

Exemple: l ’Athlon

Exemple : le Pentium 4

Pipeline Réel

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

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

Optimisation de l’utilisation des ressources

3 architectures : RISC/CISC/VLIW

● CISC● RISC● VLIW

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