Le model Von Neumann INF101

Slides:



Advertisements
Présentations similaires
GEF 435 Principes des systèmes dexploitation Le matériel des ordinateurs Revue Pt II (Tanenbaum 1.4)
Advertisements

Électronique de base du processeur
Le Concept du programme enregistré
Architecture de machines Le microprocesseur
Fonctionnement de l'unité centrale (rappels ? de 1ère Année)
ARCHITECTURE INTERNE d’un MICROPROCESSEUR
Architecture des processeurs généralistes haute performance
GEF 435 Principes des systèmes d’exploitation
Plan du cours : 2ème Partie
Jacques Lonchamp IUT Nancy Charlemagne – DUT Informatique 1A
Objectifs Identifier l’interface entre le logiciel de plus bas niveau et le matériel Comprendre la problématique de l’architecture du jeu d’instruction.
Objectifs Nous allons concevoir une mise en œuvre contenant un noyau de jeu d’instructions. Nous verrons comment l’architecture de jeu d’instructions.
Le Concept du programme enregistré
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Architecture des Ordinateurs
Architecture Systèmes
2.Les différentes architectures (Louis)
Les microprocesseurs A. Objectifs de la séquence:
Architecture de machines Principes généraux
Système d’exploitation : Assembleur
Les systèmes à microprocesseur
Chapitre 8 : L’architecture de base des ordinateurs
Système d’exploitation : Assembleur
ARCHITECTURE GLOBALE CAPTAGE Traitement DES des données GRANDEURS
Les bases de l’Algorithmique
Partie 1 Etude de l'existant
Architecture de base d’un ordinateur
Les piles Djamal Rebaïne.
Architecture et technologie des ordinateurs II
LE MICROPROCESSEUR 8086/8088 Architecture externe du 8086
Architecture des Ordinateurs
Algorithmique et Programmation
Système d’exploitation : Assembleur
Architecture d ’un système à MICROPROCESSEUR
LES SYSTEMES AUTOMATISES
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Systèmes Superscalaires et VLIW
Semaine #1 INF135 par Frédérick Henri.
IFT Complexité et NP-complétude
Architecture et technologie des ordinateurs II
Chap. 2 - Structure d’un ordinateur
L'Unité centrale (CPU) Le CPU doit être rapide (mesuré en temps de CPU) UNITE DE CONTROLE Générer les signaux de control/temps Contrôler le décodage/exécution.
Informatique 1. Les applications de l’informatique
Lycée ELKHAWARIZMI De SAFI
Logique programmée & Microprocesseurs
Architecture Des Ordinateurs Microprocesseur Et Mémoire
Chapitre 9 : La machine MIASM
Cours de Structure et Technologie des composants d’ordinateurs
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Encodage du jeu d’instructions.
Architecture d'un ordinateur
3-Présentation d’un µP simple
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Modélisation VHDL de.
Architectures des ordinateurs
Les Machines RAM.
Architecture et technologie des ordinateurs II
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. tél Fax Cours Architecture des.
INFOR 101 Chapitre 5 Marianne Morris.
D.E ZEGOUR Ecole Supérieure d’Informatique
1. Ook Christophe Delagarde, septembre 1999 I.U.T., Université de la Méditerrainée 2.
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
Simulateur de microcontrôleur Intel 80C51
Patricia Renault UPMC 2005/2006
Chapitre 3 L’accès aux données.
1.1: notions de bases de l’informatique
Semaine 5 Registres spéciaux et périphériques internes Projet initial en ingénierie informatique et travail en équipe INF1995 Jérôme Collin et al.
Architecture d’un ordinateur
Les bascules et registres
Formations Système Embarqué & Informatique Industrielle
ARCHITECTURE MATERIELLE D’UN SYSTEME A MICROPROCESSEUR
Architecture de machines Le microprocesseur Cours
Transcription de la présentation:

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 d’une creative commons license

Organisation d’un ordinateur

Mémoire Cache Processeur Mémoire Vive Carte graphique Périphériques

Processeur (CPU) Intel pentium 4

Un arrangement complexe de logique combinatoire et séquentielle

Exécute des instructions

Instruction = opération binaire simple

Exemple: additionner deux nombres

Exemple: Lire une valeur en mémoire

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

Bus d’Interconnections Bus des adresses de la mémoire Bus des données de la mémoire M Section des registres Unité Arithmétique et Logique UAL Bus d’Interconnections

Section des registres: mémoire locale du processeur

UAL: opère sur les données (addition, ET, ou, etc.)

Bus d’Interconnections : Interconnecte les registres, l’UAL, la mémoire

Unité de contrôle: Gère le bon fonctionnement du processeur en envoyant des signaux de contrôle pour chaque états du processeur.

Mémoire Comment interpréter? Adresse en mémoire Contenu 1 00000000 2 01001010 3 10111101 4 10101001 5 11110011 6 00100100 7 00010010 8 11111111 9 10101101 Comment interpréter?

Machine à états Ne fait qu’une seule chose dans chaque état Le prochain état est déterminé par l’unité de contrôle Se base sur l’état actuel et le contenu des registres L’état change à chaque impulsion de l’horloge « clock tick »

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

Un processeur ridiculement simple: supposons que nous voulons construire un processeur qui…

Travail avec des valeur entre 0 et 255 Combien de bits?

Qui doit accéder à 64 emplacements en mémoire (pour les programmes et les données) Combien de bits?

Toute conception de processeur passe par la définition d’un jeux d’instruction Le vocabulaire d’opérations que le processeur peut exécuter Chaque instruction nécessite différent circuit logique de contrôle et d’exécution à même le processeur L’architecture du jeux d’instruction 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 d’occuper un vide a court terme dans la chaine de production jusqu’à ce que l’ambitieux processeur i432 soit enfin prêt pour la production. Vue que ce n’était qu’une architecture temporaire, la direction d’Intel n’a donné que trois semaines à l’équipe de design pour définir le jeux d’instruction. Le processeur i432 fût un échec et tous les processeurs Intel modernes sont basés sur l’architecture du 8086.

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?

Registre accessible par l’utilisateur: AC (accumulateur de 8-bits) pour les opérations mathématique et logiques Registre système: PC (compteur du programme 6-bits) contient l’adresse de la prochaine instruction à être exécuté Jeux d’instruction ADD 00aaaaaa ACAC+M[aaaaaa] AND 01aaaaaa ACAC AND M[aaaaaa] JMP 10aaaaaa PCaaaaaa INC 11aaaaaa ACAC+1

Bus d’Interconnections Bus données Bus adresse AR: registre d’adresse Contient les bits d’adresse qui sont véhiculé sur le bus d’adresse mémoire. DR: registre de donné Contient les données recueillit du bus de données de la mémoire IR: registre d’instruction Contient l’opérateur de l’instruction M: mémoire vive M AR PC DR UAL AC IR Bus d’Interconnections

ARPC DRM PCPC+1 IRDR[7..6] ARDR[5..0] DRM DRM PCDR[5..0] Chaque bulle représente un état dans lequel le processeur exécute une fonction spécifique. Le processeur avance d’un état à l’autre à chaque impulsion de l’horloge sous la direction de l’unité de contrôle. Combien d’impulsions de l’horloge est-ce que chaque instruction à besoin? ARPC DRM PCPC+1 IRDR[7..6] ARDR[5..0] DRM DRM PCDR[5..0] ACAC +1 ACAC+DR ACAC and DR

Additionneur parallèle (provenant de l’unité de contrôle) UAL AC Vers l’AC Additionneur parallèle DR (provenant du bus) Signal de contrôle (provenant de l’unité de contrô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.

performance

horloge plus rapide = meilleure performance

Plus de travail par instruction = meilleure performance moins d’états pas instructions = meilleure performance on ne peut normalement pas faire les deux…

Microprocesseur à jeux d’instruction étendu, ou CISC (complex instruction set computer) mets l’emphase sur d’avantage de travail par instructions (exemple.: pentium, core i5/i7)

Microprocesseur à jeux d’instruction réduit, ou risc (reduced instruction set computer) mets l’emphase sur la limitation des états par instructions (exemple.: arm)

Langage machine Langage assembleur 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 s’appellent « langage machine » Par exemple.: pour signifier « additionner le contenu de l’emplacement mémoire 22 à l’accumulateur » on écrit 00010110 00 signifie « additionner à l’accumulateur » et 010110 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 d’abstraction 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 l’opérateur suivit de l’opérande Exemple.: ADD 22 au lieu de 00010110

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 d’une adresse en mémoire quelconque Initialiser le compteur de programme (registre PC) afin qu’il pointe vers notre première instruction Démarrer le processeur et voila! Notre program s’exécute.

Un processeur un peu plus complexe

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 d’embranchement 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 d’opérande pour toutes les opérations arithmétiques et logiques Z registre zéro (1 bit) Contient un 1 si le résultat d’une opération arithmétique ou logique est zéro dans l’accumulateur N’est pas affecté par les autres opérations Sert généralement aux décisions d’embranchement.

Seize instructions, code d’opérateur de 8 bits (opcode) Γ est une opérande de 16 bits qui représente un emplacement en mémoire NOP aucune opération (rien faire) LDAC Γ charger AC de l’emplacement en mémoire Γ STAC Γ stock le contenu de AC à l’emplacement en mémoire Γ MVAC transfert le contenu de AC vers R MOVR transfert 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

En plus des instructions, la majorité des assembleurs comprennent certaines directives qui affectent leur fonctionnement L’assembleur du simulateur de Carpinelli accepte les directives suivantes: ORG Γ Commence à assembler les instructions à l’emplacement Γ 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 n’ont aucun effet sur l’assembleur; Ils sont uniquement destinés aux humains

Afin d’écrire votre programme, veillez considérer que: But: additionner le contenu des emplacements mémoire 20 et 21 et inscrire le résultat à l’adresse 22 Afin d’écrire votre programme, veillez considérer que: On ne peut qu’additionner des nombres qui sont dans les registres AC et R; Le résultat se retrouve dans l’AC Le contenu de la mémoire ne peut qu’être transféré dans l’AC mais on peut bouger les valeurs de l’AC vers R et vice versa. Seul une valeur contenue dans l’AC peut être transféré vers la mémoire. On peut donc écrire notre programme comme suit LDAC 20 MVAC LDAC 21 ADD ; m[20]+m[21] STAC 22 JUMP 65535 ; stop! On peut aussi initialiser des valeurs en mémoire comme suit: ORG 20 DB 6 DB 9

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

ORG 36 ; Les donnés sont stockées à l’emplacement 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 à l’emplacement 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 SUB ; ACcompteur – décrément STAC 36 ; Sauver AC dans le compteur JPNZ 3 ; Si AC !=0, sauter à l’emplacement 3 (PC3) JUMP 65535 ; Si non, stop.

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

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