Upload
truongnga
View
219
Download
2
Embed Size (px)
Citation preview
Chapitre 1Introduction à
l’organisation des ordinateurset à l’assembleur
Jean PrivatUniversité du Québec à Montréal
INF2170 — Organisation des ordinateurs et assembleurAutomne 2013
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 1 / 33
Organisation des ordinateurs etassembleur
Objectifs du coursComprendre comment un ordinateur fonctionne (envrai)Apprendre à programmer directement un ordinateur(en vrai)
Difficultés du coursC’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’exploitationDéveloppeurs de pilotesDéveloppeurs de compilateurs et machines virtuellesDé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 ordinateursComprendre l’organisation des ordinateurs du pointde vue du programmeurCar tout ce que fait l’ordinateur passe forcément parle langage machine
BonusApprendre à programmer autrement
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 6 / 33
Domaine d’étude
Structure typique d’un ordinateurApplicationsLangages de haut niveau (dits évolués)Système d’exploitationAssembleur et langage machineMicro-architectureCircuits logiques
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 7 / 33
Domaine d’étude
Structure typique d’un ordinateurApplicationsLangages de haut niveau (dits évolués)Système d’exploitationAssembleur et langage machineMicro-architectureCircuits logiques
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 7 / 33
AssembleurLangage de programmation impératif
Séquences d’instructionsBouclesStructures conditionnellesAppels de sous-programmes... Bref, rien de nouveau
Langage sans petites rouespas de contrôle automatiquepas d’aide
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 8 / 33
Assembleur
Entités en œuvreLe programmeurLe langage (assembleur)Le compilateur (assembleur)Le moteur d’exécution (processeur ou simulateur)
Principes du génie logiciel fondamentauxDisciplineMéthode
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 9 / 33
AssembleurDéfinition
Forme symbolique des instructions du langagemachine
Exemplex = a + b - c ;sera codéOBT A ; o b t e n i r l a v a l e u r de AAJT B ; a j o u t e r l a v a l e u r de BSOU C ; s o u s t r a i r e l a v a l e u r de CRAN X ; r ange r l a v a l e u r dans X
Jean Privat (UQAM) 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 fonctionnementd’un ordinateur
Principes de baseUn ordinateur est une machineTout n’est que bits
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 12 / 33
HistoriqueCailloux et abaques (-5000)
« Calcul » et « caillou » ont la même étymologieAbaques = outils (bouliers, tablettes, etc.)
Machines mécaniquesPascaline (1642) : une calculatriceMachine analytique (1830) : programmable
Premiers vrais ordinateursMARK I (1937–1944) : électromécaniqueENIAC (1943–1946) : électronique
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 13 / 33
Machine de von NeumannPrincipes
Un médium d’entrée→ quantité virtuellement illimité de donnéesUne unité d’emmagasinage→ même représentation interne (bits)pour les instruction et les donnéesUne unité de calcul→ arithmétique et logiqueUn médium de sortie→ quantité virtuellement illimité de résultatsUne unité de contrôle→ interpréter les instructions
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 14 / 33
Machine de von Neumann
Bus
Entrée(clavier) Mémoire
Sortie(écran)
Registres
UCT
Unité arith-métiqueet logique
Unité decontrôle
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 15 / 33
Mémoire
Élément centralTout passe par là (programmes et données)Ensemble fini de cellules
Chaque celluleA une adresseA un nombre fixe de bitsA une seule valeur à la foisEst accessible très rapidement (nano seconde)
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 16 / 33
Mémoire
Tout n’est que bitsUn cellule mémoire de contient que des bits (desnombres)Toute information traitée par un ordinateur doit êtrecodée sous forme numérique... Y compris les instructions machines
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 17 / 33
Mémoire : Exemple1930010113012522501400103050015
Une interprétation possible193 0 10 ; Obtenir mot en 10113 0 12 ; Ajouter mot en 12225 0 14 ; Ranger mot en 140 ; Terminer l’exécution0 3 ; Entier 3 (Première opérande)0 5 ; Entier 5 (Seconde opérande)
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 18 / 33
Mémoire : Exemple1930010113012522501400103050015
Une interprétation possible193 0 10 ; Obtenir mot en 10113 0 12 ; Ajouter mot en 12225 0 14 ; Ranger mot en 140 ; Terminer l’exécution0 3 ; Entier 3 (Première opérande)0 5 ; Entier 5 (Seconde opérande)0 0 ; Entier 0
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 18 / 33
Mémoire : Exemple1930010113012522501400103050815
Une interprétation possible193 0 10 ; Obtenir mot en 10113 0 12 ; Ajouter mot en 12225 0 14 ; Ranger mot en 140 ; Terminer l’exécution0 3 ; Entier 3 (Première opérande)0 5 ; Entier 5 (Seconde opérande)0 8 ; Entier 8 (résultat)
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 18 / 33
RAM/ROM
Mémoire vive ou RAM (random access memory)Stocke les programmes et les donnéesAccessible en lecture et écriture
Mémoire morte ou ROM (read-only memory)Contient de quoi amorcer l’ordinateurContient le code des primitives basiquesd’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érieurHumains et environnementOn parle communément de périphériques
ExemplesClavierÉcranDisque durHaut-parleur
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 20 / 33
Unité centrale de traitement (UCT)
Unité de calculExécute les opérations logiques et arithmétiques
Unité de contrôleLit les instructions en mémoireFournit les opérandes à l’unité de calculRécupère les résultats de l’unité de calcul
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 21 / 33
Horloge
Synchronise les activitésEngendre un signal régulier (GHz)Les activités de l’ordinateur sont synchronisées
Cycle d’horlogeLa plus petite unité de tempsUne instruction peut nécessiter plusieurs cycles
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 22 / 33
Bus
DéfinitionMedium de communication entre les composantesEnsemble de lignes de communication
Les bus sont spécialisésDonnées → bus de donnéeAdresses → bus d’adresseSignaux → bus de contrôle
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 23 / 33
Registres
MémoireCellules mémoire de l’UCTAccès plus rapide que la mémoire principale(pas besoin de prendre le bus)
ContientStocke 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 simpleCaractères US-ASCII (7 bits)Mots de 16 bits (2 octets)Mémoire de 216 octets (64 ko)16 bits d’adresse38 instructions (1 ou 3 octets)6 registres
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 26 / 33
Pep/8
RegistresAccumulateur (A) : 1 mot (2 octets)Index (X) : 1 motCompteur ordinal (PC) : 1 motPointeur de pile (SP) : 1 motMot d’état : 4 bitsInstruction : 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égatifZ = 1 si zéroV = 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 jamaisExécute continuellement les instructions
1 pas d’exécution = 4 étapesExtraire le contenu de la cellule mémoire dontl’adresse se trouve dans le compteur ordinalDécoder l’instruction obtenue : extraire le code del’opération et les opérandesAugmenter le compteur ordinalExécuter les opérations indiquées par l’instruction
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 29 / 33
Cycle d’exécution : Exemple1930010113012522501400103050015
0A0PC0Instr
=
Exécution d’une instructionObtenir l’instruction à partir ducompteur ordinal (PC)Décoder l’instructionIncrémenter PCExécuter l’instruction
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 30 / 33
Cycle d’exécution : Exemple1930010113012522501400103050015
0A0PC
193 0 10Instr=
Exécution d’une instructionObtenir l’instruction à partir ducompteur ordinal (PC)Décoder l’instructionIncrémenter PCExécuter l’instruction
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 30 / 33
Cycle d’exécution : Exemple1930010113012522501400103050015
0A0PC
193 0 10InstrRanger dans A le mot en 10=
Exécution d’une instructionObtenir l’instruction à partir ducompteur ordinal (PC)Décoder l’instructionIncrémenter PCExécuter l’instruction
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 30 / 33
Cycle d’exécution : Exemple1930010113012522501400103050015
0A3PC
193 0 10InstrRanger dans A le mot en 10=
Exécution d’une instructionObtenir l’instruction à partir ducompteur ordinal (PC)Décoder l’instructionIncrémenter PCExécuter l’instruction
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 30 / 33
Cycle d’exécution : Exemple1930010113012522501400103050015
3A3PC
193 0 10InstrRanger dans A le mot en 10=
Exécution d’une instructionObtenir l’instruction à partir ducompteur ordinal (PC)Décoder l’instructionIncrémenter PCExécuter l’instruction
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 30 / 33
Cycle d’exécution : Exemple1930010113012522501400103050015
3A3PC
113 0 12Instr=
Exécution d’une instructionObtenir l’instruction à partir ducompteur ordinal (PC)Décoder l’instructionIncrémenter PCExécuter l’instruction
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 30 / 33
Cycle d’exécution : Exemple1930010113012522501400103050015
3A3PC
113 0 12InstrAjouter à A le mot en 12=
Exécution d’une instructionObtenir l’instruction à partir ducompteur ordinal (PC)Décoder l’instructionIncrémenter PCExécuter l’instruction
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 30 / 33
Cycle d’exécution : Exemple1930010113012522501400103050015
3A6PC
113 0 12InstrAjouter à A le mot en 12=
Exécution d’une instructionObtenir l’instruction à partir ducompteur ordinal (PC)Décoder l’instructionIncrémenter PCExécuter l’instruction
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 30 / 33
Cycle d’exécution : Exemple1930010113012522501400103050015
8A6PC
113 0 12InstrAjouter à A le mot en 12=
Exécution d’une instructionObtenir l’instruction à partir ducompteur ordinal (PC)Décoder l’instructionIncrémenter PCExécuter l’instruction
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 30 / 33
Cycle d’exécution : Exemple1930010113012522501400103050015
8A6PC
225 0 14Instr=
Exécution d’une instructionObtenir l’instruction à partir ducompteur ordinal (PC)Décoder l’instructionIncrémenter PCExécuter l’instruction
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 30 / 33
Cycle d’exécution : Exemple1930010113012522501400103050015
8A6PC
225 0 14InstrRanger en 14 le mot de A=
Exécution d’une instructionObtenir l’instruction à partir ducompteur ordinal (PC)Décoder l’instructionIncrémenter PCExécuter l’instruction
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 30 / 33
Cycle d’exécution : Exemple1930010113012522501400103050015
8A9PC
225 0 14InstrRanger en 14 le mot de A=
Exécution d’une instructionObtenir l’instruction à partir ducompteur ordinal (PC)Décoder l’instructionIncrémenter PCExécuter l’instruction
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 30 / 33
Cycle d’exécution : Exemple1930010113012522501400103050815
8A9PC
225 0 14InstrRanger en 14 le mot de A=
Exécution d’une instructionObtenir l’instruction à partir ducompteur ordinal (PC)Décoder l’instructionIncrémenter PCExécuter l’instruction
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 30 / 33
Cycle d’exécution : Exemple1930010113012522501400103050815
8A9PC0Instr
=
Exécution d’une instructionObtenir l’instruction à partir ducompteur ordinal (PC)Décoder l’instructionIncrémenter PCExécuter l’instruction
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 30 / 33
Cycle d’exécution : Exemple1930010113012522501400103050815
8A9PC0InstrTerminer l’exécution=
Exécution d’une instructionObtenir l’instruction à partir ducompteur ordinal (PC)Décoder l’instructionIncrémenter PCExécuter l’instruction
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 30 / 33
Cycle d’exécution : Exemple1930010113012522501400103050815
8A10PC0InstrTerminer l’exécution=
Exécution d’une instructionObtenir l’instruction à partir ducompteur ordinal (PC)Décoder l’instructionIncrémenter PCExécuter l’instruction
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 30 / 33
Cycle d’exécution : Exemple1930010113012522501400103050815
8A10PC0InstrTerminer l’exécution=
Exécution d’une instructionObtenir l’instruction à partir ducompteur ordinal (PC)Décoder l’instructionIncrémenter PCExécuter l’instruction
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 30 / 33
Instructions et données
Attention : pas de distinction pour l’UCTL’UCT travaille en aveugle (tout n’est que des bits)Le programmeur en assembleur est responsable
Erreur habituelleFaire exécuter des trucs en mémoire qui ne sont pasdes instructions du programme
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 31 / 33
La semaine prochaine
Codage de l’informationTout est des bits... mais pas forcément rangés pareils
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 32 / 33
BibliographieNotes de cours
Chapitre 1 : IntroductionChapitre 2 : Structure et fonctionnement d’unordinateur
LivreSections 1.1, 1.2, 1.3, 4.1 et 4.3
Programmes01-exemple.pep01-exemple.pepo
Jean Privat (UQAM) 01 — Introduction INF2170 — Automne 2013 33 / 33