Chapitre 1 Introduction à l’organisation des ordinateurs et à l’assembleur Jean Privat Université du Québec à Montréal INF2170 — Organisation des ordinateurs et assembleur Automne 2013 Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 1 / 33 Organisation des ordinateurs et assembleur Objectifs du cours Comprendre comment un ordinateur fonctionne (en vrai) Apprendre à programmer directement un ordinateur (en vrai) Difficultés du cours C’est un cours de programmation Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 2 / 33 Plan 1 Programmer en assembleur 2 Structure et fonctionnement d’un ordinateur 3 Le processeur Pep/8 Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 3 / 33 Plan 1 Programmer en assembleur 2 Structure et fonctionnement d’un ordinateur 3 Le processeur Pep/8 Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 4 / 33 Programmer en assembleur Qui programme en assembleur ? Développeurs de systèmes d’exploitation Développeurs de pilotes Développeurs de compilateurs et machines virtuelles Développeurs de logiciels haute performance Et les autres programmeurs ? Ne veulent pas entendre parler d’assembleur Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 5 / 33 Pourquoi ce cours alors ? Organisation des ordinateurs Comprendre l’organisation des ordinateurs du point de vue du programmeur Car tout ce que fait l’ordinateur passe forcément par le langage machine Bonus Apprendre à programmer autrement Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 6 / 33 Domaine d’étude Structure typique d’un ordinateur Applications Langages de haut niveau (dits évolués) Système d’exploitation Assembleur et langage machine Micro-architecture Circuits logiques Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 7 / 33 Domaine d’étude Structure typique d’un ordinateur Applications Langages de haut niveau (dits évolués) Système d’exploitation Assembleur et langage machine Micro-architecture Circuits logiques Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 7 / 33 Assembleur Langage de programmation impératif Séquences d’instructions Boucles Structures conditionnelles Appels de sous-programmes ... Bref, rien de nouveau Langage sans petites roues pas de contrôle automatique pas d’aide Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 8 / 33 Assembleur Entités en œuvre Le programmeur Le langage (assembleur) Le compilateur (assembleur) Le moteur d’exécution (processeur ou simulateur) Principes du génie logiciel fondamentaux Discipline Méthode Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 9 / 33 Assembleur Définition Forme symbolique des instructions du langage machine Exemple x = a + b - c; sera codé OBT AJT SOU RAN A B C X Jean Privat (UQAM) ; ; ; ; obtenir la ajouter la soustraire ranger la v a l e u r de A v a l e u r de B l a v a l e u r de C v a l e u r da ns X 01 — Introduction INF2170 — Automne 2013 10 / 33 Plan 1 Programmer en assembleur 2 Structure et fonctionnement d’un ordinateur 3 Le processeur Pep/8 Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 11 / 33 Structure et fonctionnement d’un ordinateur Principes de base Un ordinateur est une machine Tout n’est que bits Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 12 / 33 Historique Cailloux et abaques (-5000) « Calcul » et « caillou » ont la même étymologie Abaques = outils (bouliers, tablettes, etc.) Machines mécaniques Pascaline (1642) : une calculatrice Machine analytique (1830) : programmable Premiers vrais ordinateurs MARK I (1937–1944) : électromécanique ENIAC (1943–1946) : électronique Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 13 / 33 Machine de von Neumann Principes Un médium d’entrée → quantité virtuellement illimité de données Une unité d’emmagasinage → même représentation interne (bits) pour les instruction et les données Une unité de calcul → arithmétique et logique Un médium de sortie → quantité virtuellement illimité de résultats Une unité de contrôle → interpréter les instructions Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 14 / 33 Machine de von Neumann Entrée (clavier) Mémoire Sortie (écran) Bus Unité arithmétique et logique Registres Unité de contrôle UCT Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 15 / 33 Mémoire Élément central Tout passe par là (programmes et données) Ensemble fini de cellules Chaque cellule A une adresse A un nombre fixe de bits A une seule valeur à la fois Est accessible très rapidement (nano seconde) Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 16 / 33 Mémoire Tout n’est que bits Un cellule mémoire de contient que des bits (des nombres) Toute information traitée par un ordinateur doit être codée sous forme numérique ... Y compris les instructions machines Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 17 / 33 Mémoire : Exemple 0 5 10 15 193 0 10 113 0 12 225 0 14 0 0 3 0 5 0 0 Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 18 / 33 Mémoire : Exemple 0 5 10 15 193 0 10 113 0 12 225 0 14 0 0 3 0 5 0 0 Jean Privat (UQAM) Une interprétation possible 193 0 10 ; Obtenir mot en 10 113 0 12 ; Ajouter mot en 12 225 0 14 ; Ranger mot en 14 0 ; Terminer l’exécution 0 3 ; Entier 3 (Première opérande) 0 5 ; Entier 5 (Seconde opérande) 0 0 ; Entier 0 01 — Introduction INF2170 — Automne 2013 18 / 33 Mémoire : Exemple 0 5 10 15 193 0 10 113 0 12 225 0 14 0 0 3 0 5 0 8 Jean Privat (UQAM) Une interprétation possible 193 0 10 ; Obtenir mot en 10 113 0 12 ; Ajouter mot en 12 225 0 14 ; Ranger mot en 14 0 ; Terminer l’exécution 0 3 ; Entier 3 (Première opérande) 0 5 ; Entier 5 (Seconde opérande) 0 8 ; Entier 8 (résultat) 01 — Introduction INF2170 — Automne 2013 18 / 33 RAM/ROM Mémoire vive ou RAM (random access memory) Stocke les programmes et les données Accessible en lecture et écriture Mémoire morte ou ROM (read-only memory) Contient de quoi amorcer l’ordinateur Contient le code des primitives basiques d’entrées-sorties (BIOS) Accessible en lecture seulement (voire en écriture par des moyens détournés) Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 19 / 33 Unités d’entrée-sortie Communiquer avec l’extérieur Humains et environnement On parle communément de périphériques Exemples Clavier Écran Disque dur Haut-parleur Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 20 / 33 Unité centrale de traitement (UCT) Unité de calcul Exécute les opérations logiques et arithmétiques Unité de contrôle Lit les instructions en mémoire Fournit les opérandes à l’unité de calcul Récupère les résultats de l’unité de calcul Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 21 / 33 Horloge Synchronise les activités Engendre un signal régulier (GHz) Les activités de l’ordinateur sont synchronisées Cycle d’horloge La plus petite unité de temps Une instruction peut nécessiter plusieurs cycles Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 22 / 33 Bus Définition Medium de communication entre les composantes Ensemble de lignes de communication Les bus sont spécialisés Données → bus de donnée Adresses → bus d’adresse Signaux → bus de contrôle Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 23 / 33 Registres Mémoire Cellules mémoire de l’UCT Accès plus rapide que la mémoire principale (pas besoin de prendre le bus) Contient Stocke les opérandes, résultats, etc. Sert au contrôle de l’ordinateur Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 24 / 33 Plan 1 Programmer en assembleur 2 Structure et fonctionnement d’un ordinateur 3 Le processeur Pep/8 Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 25 / 33 Pep/8 Une machine de von Neumann très simple Caractères US-ASCII (7 bits) Mots de 16 bits (2 octets) Mémoire de 216 octets (64 ko) 16 bits d’adresse 38 instructions (1 ou 3 octets) 6 registres Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 26 / 33 Pep/8 Registres Accumulateur (A) : 1 mot (2 octets) Index (X) : 1 mot Compteur ordinal (PC) : 1 mot Pointeur de pile (SP) : 1 mot Mot d’état : 4 bits Instruction : 1 ou 3 octets Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 27 / 33 Mot d’état Pep/8 4 bits de statut (NZVC) N = 1 si négatif Z = 1 si zéro V = 1 si débordement (overflow) C = 1 si retenu (carry) Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 28 / 33 Boucle d’exécution de l’UCT L’UCT ne s’arrête jamais Exécute continuellement les instructions 1 pas d’exécution = 4 étapes Extraire le contenu de la cellule mémoire dont l’adresse se trouve dans le compteur ordinal Décoder l’instruction obtenue : extraire le code de l’opération et les opérandes Augmenter le compteur ordinal Exécuter les opérations indiquées par l’instruction Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 29 / 33 Cycle d’exécution : Exemple 0 5 10 15 193 0 10 113 0 12 225 0 14 0 0 3 0 5 0 0 A PC Instr = Jean Privat (UQAM) 0 0 0 Exécution d’une instruction Obtenir l’instruction à partir du compteur ordinal (PC) Décoder l’instruction Incrémenter PC Exécuter l’instruction 01 — Introduction INF2170 — Automne 2013 30 / 33 Cycle d’exécution : Exemple 0 5 10 15 193 0 10 113 0 12 225 0 14 0 0 3 0 5 0 0 0 A 0 PC Instr 193 0 10 = Jean Privat (UQAM) Exécution d’une instruction Obtenir l’instruction à partir du compteur ordinal (PC) Décoder l’instruction Incrémenter PC Exécuter l’instruction 01 — Introduction INF2170 — Automne 2013 30 / 33 Cycle d’exécution : Exemple 0 5 10 15 193 0 10 113 0 12 225 0 14 0 0 3 0 5 0 0 0 A 0 PC Instr 193 0 10 = Ranger dans A le mot en 10 Jean Privat (UQAM) Exécution d’une instruction Obtenir l’instruction à partir du compteur ordinal (PC) Décoder l’instruction Incrémenter PC Exécuter l’instruction 01 — Introduction INF2170 — Automne 2013 30 / 33 Cycle d’exécution : Exemple 0 5 10 15 193 0 10 113 0 12 225 0 14 0 0 3 0 5 0 0 0 A 3 PC Instr 193 0 10 = Ranger dans A le mot en 10 Jean Privat (UQAM) Exécution d’une instruction Obtenir l’instruction à partir du compteur ordinal (PC) Décoder l’instruction Incrémenter PC Exécuter l’instruction 01 — Introduction INF2170 — Automne 2013 30 / 33 Cycle d’exécution : Exemple 0 5 10 15 193 0 10 113 0 12 225 0 14 0 0 3 0 5 0 0 3 A 3 PC Instr 193 0 10 = Ranger dans A le mot en 10 Jean Privat (UQAM) Exécution d’une instruction Obtenir l’instruction à partir du compteur ordinal (PC) Décoder l’instruction Incrémenter PC Exécuter l’instruction 01 — Introduction INF2170 — Automne 2013 30 / 33 Cycle d’exécution : Exemple 0 5 10 15 193 0 10 113 0 12 225 0 14 0 0 3 0 5 0 0 3 A 3 PC Instr 113 0 12 = Jean Privat (UQAM) Exécution d’une instruction Obtenir l’instruction à partir du compteur ordinal (PC) Décoder l’instruction Incrémenter PC Exécuter l’instruction 01 — Introduction INF2170 — Automne 2013 30 / 33 Cycle d’exécution : Exemple 0 5 10 15 193 0 10 113 0 12 225 0 14 0 0 3 0 5 0 0 3 A 3 PC Instr 113 0 12 = Ajouter à A le mot en 12 Jean Privat (UQAM) Exécution d’une instruction Obtenir l’instruction à partir du compteur ordinal (PC) Décoder l’instruction Incrémenter PC Exécuter l’instruction 01 — Introduction INF2170 — Automne 2013 30 / 33 Cycle d’exécution : Exemple 0 5 10 15 193 0 10 113 0 12 225 0 14 0 0 3 0 5 0 0 3 A 6 PC Instr 113 0 12 = Ajouter à A le mot en 12 Jean Privat (UQAM) Exécution d’une instruction Obtenir l’instruction à partir du compteur ordinal (PC) Décoder l’instruction Incrémenter PC Exécuter l’instruction 01 — Introduction INF2170 — Automne 2013 30 / 33 Cycle d’exécution : Exemple 0 5 10 15 193 0 10 113 0 12 225 0 14 0 0 3 0 5 0 0 8 A 6 PC Instr 113 0 12 = Ajouter à A le mot en 12 Jean Privat (UQAM) Exécution d’une instruction Obtenir l’instruction à partir du compteur ordinal (PC) Décoder l’instruction Incrémenter PC Exécuter l’instruction 01 — Introduction INF2170 — Automne 2013 30 / 33 Cycle d’exécution : Exemple 0 5 10 15 193 0 10 113 0 12 225 0 14 0 0 3 0 5 0 0 8 A 6 PC Instr 225 0 14 = Jean Privat (UQAM) Exécution d’une instruction Obtenir l’instruction à partir du compteur ordinal (PC) Décoder l’instruction Incrémenter PC Exécuter l’instruction 01 — Introduction INF2170 — Automne 2013 30 / 33 Cycle d’exécution : Exemple 0 5 10 15 193 0 10 113 0 12 225 0 14 0 0 3 0 5 0 0 8 A 6 PC Instr 225 0 14 = Ranger en 14 le mot de A Jean Privat (UQAM) Exécution d’une instruction Obtenir l’instruction à partir du compteur ordinal (PC) Décoder l’instruction Incrémenter PC Exécuter l’instruction 01 — Introduction INF2170 — Automne 2013 30 / 33 Cycle d’exécution : Exemple 0 5 10 15 193 0 10 113 0 12 225 0 14 0 0 3 0 5 0 0 8 A 9 PC Instr 225 0 14 = Ranger en 14 le mot de A Jean Privat (UQAM) Exécution d’une instruction Obtenir l’instruction à partir du compteur ordinal (PC) Décoder l’instruction Incrémenter PC Exécuter l’instruction 01 — Introduction INF2170 — Automne 2013 30 / 33 Cycle d’exécution : Exemple 0 5 10 15 193 0 10 113 0 12 225 0 14 0 0 3 0 5 0 8 8 A 9 PC Instr 225 0 14 = Ranger en 14 le mot de A Jean Privat (UQAM) Exécution d’une instruction Obtenir l’instruction à partir du compteur ordinal (PC) Décoder l’instruction Incrémenter PC Exécuter l’instruction 01 — Introduction INF2170 — Automne 2013 30 / 33 Cycle d’exécution : Exemple 0 5 10 15 193 0 10 113 0 12 225 0 14 0 0 3 0 5 0 8 A PC Instr = Jean Privat (UQAM) 8 9 0 Exécution d’une instruction Obtenir l’instruction à partir du compteur ordinal (PC) Décoder l’instruction Incrémenter PC Exécuter l’instruction 01 — Introduction INF2170 — Automne 2013 30 / 33 Cycle d’exécution : Exemple 0 5 10 15 193 0 10 113 0 12 225 0 14 0 0 3 0 5 0 8 A PC Instr = Jean Privat (UQAM) 8 9 0 Terminer l’exécution Exécution d’une instruction Obtenir l’instruction à partir du compteur ordinal (PC) Décoder l’instruction Incrémenter PC Exécuter l’instruction 01 — Introduction INF2170 — Automne 2013 30 / 33 Cycle d’exécution : Exemple 0 5 10 15 193 0 10 113 0 12 225 0 14 0 0 3 0 5 0 8 A PC Instr = Jean Privat (UQAM) 8 10 0 Terminer l’exécution Exécution d’une instruction Obtenir l’instruction à partir du compteur ordinal (PC) Décoder l’instruction Incrémenter PC Exécuter l’instruction 01 — Introduction INF2170 — Automne 2013 30 / 33 Cycle d’exécution : Exemple 0 5 10 15 193 0 10 113 0 12 225 0 14 0 0 3 0 5 0 8 A PC Instr = Jean Privat (UQAM) 8 10 0 Terminer l’exécution Exécution d’une instruction Obtenir l’instruction à partir du compteur ordinal (PC) Décoder l’instruction Incrémenter PC Exécuter l’instruction 01 — Introduction INF2170 — Automne 2013 30 / 33 Instructions et données Attention : pas de distinction pour l’UCT L’UCT travaille en aveugle (tout n’est que des bits) Le programmeur en assembleur est responsable Erreur habituelle Faire exécuter des trucs en mémoire qui ne sont pas des instructions du programme Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 31 / 33 La semaine prochaine Codage de l’information Tout est des bits ... mais pas forcément rangés pareils Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 32 / 33 Bibliographie Notes de cours Chapitre 1 : Introduction Chapitre 2 : Structure et fonctionnement d’un ordinateur Livre Sections 1.1, 1.2, 1.3, 4.1 et 4.3 Programmes 01-exemple.pep 01-exemple.pepo Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 33 / 33