Architecture des ordinateurs. Architecture de von Neumann processeur simplifié ordinateur simplifié



Documents pareils
Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007

Chapitre 4 : Les mémoires

On distingue deux grandes catégories de mémoires : mémoire centrale (appelée également mémoire interne)

Conception de circuits numériques et architecture des ordinateurs

Cours Informatique 1. Monsieur SADOUNI Salheddine

Conception de circuits numériques et architecture des ordinateurs

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Structure de base d un ordinateur

Cours 3 : L'ordinateur

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

Architecture des ordinateurs

Matériel & Logiciels (Hardware & Software)

Structure et fonctionnement d'un ordinateur : hardware

Programmation assembleur : aperçu

Informatique Industrielle Année Architecture des ordinateurs Note de cours T.Dumartin

Sur un ordinateur portable ou un All-in-One tactile, la plupart des éléments mentionnés précédemment sont regroupés. 10) 11)

TD Architecture des ordinateurs. Jean-Luc Dekeyser

Leçon 1 : Les principaux composants d un ordinateur

La mémoire. Un ordinateur. L'octet. Le bit

Ordinateur Logiciel Mémoire. Entrées/sorties Périphériques. Suite d'instructions permettant de réaliser une ou plusieurs tâche(s), de résoudre un

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès haouaticpge@gmail.com

Guide Mémoire NETRAM

Exécution des instructions machine

Éléments d'architecture des ordinateurs

Architecture des Ordinateurs. Partie II:

Chapitre 13 Numérisation de l information

Architecture des ordinateurs

Tout savoir sur le matériel informatique

Alchin Couderc Flambard TBSEID 2

Architecture matérielle des systèmes informatiques

Programmation C. Apprendre à développer des programmes simples dans le langage C

ASR1 TD7 : Un microprocesseur RISC 16 bits

Logiciel de base. Première année ENSIMAG

Premiers pas sur l ordinateur Support d initiation

L ORDINATEUR. Les composants. La carte mère. Le processeur. Fréquence

Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)

Architecture des ordinateurs

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

CQP 112 Introduc/on à la programma/on. Thème 2 : Architecture d un système informa/que. Département d informa/que

Une version javascript sera disponible directement dans le cours prochainement.

Rappels d architecture

qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcvbnmq

Architecture des ordinateurs Introduction à l informatique

Architecture ordinateur. Organisation mémoire et Entrées/Sorties

LE MICRO ORDINATEUR. Introduction Architecture Les supports amovibles Les composants Le système d exploitation Les portables

Le bus USB. I) Introduction : II) Architecture du bus USB :

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

ACTIVITÉ DE PROGRAMMATION

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Informatique Générale

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Architecture des ordinateurs. Robin FERCOQ

Architecture des calculateurs

Module M1 Elément 2 : Informatique 1 (I1)

Tests de performance du matériel

et dépannage de PC Configuration Sophie Lange Guide de formation avec exercices pratiques Préparation à la certification A+

Limitations of the Playstation 3 for High Performance Cluster Computing

GPA770 Microélectronique appliquée Exercices série A

TIC. Tout d abord. Objectifs. L information et l ordinateur. TC IUT Montpellier

Fonctionnement et performance des processeurs

Structure d un programme

Microprocesseur + Logiciel

Le poids et la taille des fichiers

Fiche technique CPU 314SC/DPM (314-6CG13)

Certificat Informatique et internet Niveau 1 TD D1. Domaine 1 : Travailler dans un environnement numérique évolutif. 1. Généralités : Filière

Compilation (INF 564)

ELP 304 : Électronique Numérique. Cours 1 Introduction

UE Programmation Impérative Licence 2ème Année

Spécifications détaillées

Travaux pratiques Détermination de la capacité de stockage des données

Prentice Hall, 2011 (ISBN )

GESTION DE LA MEMOIRE

AUJOUR'HUI, NOUS ALLONS DÉCOUVRIR

IV- Comment fonctionne un ordinateur?

Démontage d'un ordinateur

SSTIC Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Un ordinateur, c est quoi?

CH.3 SYSTÈMES D'EXPLOITATION

Ordinateurs, Structure et Applications

Structure et Technologie des Ordinateurs A. Oumnad

MICROCONTROLEURS PIC PROGRAMMATION EN C. V. Chollet - cours-pic-13b - 09/12/2012 Page 1 sur 44

Le Programme SYGADE SYGADE 5.2. Besoins en équipement, logiciels et formation. UNCTAD/GID/DMFAS/Misc.6/Rev.7

Matériel informatique (hardware)

IFT1215 Introduction aux systèmes informatiques

PRÉCISIONS ET PRÉALABLES

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

Généralités sur le Langage Java et éléments syntaxiques.

L informatique en solo

Présentation du système informatique utilisé et éléments d architecture des ordinateurs

Matériel. Matériel de bureau

ARCHITECTURE ET FONCTIONNEMENT

HP 600PD TWR i G 4.0G 39 PC

TO4T Technologie des ordinateurs. Séance 1 Introduction aux technologies des ordinateurs

NOTIONS DE RESEAUX INFORMATIQUES

Initiation à la sécurité

LOT N 1 : ORDINATEURS BORDEREAU DE PRIX IDENTIFICATION DU FOURNISSEUR. Code DESIGNATION QTE PU HT EN EURO MONTANT TOTAL HT EN EURO MONTANT TTC EN EURO

Transcription:

Architecture des ordinateurs Architecture de von Neumann processeur simplifié ordinateur simplifié 91

Architecture de von Neumann! Séparation du stockage et du traitement Mémoire principale écriture résultat Unité Arithmétique et Logique : UAL Données Programme lecture opérandes lecture instruction Opération Sélection opération Instruction Unité de commande possible prise en compte résultat dans déroulement séquence programme Mémoire : Données et description des traitements Processeur : Exécution des traitements sur les données 92

Architecture de von Neumann! L'unité de commande (ou unité de contrôle) lit les instructions une à une depuis la mémoire A partir de l'instruction en cours, l'unité de commande indique l'emplacement des opérandes, l'opération à faire, l'emplacement du résultat L'Unité Arithmétique et Logique réalise des opérations élémentaires sur 2 opérandes ( arithmétique + - / x, logique ''et, ou, non'' ) Ce schéma simplifié ne fait pas encore apparaître les unités d'entrées et de sorties 93

Architecture processeur! En plus du traitement (Unité de commande, UAL) un processeur réel dispose de registres Mémoire Entrées Sorties Registre = un espace de stockage (peu mais rapide) Registres R0 R2 R4 R1 R3 R5 Processeur commande transferts mémoire et E/S registres Lecture instruction sélection opérandes Opération UAL sélection opération Instruction sélection destination Unité de commande 94

Architecture processeur Exemple : ajouter R3 et R5, résultat dans R1 L'instruction du programme est chargée depuis la mémoire par l'unité de commande... Mémoire Registres R0 : 117 R1 : 5 R2 : 215 R3 : 11 R4 : 10 R5 : 13 Opération UAL Entrées Sorties Lecture instruction R3+R5 R1 Unité de commande 95

Architecture processeur Sélection du contenu des registres R3 et R5 Sélection de l'opération + Réalisation du calcul par l'ual Mémoire Entrées Sorties Registres R0 : 117 R1 : 5 R2 : 215 R3 : 11 R4 : 10 R5 : 13 11 13 sélection opérandes UAL + sélection opération R3+R5 R1 24 Unité de commande 96

Architecture processeur Sélection du registre destination : R1 reçoit le résultat de l'opération Mémoire Registres R0 : 117 R1 : 24 R2 : 215 R3 : 11 R4 : 10 R5 : 13 UAL Entrées Sorties sélection destination 24 R3+R5 R1 Unité de commande 97

Architecture ordinateur! Les échanges d'informations passent par un bus partagé (bus système) ou par des composants spécifiques de la carte mère. Processeur Mémoire Principale BIOS (démarrage) Contrôleur de disque Contrôleur vidéo Contrôleur clavier Disque dur Ecran Clavier 98

Architecture réelle simplifiée! Les données fréquemment utilisées sont dans les registres (compteurs de boucles...) Les autres données sont en mémoire principale ou sur des circuits périphériques (entrées/sortie) Adresses 0000 0001 0002 0003 0004... 8FFB 8FFC 8FFD 8FFE 8FFF Contenu 00000000 01001110 00001010 00000010 01011100... 00000110 11110000 00101000 00001110 00001011 Mémoire principale BUS SYSTEME... Entrées Sorties Processeur Registres Opération UAL Instruction unité de commande 99

Architecture des ordinateurs Les dispositifs de stockage : Mémoires 100

Mémoires à accès par adresses! La mémoire principale (mémoire vive) est une mémoire dont les éléments sont accessibles directement par adresses Adresses croissantes vers le bas ( convention usuelle mais non systématique ) Adresses 0000 0001 0002 0003 0004... 8FFB 8FFC 8FFD 8FFE 8FFF Contenu : Octets 00000000 01001110 00001010 00000010 01011100... 00000110 11110000 00101000 00001110 00001011 101

Mémoires à accès par adresses i Structure possible pour une mémoire à accès par adresses (circuits lecture seuls représentés) mémoire de 64 bits adresse sur 6 bits 0x2E =0b011101 decoder mux donnée lue : 1 bit 102

Mémoires à accès par adresse i Pour obtenir des mémoires de ''mots'' de n bits on peut combiner n matrices mémoire de 64 octets Ligne Colonne donnée lue : 8 bits = 1 octet 103

Mémoires à accès par adresses i RAM : Random Access Memory Mémoire accessible en écriture et lecture Mémoire volatile : oubli des données en l'absence d'alimentation (système éteint) SRAM : Static RAM Utilise des bascules pour mémoriser Rapide mais couteux en composant (6 transistors / bit) DRAM : Dynamic RAM Utilise des charges de condensateurs Un seul transistor par bit mémorisé Moins rapide que SRAM et nécessite des ''rafraîchissements'' périodiques (toutes les ms) 104

Mémoires à accès par adresses L'accès ''aléatoire'' aux informations dans ces mémoires se fait par mots de 8, 16, 32 ou 64 bits sur les systèmes récents On parle d'accès aléatoire (random access) à des petits éléments d'information par opposition à l'accès séquentiel et par blocs de grandes tailles sur les disques durs (clusters typiquement de plus de 4096 octets) 105

Mémoires non volatiles i Mémoires non volatiles accessibles par adresses : ROM : Read Only Memory Composants cablés, mémoire figée à la fabrication PROM : Programmable ROM Composant inscriptible une seule fois EPROM : Erasable & Programmable ROM Composant réinscriptible après effacement UV Flash & EEPROM : Electrically Erasable PROM Composants réinscriptibles plusieurs fois sans nécessité de démontage 106

Résumé des mém. adressables i Aucune mémoire n'est idéale : le choix dépend de l'application 107

Mémoires de masse Les mémoires de masse sont des mémoires de grande capacité non volatiles Actuellement les mémoires de masse sont lentes pour des accès ''aléatoires'' : Bandes magnétiques Temps d'accès très lent mais économique Archivage Disques durs Temps d'accès meilleurs (~10ms) et débits élevés Stockage système, programmes, données utilisateurs Disques optiques, CD/DVD/HD/Blu-ray Supports amovibles inscriptibles ou réinscriptibles 108

Mesure des mémoires!i Quand les adresses sont données sur un nombre fixe q de bits : N octets = 2 q Les préfixes usuels des unités de mesures sont utilisés ainsi : kilo-octet ko : 2 10 = 1024 octets méga-octet Mo : 2 20 = 1024 2 octets giga-octet Go : 2 30 = 1024 3 octets téra-octet To : 2 40 = 1024 4 octets Ce sont les notations usuelles pour les RAMs 109

Mesure des mémoires i Ces notations sont en contradiction avec le Système International d'unités (SI) Dans les autres domaines informatiques que les mémoires à accès par adresse, les mesures sont se font en puissances de 1000 En particulier un disque dur indiquant 320 Go contient exactement 320x10 9 octets La confusion conduit à une erreur de 6,8% sur cet exemple 110

Mesure des mémoires i Pour éviter les confusions, lorsqu'on utilise des puissances de 1024 on peut préciser kibi-octet kio mébioctet Mio gibioctet Gio tébioctet Tio Ces notations ne sont pas encore régulièrement utilisées : méfiance 111

Mesure des mémoires i En anglais octet = Byte : unité B 2 MB = 2x10 6 octets ou 2x2 20 octets 2 MiB = 2x2 20 octets En anglais comme en français, bit : unité b 2 Mb = 2x10 6 bits = 250000 octets ou 2x2 20 bits = 262144 octets 2 Mib = 2x2 20 bits = 262144 octets Un octet = 8 bits : One Byte = 8 bits 112

Architecture des ordinateurs Les dispositifs de transmission : Les BUS 113

BUS! Un bus est un ensemble de lignes qui transportent l'information Il existe des bus Entre systèmes autonomes (ex. Ethernet) passage par des ''fils'' ou câbles Entre composants (ex. Bus système) passage par des pistes sur circuit imprimé A l'intérieur d'un composant (ex. registres<-> UAL) passage sur des pistes métalliques ''gravées'' sur le support silicium 114

BUS Un même bus peut relier deux éléments : bus dédié (ou point à point) exemple : câble entre ordinateur et moniteur plus de deux éléments : bus partagé (multiplexé) exemple : câble USB avec répartiteur (HUB) 115

BUS! Un bus série peut être constitué d'un nombre restreint de lignes de transmission de données Les données d'un mot binaire sont envoyées successivement 01100... Données modulées...101 envoi d'un bit à chaque top horloge Exemple de bus série minimal : une paire de fils 116

BUS! Un bus parallèle est constitué de groupes de lignes permettant l'envoi de mots binaires complets en une seule étape Les données d'un mot binaire sont envoyées simultanément (sur plusieurs lignes) 01100101 Données Strobe Référence = 0V 01100101 Exemple de bus parallèle minimal 117

BUS i Et si on met ''plusieurs bus série'' en parallèle? Le résultat est encore qualifié de bus série : ce qui importe c'est que les bits d'un même mot binaire sont envoyées successivement sur chaque ligne indépendamment des autres C'est le cas de la norme PCI Express qui comporte jusqu'à 16 lignes séries ''en parallèle'' Utilisée pour les cartes d'extension sur la carte mère (carte graphique, carte son...) 118

BUS i Un bus est caractérisé par sa largeur L (nombre de lignes ou de bits) sa fréquence f (nombre de cycles/s ou Hz) Le débit d'information (data transfer rate) souvent appelé bande passante : indique la quantité d'information transmise par unité de temps Unité de base : bits par seconde (b/s ou bps) débit = L x f 119

BUS i Le débit établit le rapport entre volume et temps : débit = Q info / t transfert Unités dérivées en puissances de 1000 : 32 kb/s = 32000 b/s = 4000 o/s = 4 ko/s Pour passer de b à o on divise par 8 120

BUS i La latence est une autre caractéristique : mesure du délai entre l'émission et la réception des données (s ms µs ns...) Les bus séries peuvent avoir de bonnes bandes passantes mais leur latence et souvent moins bonne que les bus parallèles Les bus séries sont adaptés pour des liaisons de grande distance : économie de fils, signal modulé, détection et correction d'erreurs... Les composants proches d'un même système sont plutôt reliés par des bus parallèles 121

BUS i Il est utile de pouvoir brancher ou débrancher certains modules entre eux Un tel point de branchement pour un bus s'appelle un port et utilise des connecteurs Un port a le même nom que le type de bus qu'il accepte : port USB port PCI express... 122

Bus système! Le bus système désigne un bus parallèle au coeur de l'ordinateur qui fait circuler 3 types d'informations sur 3 groupes de fils Les lignes de données permettent d'échanger du contenu mémoire (par exemple entre les registres du processeur et la mémoire principale) Les lignes d'adresse identifient la case mémoire concernée par l'échange Les lignes de contrôle (ou commande) signalent le type d'opération à effectuer et coordonnent les échanges (synchronisation, arbitrage sur un bus partagé) 123

Architecture ordinateur Rôle du bus système : faire circuler l'information sur la carte mère Processeur Mémoire Principale BIOS (démarrage) Contrôleur de disque Contrôleur vidéo Contrôleur clavier Disque dur Ecran Clavier 124

Architecture ordinateur Rôle du bus système : faire circuler l'information sur la carte mère Processeur Mémoire Principale BIOS (démarrage) Données Adresse Contrôle Contrôleur de disque Contrôleur vidéo Contrôleur clavier Disque dur Ecran Clavier 125

Architecture réelle simplifiée La majorité des échanges se fait entre la mémoire et le processeur Adresses 0000 0001 0002 0003 0004... 8FFB 8FFC 8FFD 8FFE 8FFF Contenu 00000000 01001110 00001010 00000010 01011100... 00000110 11110000 00101000 00001110 00001011 Mémoire principale BUS SYSTEME... Entrées Sorties Processeur Registres Opération UAL Instruction unité de commande 126

Bus système Données (32 lignes)... Adresses (32 lignes) mémoire... µ proc. Contrôle (3 lignes) RD/WR ENABLE ACK Exemple de bus système représenté entre processeur et mémoire (système 32 bits) 127

Bus système Exemple : Une instruction indique au processeur de mettre dans un registre la valeur en mémoire de l'adresse 0x2E00001C Le processeur envoie 0x2E00001C sur les lignes d'adresse Il met RD/WR à 1 (ReaD : lecture) et ENABLE à 0 (activer le module mémoire) La mémoire retrouve la donnée (32 bits) et l'envoie sur les lignes de données La mémoire fait passer ACK de 1 à 0 pour signaler au processeur que l'information est disponible sur les lignes de données 128

Architecture des ordinateurs Processeur : principe de l'exécution de l'instruction à l'action 129

Architecture processeur Processeur : vue simplifiée Mémoire Entrées Sorties Registres R0 R2 R4 R1 R3 R5 Processeur commande transferts mémoire et E/S registres Lecture instruction sélection opérandes Opération UAL sélection opération Instruction sélection destination Unité de commande 130

Processeur Registers A B C D b ALU c clock Flags Unité de commande Modèle générique de µ-processeur IR = Instruction Register IP = Instruction Pointer Flags = Condition Flags data address a sequencer ALU = Arithmetic & Logic Unit ctrl IP + IR decoder d a : chargement instruction b : sélection opérandes sélection place résultat c : sélection opération d : contrôle des accès mémoire et E/S 131

Processeur Registers A B C D b ALU c Flags clock Modèle générique de µ-processeur IR = Instruction Register IP = Instruction Pointer Flags = Condition Flags data address a sequencer ALU = Arithmetic & Logic Unit ctrl IP + IR decoder d a : chargement instruction b : sélection opérandes sélection place résultat c : sélection opération d : contrôle des accès mémoire et E/S 132

Processeur! Un programme en train de s'exécuter est une séquence d'instructions en mémoire Le registre d'instruction IR contient le code correspondant à l'instruction courante Le pointeur instruction (ou "compteur ordinal") IP contient l'adresse mémoire de la prochaine instruction à exécuter Le registre Flags de codes conditions est un ensemble de bits résumant l'issue de la dernière opération de calcul ou de comparaison 133

Déroulement d'un programme Les instructions d'un programmes sont stockées en mémoire à des adresses successives Une nouvelle instruction est chargée depuis la mémoire, à l'adresse indiquée par le pointeur instruction (IP), vers le registre d'instruction (IR) Si l'instruction n'est pas un branchement Le pointeur instruction est augmenté de la taille de l'instruction (il pointe donc sur l'instruction suivante) L'instruction est exécutée Si l'instruction est un branchement effectif Le pointeur instruction est mis à l'adresse de départ de la nouvelle séquence d'instructions à entamer 134

Déroulement d'une instruction Le décodeur sépare les différentes informations du code de l'instruction Quel est le type d'instruction? Si c'est un branchement conditionnel, celui-ci estil effectif (selon Flags)? Quels sont les registres concernés? Le séquenceur émet à partir de ces informations l'enchaînement de signaux qui réalise l'action au niveau registres, bus, UAL Dans ce schéma, l'exécution d'une instruction peut nécessiter plusieurs cycles horloge 135

Processeur La largeur du bus de données est souvent la même que la largeur des registres internes. Les système courants sont ainsi qualifiés de 8 bits : aujourd'hui réservés aux microcontrôleurs pour des applications embarquées légères 16 bits : applications embarquées, systèmes anciens 32 bits : applications embarquées évoluées (smarts...) génération précédente de micro-ordinateurs 64 bits : génération actuelle de micro-ordinateurs 128 bits : systèmes dédiés (processeurs graphiques) ou applications hautes performances (calcul scientifique) Le nombre de registres généraux reste limité 8 (IA32) 16 (ARM) 32 (MIPS) 128 (Itanium) 136

Processeur : instructions! 3 catégories principales d'instructions : Transferts de données Entre registre et mémoire ou E/S Entre registres Opérations arithmétiques ou logiques Arithmétique entière usuelle à 2 opérandes Opérateurs booléens NON, ET, OU, décalages Comparaisons Modification du déroulement de la séquence Branchements non conditionnels Branchements conditionnels : choix de séquence en fonction du résultat d'une opération (CCR) Appels de sous programmes et retours appelant 137

Processeur : instructions i Instructions pour calculs flottants Les processeurs évolués disposent d'une unité de calcul en virgule flottante (nombres à virgule avec puissances de 10) : FPU = Floating Point Unit Ces processeurs disposent d'instructions spécifiques pour lancer les opérations sur des opérandes de types nombres flottants Sans unité câblée adaptée pour une opération particulière (flottants, division...) il faut procéder à l'opération en plusieurs étapes par programme (plus long!) 138

Architecture des ordinateurs Jeu d'instructions 139

Processeur : jeu d'instructions! L'association entre le code de l'instruction et les actions effectuées par le processeur est déterminée par le schéma de câblage du décodeur et du séquenceur C'est le niveau du passage du logiciel (instructions sous formes d'informations) au matériel (actions effectives), on dit que les instructions sont exécutées 140

Exemple d'instruction x86 Exemple de codage binaire d'une instruction sur processeur type Intel (x86): Faire registre A + registre B mettre résultat dans registre A 0000001111000011 = 0x03C3 add eax, ebx Instruction machine Notation "humaine" : assembleur 141

Processeur : jeu d'instructions! Chaque type de processeur possède son propre système d'associations entre codes d'instructions et actions effectives Cet ensemble dépend aussi du nombre et de la largeur des registres, des opérations possibles... L'ensemble des instructions qu'un type de processeur peut exécuter s'appelle le jeu d'instructions (instruction set) C'est le ''vocabulaire'' du processeur 142

Processeur : jeu d'instructions Le concepteur du µprocesseur définit Registres, chemins de données (Bus) Actions possibles (calculs, copies, accès bus...) Codage instructions actions La liste des instructions (jeu d'instruction) possibles sur ces dispositifs matériels Cet ensemble de définitions constitue l'isa : Instruction Set Architecture 143

Processeur : jeu d'instructions Exemple : l'architecture IA32 caractérise l'ensemble des processeurs compatibles avec la famille Intel des PCs 32 bits. ( IA32 = Intel Architecture 32 bits) Toute instruction (et donc tout programme) exécutable sur un processeur IA32 est exécutable sur un autre processeur IA32, même si le fabriquant est différent (AMD...) Les détails d'implémentation peuvent cependant varier : on parle alors de micro-architectures différentes 144

Processeur : jeu d'instructions Actuellement les processeurs de PC sont 64 bits : x64 alias x86-64 alias IA32e alias Intel 64 alias AMD64 Ces architectures de processeurs 64 bits sont compatibles au niveau du jeu d'instruction Il s'agit d'une extension du jeu d'instruction IA32. Les anciens programmes 32 bits peuvent encore fonctionner sur ces architectures : on parle de compatibilité ascendante 145

Architecture des ordinateurs Niveaux de programmation Compilation et interprétation 146

Niveaux de programmation Le code exécuté par un processeur peut être qualifié de langage machine A un niveau fondamental il s'agit de mots binaires (souvent 2, 3 ou 4 octets) respectant un ensemble de conventions directement exploitables par les circuits logiques du décodeur et du séquenceur... Programmer en langage machine revient à remplir une file d'octets avec des nombres qui correspondent à des instructions (futures actions du processeur) 147

Niveaux de programmation Une 1ère étape historique en programmation a été d'écrire (en langage machine) des programmes capables de transformer un code lisible, utilisant des symboles et des mnémoniques, en code exécutable Un tel programme est appelé assembleur Le langage utilisé est également appelé langage assembleur ou juste "assembleur" Il s'agit essentiellement d'une transformation directe syntaxique (tables de correspondance) 148

Niveaux de programmation Assemblage Langage assembleur 68000 Langage machine 68000 (exécutable) 149

Niveaux de programmation Une 2ème étape historique en programmation a été d'écrire (en assembleur) des programmes capables de transformer un code structuré doté d'abstraction, en code assembleur. Le code assembleur étant ensuite assemblé en exécutable Il s'agit d'une transformation complexe impliquant un niveau d'analyse grammaticale De tels programmes sont des compilateurs pour des langages dits de haut niveau tels que le C ou le C++ 150

Niveaux de programmation int main(){ int i,max; int tab[5]={3,2,7,1,4}; } max=tab[0]; for (i=1;i<5;i++) if (max<tab[i]) max=tab[i]; return max; Langage C Compilation Assembleur IA32 _main: push ebp mov ebp, esp sub esp, 72 and esp, -16 mov eax, 0 add eax, 15 add eax, 15 shr eax, 4 sal eax, 4 mov [ebp-60], eax mov eax, [ebp-60] call alloca call main mov [ebp-56], 3 mov [ebp-52], 2 mov [ebp-48], 7 mov [ebp-44], 1 mov [ebp-40], 4 mov eax, [ebp-56] mov [ebp-16], eax mov [ebp-12], 1 L2: cmp [ebp-12], 4 jg L3 mov eax, [ebp-12] mov eax, [ebp-56+eax*4] cmp eax, [ebp-16] jle L4 mov eax, [ebp-12] mov eax, [ebp-56+eax*4] mov [ebp-16], eax L4: lea eax, [ebp-12] inc [eax] jmp L2 L3: mov eax, [ebp-16] leave ret 151

Niveaux de programmation Le langage de haut niveau compilé en assembleur est ensuite assemblé en exécutable Exécutable IA32 (Pentium) 152

Niveaux de programmation! Principe d'un langage compilé Code source MonProg.c Langage C ou autre langage compilé Compilation : terme générique pour le passage du source à l'exécutable Compilation (exécution d'un compilateur) Code intermédiaire Langage Assembleur Assemblage (exécution d'un assembleur) Code exécutable MonProg.exe Langage machine 153

Niveaux de programmation! Le programme (qui s'exécute) c'est le.exe Source haut niveau Code source MonProg.c Compilation : Une seule fois Plus besoin du code source Plus besoin du compilateur Code exécutable MonProg.exe Code exécutable MonProg.exe Code exécutable MonProg.exe Distribution de l'exécutable Exécution 1 Exécution 2 Matériel Matériel... 154

Niveaux de programmation! On peut désassembler un.exe pour étudier le comportement à bas niveau d'un programme, instruction par instruction Décompilation pas vraiment possible add eax, ebx Code intermédiaire Langage assembleur Désassemblage possible! 0000001111000011 Code exécutable MonProg.exe Langage machine 155