La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Le model Von Neumann INF101 Introduction aux algorithms et à la programmation ©Guillaume Vigeant Traduction de la présentation originale écrite par Greg.

Présentations similaires


Présentation au sujet: "Le model Von Neumann INF101 Introduction aux algorithms et à la programmation ©Guillaume Vigeant Traduction de la présentation originale écrite par Greg."— Transcription de la présentation:

1 Le model Von Neumann INF101 Introduction aux algorithms et à la programmation ©Guillaume Vigeant Traduction de la présentation originale écrite par Greg Phillips Collège militaire royal du Canada Une utilisation sans restriction est permise au seins du gouvernement du Canada. Tout autre utilisation est sujette aux conditions dune creative commons license

2 ORGANISATION DUN ORDINATEUR

3 ProcesseurMémoire Vive Mémoire Cache Carte graphique Périphériques

4 Processeur (CPU) Intel pentium 4

5 UN ARRANGEMENT COMPLEXE DE LOGIQUE COMBINATOIRE ET SÉQUENTIELLE

6 EXÉCUTE DES INSTRUCTIONS

7 INSTRUCTION = OPÉRATION BINAIRE SIMPLE

8 EXEMPLE: ADDITIONNER DEUX NOMBRES

9 EXEMPLE: LIRE UNE VALEUR EN MÉMOIRE

10 / QUÉRIR / Décode / Exécute

11 M Bus dInterconnections Bus des données de la mémoire Bus des adresses de la mémoire UAL Unité Arithmétique et Logique Section des registres

12 SECTION DES REGISTRES: MÉMOIRE LOCALE DU PROCESSEUR

13 UAL: OPÈRE SUR LES DONNÉES (ADDITION, ET, OU, ETC.)

14 BUS DINTERCONNECTIONS : INTERCONNECTE LES REGISTRES, LUAL, LA MÉMOIRE

15 UNITÉ DE CONTRÔLE: GÈRE LE BON FONCTIONNEMENT DU PROCESSEUR EN ENVOYANT DES SIGNAUX DE CONTRÔLE POUR CHAQUE ÉTATS DU PROCESSEUR.

16 COMMENT INTERPRÉTER? MÉMOIRE Adresse en mémoireContenu

17 Machine à états Ne fait quune seule chose dans chaque état Le prochain état est déterminé par lunité de contrôle – Se base sur létat actuel et le contenu des registres Létat change à chaque impulsion de lhorloge « clock tick »

18 / QUÉRIR / Décode / Exécute Acquiers linstruction de la mémoire et linscrit dans le registre dinstruction (IR). Acquiers la prochaine instruction Détermine quelle séquence exécuter selon linstruction Exécute linstruction approprié en activant une séquence détapes spécifiques.

19 UN PROCESSEUR RIDICULEMENT SIMPLE: SUPPOSONS QUE NOUS VOULONS CONSTRUIRE UN PROCESSEUR QUI…

20 TRAVAIL AVEC DES VALEUR ENTRE 0 ET 255 Combien de bits?

21 QUI DOIT ACCÉDER À 64 EMPLACEMENTS EN MÉMOIRE (POUR LES PROGRAMMES ET LES DONNÉES) Combien de bits?

22 Toute conception de processeur passe par la définition dun jeux dinstruction – Le vocabulaire dopérations que le processeur peut exécuter – Chaque instruction nécessite différent circuit logique de contrôle et dexécution à même le processeur Larchitecture du jeux dinstruction doit inclure la définition de certains registres – Emplacements où le processeur peut temporairement emmagasiner et manipuler les données – Les instructions sont souvent définie comme des opérations sur le contenu des registres. Le Intel 8086 (1978) avait été conçu dans le but doccuper un vide a court terme dans la chaine de production jusquà ce que lambitieux processeur i432 soit enfin prêt pour la production. Vue que ce nétait quune architecture temporaire, la direction dIntel na donné que trois semaines à léquipe de design pour définir le jeux dinstruction. Le processeur i432 fût un échec et tous les processeurs Intel modernes sont basés sur larchitecture du 8086.

23 Inclus des instructions pour – (ADD) Additionner deux valeurs – Déterminer le et (AND) logique de deux valeurs – Incrémenter (INC) une valeur – Sauter (JMP) à une autre adresse (instruction) Combien de bits?

24 Registre accessible par lutilisateur: – AC (accumulateur de 8-bits) pour les opérations mathématique et logiques Registre système: – PC (compteur du programme 6-bits) contient ladresse de la prochaine instruction à être exécuté Jeux dinstruction – ADD00aaaaaaAC AC+M[aaaaaa] – AND01aaaaaaAC AC AND M[aaaaaa] – JMP10aaaaaaPC aaaaaa – INC11aaaaaaAC AC+1

25 M Bus dInterconnections UAL AR PC DR AC IR AR: registre dadresse – Contient les bits dadresse qui sont véhiculé sur le bus dadresse mémoire. DR: registre de donné – Contient les données recueillit du bus de données de la mémoire IR: registre dinstruction – Contient lopérateur de linstruction M: mémoire vive Bus adresse Bus données

26 AR PC DR M PC PC+1 DR M IR DR[7..6] AR DR[5..0] DR M AC AC+DR AC AC and DR PC DR[5..0]AC AC +1 Chaque bulle représente un état dans lequel le processeur exécute une fonction spécifique. Le processeur avance dun état à lautre à chaque impulsion de lhorloge sous la direction de lunité de contrôle. Combien dimpulsions de lhorloge est-ce que chaque instruction à besoin?

27 UAL Signal de contrôle (provenant de lunité de contrôle) Vers lAC AC DR (provenant du bus) Additionneur parallèle Le MUX est un multiplexeur qui a pour tâche de sélectionner lequel des deux entrés de huit bits sera envoyé vers le registre AC selon le signal de contrôle UALSEL.

28 PERFORMANCE

29 HORLOGE PLUS RAPIDE = MEILLEURE PERFORMANCE

30 PLUS DE TRAVAIL PAR INSTRUCTION = MEILLEURE PERFORMANCE MOINS DÉTATS PAS INSTRUCTIONS = MEILLEURE PERFORMANCE ON NE PEUT NORMALEMENT PAS FAIRE LES DEUX…

31 MICROPROCESSEUR À JEUX DINSTRUCTION ÉTENDU, OU CISC (COMPLEX INSTRUCTION SET COMPUTER) METS LEMPHASE SUR DAVANTAGE DE TRAVAIL PAR INSTRUCTIONS (EXEMPLE.: PENTIUM, CORE I5/I7)

32 MICROPROCESSEUR À JEUX DINSTRUCTION RÉDUIT, OU RISC (REDUCED INSTRUCTION SET COMPUTER) METS LEMPHASE SUR LA LIMITATION DES ÉTATS PAR INSTRUCTIONS (EXEMPLE.: ARM)

33 Langage machine – Les programmes sont ultimement stocké en mémoire sous forme de groupes de bits (instructions) encodant à la fois les opérateurs et les opérandes – Ces instruction binaires sappellent « langage machine » Par exemple.: pour signifier « additionner le contenu de lemplacement mémoire 22 à laccumulateur » on écrit – 00 signifie « additionner à laccumulateur » et signifie 22 Nos ancêtre ont réellement codé du logiciel de cette manière! Langage assembleur – Mémoriser les séquences de bits et les adresses est plutôt difficile pour un humain. – Un niveau dabstraction plus haut: les mnémoniques Des codes alphabétiques facile à se rappeler (?) Un mnémonique par opérateur Généralement écrit en commençant par lopérateur suivit de lopérande – Exemple.: ADD 22 au lieu de

34 Un assembleur est un program qui – Lit un fichier contenant un program écrit en langage assembleur Parfois appelé code source – Produit un fichier contenant le langage machine équivalent Parfois appelé code objet On peut ainsi – Charger le code objet en mémoire En utilisant un chargeur de program soit interne ou externe À partant dune adresse en mémoire quelconque – Initialiser le compteur de programme (registre PC) afin quil pointe vers notre première instruction – Démarrer le processeur et voila! Notre program sexécute.

35 UN PROCESSEUR UN PEU PLUS COMPLEXE

36 Du livre Carpinelli chapitre 6 (suivre le lien sur le site web du cours) Quatre registres: PC compteur de programme (16 bits) Indique la prochaine instruction à être exécuté Est la destination des instructions dembranchement et saut AC accumulateur (8 bits) Est la destination de toutes les opérations arithmétiques et logiques R un registre multifonction (8 bits) Sert dopérande pour toutes les opérations arithmétiques et logiques Z registre zéro (1 bit) Contient un 1 si le résultat dune opération arithmétique ou logique est zéro dans laccumulateur Nest pas affecté par les autres opérations Sert généralement aux décisions dembranchement.

37 Seize instructions, code dopérateur de 8 bits (opcode) Γ est une opérande de 16 bits qui représente un emplacement en mémoire NOPaucune opération (rien faire) LDAC Γ charger AC de lemplacement en mémoire Γ STAC Γstock le contenu de AC à lemplacement en mémoire Γ MVACtransfert le contenu de AC vers R MOVRtransfert le contenu de R vers AC JUMP Γécrit Γ dans le PC JMPZ Γsi Z = 0, écrit Γ dans le PC JPNZ Γ si Z != 0, écrit Γ dans le PC ADDécrit le résultat de AC+R dans AC et met a jour Z SUBécrit le résultat de AC-R dans AC et met a jour Z INACécrit le résultat de AC+1 dans AC et met a jour Z CLACécrit 0 dans AC et met a jour Z ANDécrit le résultat de AC AND R (bit par bit) dans AC et met a jour Z ORécrit le résultat de AC OR R (bit par bit) dans AC et met a jour Z XORécrit le résultat de AC XOR R (bit par bit) dans AC et met a jour Z NOTécrit le résultat de NOT AC (bit par bit) dans AC et met a jour Z

38 En plus des instructions, la majorité des assembleurs comprennent certaines directives qui affectent leur fonctionnement Lassembleur du simulateur de Carpinelli accepte les directives suivantes: – ORG Γ Commence à assembler les instructions à lemplacement Γ – DB β Écrit un octet de valeur β en mémoire – DB Ѡ Écrit un mot de 16 bits de valeur Ѡ en mémoire On peut également ajouter des commentaires en les précédant de point-virgule (;) – Les commentaires nont aucun effet sur lassembleur; Ils sont uniquement destinés aux humains

39 But: additionner le contenu des emplacements mémoire 20 et 21 et inscrire le résultat à ladresse 22 Afin décrire votre programme, veillez considérer que: – On ne peut quadditionner des nombres qui sont dans les registres AC et R; Le résultat se retrouve dans lAC – Le contenu de la mémoire ne peut quêtre transféré dans lAC mais on peut bouger les valeurs de lAC vers R et vice versa. – Seul une valeur contenue dans lAC peut être transféré vers la mémoire. -On peut donc écrire notre programme comme suit LDAC20 MVAC LDAC21 ADD; m[20]+m[21] STAC22 JUMP65535 ; stop! -On peut aussi initialiser des valeurs en mémoire comme suit: ORG20 DB6 DB9

40 But: Écrire un programme qui calcul le factoriel dun nombre Exemple.: pour le nombre 4, calculer Conception initiale de lalgorithme 1.Somme = 0 2.Compteur = 4 3.Somme = somme + compteur 4.Compteur = compteur – 1 5.Si compteur != 0 : aller à la ligne 3 6.stop

41 ORG 36; Les donnés sont stockées à lemplacement 36 DB 4; compteur (emplacement 36) DB 1; décrément de 1 (emplacement 37) DB 0; somme (emplacement 38) ORG 0; Le programme commence à lemplacement 0 LDAC 36; charger AC avec le compteur MVAC; copie AC dans R (début de la boucle, emplacement 3) LDAC 38; charger AC avec la somme ADD; AC somme + compteur STAC 38; sauver AC dans la somme LDAC 37; charger AC avec le décrément MVAC; copie AC dans R LDAC 36; charger AC avec le compteur SUB; AC compteur – décrément STAC 36; Sauver AC dans le compteur JPNZ 3; Si AC !=0, sauter à lemplacement 3 (PC 3) JUMP 65535; Si non, stop.

42 On pourrait simplifier ce programme si – On avait plus de registres Spécifiquement, des registres accessible par lUAL – On pouvait faire des opérations avec plusieurs registres Exemple: ADD A, B, C ; (C A+B) – Le jeux dinstruction contenait une instruction pour décrémenter – Le jeux dinstruction permettait des opérations directement de la mémoire aux registres Le programme serait plus facile à écrire si – Le langage assembleur nous permettait dinscrire un « label » et de pouvoir y référer comme une adresse Très utile pour les sauts (JUMP) et les boucles

43 Notre programme doit être stocké à une adresse mémoire particulière pour fonctionner – pourquoi? On pourrait éliminer cette limitation avec un adressage relatif – Lopérateur est traité comme un décalage par rapport au compteur de programme – Exemple: au lieu de dire « sauter à ladresse 3 » JUMP 3, on dirait « sauter en arrière de 7 » JUMP *-7 (où * veut dire relatif)


Télécharger ppt "Le model Von Neumann INF101 Introduction aux algorithms et à la programmation ©Guillaume Vigeant Traduction de la présentation originale écrite par Greg."

Présentations similaires


Annonces Google