Chapitre 1 Introduction à l'organisation des ordinateurs et à l ...

Post on 05-Jan-2017

219 views 2 download

Transcript of Chapitre 1 Introduction à l'organisation des ordinateurs et à l ...

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