Architecture et programmation du microprocesseur

publicité
Les élèves connaissent les constituants de base de l’ordinateur :
Le matériel ( hardware)
* la carte mère et ses principaux constituants ( support du processeur ; connecteurs de mémoire vive, de périphériques, ; connecteurs
d’entrées-sorties …..),
* le microprocesseur ( CPU : Central Processing Unit),
* les mémoires RAM et ROM,
* les ports de communication ( série, USB ),
* les unités de stockage (disque dur, CD-Rom, DVD, blu-ray, clé USB),
* les périphériques ( webcam, modem, dispositifs d’acquisitions, …),
* l’écran, l’imprimante, la souris .
Au niveau logiciel ( software) , ils connaissent l’existence :
* du BIOS,
* du système d’exploitation,
* qu’en interne l’ordinateur fonctionne en binaire ; 1 bit ne peut prendre que 2 valeurs : a) 0 ( tension Ufil-masse = 0) , b) 1 ( tension
Ufil-masse = 5 V, par exemple).
Un ensemble de 8 bits est 1 octet .
1] L’architecture de base de l’ordinateur
Elle contient les éléments suivants :
* le microprocesseur ( unité centrale)
* la mémoire principale
* des interfaces d’entrées-sorties.
Ils sont reliés par des voies de communication : les bus .
11) Le microprocesseur
Il interprète et exécute les instructions d’un programme. Il lit et
sauvegarde les résultats dans la mémoire . Il communique avec
les autres éléments de l’ordinateur . Son fonctionnement est
cadencé par une horloge. On caractérise le processeur par :
* sa fréquence d’horloge en MHz ou GHz,
* le nombre d’instructions par seconde qu’il peut exécuter en MIPS ( Millions d’Instructions Par Seconde),
* la taille des données qu’il est capable de traiter en bits.
Le 1er microprocesseur ( = P ) date de 1971, c’est l’INTEL 4004 : 2300 transistors, 60 000 Instructions Par seconde, fréquence 108
kHz.
Recherche documentaire : * chercher le tableau des processeur de 1971 à aujourd’hui (nom , année, nombre de
transistors,fréquence ) * qu’est-ce que la loi de Moore ?
12) La mémoire principale
Elle contient les instructions des programmes et les données. Elle se décompose en RAM et ROM ( lecture seule) .
13) les interfaces d’E/S : chaque périphérique est lié au système par une interface, ou contrôleur, qui gère les échanges avec le P .
2] L’architecture de base du processeur
Elle est construite autour de 2 éléments principaux : * une unité de commande (UC) * une unité de traitement (UAL) , qui sont
associées à la mémoire . Ces 3 éléments sont reliés entre eux par 1 bus interne où circulent les informations .
21) L’unité de commande
* elle cherche en mémoire l’instruction à exécuter et la décode,
* l’envoie dans le banc registre par l’intermédiaire du bus, si c’est
1 instruction simple ; par exemple initialiser 1 case-mémoire.
* Si l’instruction est plus complexe ( additionner le contenu de 2
cases en mémoire) , l’UC cherche les valeurs dans sa mémoire et
les envoie à l’UAL .
L’UC et le P fonctionnent au rythme d’une horloge.
Remarque , l’UC comprend 2 parties : 1 séquenceur qui cherche en mémoire l’instruction et un banc registre ( qui est une mémoire
du P , de faible capacité mais très rapide).
22) l’UAL
* elle réalise l’exécution des instructions grâce à ses fonctions arithmétiques et logiques,
* le résultat est envoyé sur le bus pour être mis en mémoire . Il peut alors apparaître sur 1 périphérique ( écran, imprimante, …).
3] La microprogrammation
31) Les langages de programmation
* le langage machine est celui compris par le processeur ; chaque
instruction est codée par une séquence de bits .
* le langage assembleur est le langage le plus proche du langage
machine. Ce langage peut varier d’un processeur à l’autre.
* le langage de haut niveau est plus adapté à l’homme que
l’assembleur. Car il ne dépend pas de l’architecture de la machine et il
permet d’écrire des algorithmes sous 1 forme plus facile à utiliser.
Ces langages sont le C, C++, pascal, Java, etc …
Le langage de haut niveau doit être compilé pour être traduit en
assembleur, puis assemblé pour être convertit en langage machine ; afin
d’être compris par le P .
32) Le jeu d’instructions ( à écrire dans la mémoire d’instructions)
a) les instructions arithmétiques
* l’initialisation : MOV Rd entier // ex : MOV R5 0 , met la case-mémoire 5 du registre à zéro
* l’ addition
: ADD Rd Rx Ry // ex : ADD R2 R1 R0 , R2 va contenir la somme de R1 et de R0
* la soustraction : SUB Rd Rx Ry // ex : SUB R2 R1 R0 , R2 = R1 – R2
Le schéma d’1 simulateur est donné ( auteur D. Lavenier ENS Cachan Rennes ).
Ecrire 1 programme qui : * met R3 à 10 , R4 à 15, R5 à 20 * fait R3 + R4 – R5 * range le résultat en R6.
Exécuter le programme « à la main » ; prog1.
Mémoire d’instructions
Données de sortie (écran ….)
Données d’entrée(clavier…)
L’UC : registre et séquenceur
Le bus
l’UAL
Mémoire des données
b)lLes instructions de lecture/écriture en mémoire de données
* lecture : LD Rd Ra // ex : LD R2 R1, la donnée à l’adresse R1 de la mémoire de données est mise dans la case-mémoire 2 du
registre.
* écriture : SR Ra Rd // ex : SR R1 R2, la donnée en R2 du registre est écrite en R1 dans la mémoire de données .
c) Les instructions d’E/S
* en entrée : IN Rx // ce qui est entré dans Data IN est mis en Rx du registre
* en sortie : OUT Rx // le contenu de Rx est transféré dans Data Out .
Programme : transférer le contenu de R3, R4, R5, R6 dans les mêmes cases en mémoire de données et en sortie ; prog2.
d) le saut conditionnel
* branchement conditionnel si ZERO : JZ Rx label // si Rx == 0, le programme sur la ligne marquée « label »
* branchement conditionnel si NON ZERO : JNZ Rx label
* branchement conditionnel si > ZERO : JSUP Rx label
* branchement conditionnel si < ZERO : JINF rX label
* branchement inconditionnel : JMP label
label est une étiquette à mettre dans les cases de gauche pour repérer l’instruction .
Exemple , que fait le programme suivant ; prog3 :
MOV R0 0
Ecrire 1 programme qui récupère 2 entiers sur le port d’entrée et envoie le maximum
IN R1
sur le port de sortie ; prog4.
IN R2
SUB R3 R1 R2
Ecrire 1 programme qui récupère 2 entiers dans la mémoire de données et envoie le
JINF R3 label
JMP end
maximum sur le port de sortie ; prog5 .
label OUT R1
end
OUT R2
4] Le simulateur
Il fonctionne avec le langage python. Le logiciel python doit être installé sur l’ordinateur ; par exemple ActivePython 2.7.
Ouvrir IDLE (Python GUI) : D:\python27\Lib\idlelib ; puis File open sim_micropro.py ; puis run \ run module ; ce qui exécute le
simulateur .
Exécuter les programmes 1 à 5 . NEXT INST : fonctionnement pas à pas ; noter combien il faut de cycles d’horloge pour exécuter
complètement une instruction . Ensuite, utiliser NEXT CYCLE , qui fonctionne instruction par instruction .
Programmes à écrire et tester :
a) mettre les nombres 1,2,3,4,5,6,7,8,9,10 e mémoire de données à partir de l’adresse 0, faire leur somme e Ré du registre et afficher
le résultat sur le port de sortie .
b) entrer les valeurs 4 et 5 dans le registre à partir de l’entrée ; faire leur multiplication et mettre le résultat en sortie.
5] Pour information dans Windows
Faites start run et C:\WINDOWS\system32\debug.exe ; debug permet d’accéder au registre de votre ordinateur : AX, BX, CX ,DX,
… ; ? donne les commandes ; r permet de visualiser les contenus et de les modifier.
Téléchargement