Université ORAN1, Ahmed Ben
Bella, ISTA
Module :
Structure Machine
Dr. Amine Dahane
[email protected] 2
Chapitre 1 : introduction à l’architecture
des ordinateurs
• Introduction
• Architecture de base d’une machine
• La Mémoire Centrale
• UAL ( unité arithmétique et logique )
• UC ( unité de contrôle ou de commande )
• Jeu d’instructions , Format et codage d’une instruction
• Modes d’adressage
• Étapes d’exécution d’un instruction
• TD 1 Avec solution
3 Objectifs
Comprendre l’architecture d’une machine von newman.
Comprendre les étapes de déroulement de l’exécution
d’une instruction.
Comprendre le principe des différents modes
d’adressage.
Chapitre 1: introduction
à l’architecture des
ordinateurs
Le mot ordinateur a été créé en
1955 pour désigner une machine
capable d’exécuter n’importe quel
algorithme fournit sous forme de
programme sur n’importe quelle
donnée discrète fournit,
1. Introduction
Un programme est un ensemble d’instructions exécutées dans un
ordre bien déterminé.
Un programme est exécuté par un processeur ( machine ).
Un programme est généralement écrit dans un langage évolué
(Pascal, C, VB, Java, etc.).
Les instructions qui constituent un programme peuvent être
classifiées en 4 catégories :
Les Instructions d’affectations : permet de faire le transfert des
données
Les instructions arithmétiques et logiques.
Les Instructions de branchement ( conditionnelle et
inconditionnelle )
Les Instructions d’entrées sorties.
6 1. Introduction
Pour exécuter un programme par une machine, on passe par les étapes
suivantes :
1. Édition : on utilise généralement un éditeur de texte pour écrire un
programme et le sauvegarder dans un fichier.
2. Compilation : un compilateur est un programme qui convertit le code source
( programme écrit dans un langage donné ) en un programme écrit dans un
langage machine ( binaire ). Une instruction en langage évolué peut être
traduite en plusieurs instructions machine.
3. Chargement : charger le programme en langage machine dans mémoire afin
de l’exécuter .
7 1. Introduction
• Comment s’exécute un programme dans la machine ?
• Pour comprendre le mécanisme d’exécution d’un
programme il faut comprendre le mécanisme de
l’exécution d’une instruction .
• Pour comprendre le mécanisme de l’exécution d’une
instruction il faut connaître l’architecture de la machine
( processeur ) sur la quelle va s’exécuter cette
instruction.
1- Composants d’un ordinateur
1. Une unité centrale (UC) ou microprocesseur
2. Des mémoires, parmi lesquelles on distingue :
• La mémoire ROM: mémoire a accès en lecture
seule, ensemble de bits dont l’état est fixé une
fois pour toute lors de la construction de
l’ordinateur, elle sert à stocker des informations
permanentes (procédures de démarrage)
• La mémoire RAM : mémoire a accès aléatoire :
ensemble de bits modifiables ou sont stockées les
données sur lesquelles travail l’ordinateur.
3. Des périphériques E/S: Ecran, Imprimante,
Baffles, Webcam, Souris, Clavier, Manette de jeu,
Mémoire externe, scanner, ….
2- Architecture de Von Neumann
L’organisation matérielle des ordinateurs
usuels suit une architecture dite de Von
Neumann, son originalité est de stocker les
données et les instructions dans la même
mémoire, Dans celle-ci :
• RAM : sert à stocker les données et les
programmes
• Unité de commande donne les ordres et
synchronise l’exécution des opérations dans
l’unité de traitement du processeur central.
a- RAM
Elle est composée
d’une suit de mots
mémoire qui sont des
suites de bits de taille
fixe, chaque mot
mémoire est identifié
par son adresse qui est
un code binaire.
Exemple: RAM de 16
mots de deux octets
chacun avec des
adresses de 0 à 15
La mémoire centrale
11
La mémoire centrale (MC) représente l’espace de travail de l’ordinateur .
C’est l’organe principal de rangement des informations utilisées par le processeur.
Dans un ordinateur pour exécuter un programme il faut le charger ( copier ) dans la mémoire
centrale .
Le temps d’accès à la mémoire centrale et sa capacité sont deux éléments qui influent sur le
temps d’exécution d’un programme ( performances d’une machine ).
12
•La mémoire centrale peut être vu comme Une adresse
un large vecteur ( tableau ) de mots ou
octets. 0001100 0000
•Un mot mémoire stocke une information
sur n bits. 0011100 0001
•Chaque mot possède sa propre adresse. 0111100 0002
•La mémoire peut contenir des programmes 0001100 …….
et les données utilisées par les 0001100 …….
programmes.
……..
Contenu d’une case (un
mot)mémoire
FFFF
Structure d’un programme en MC
1000000
}
1111111 Partie données
0000000
11110000 ( variables )
Addition 11000001
Soustraction 11100001
11000001
11100001
11100001 Partie instructions
………….
……….
2.2 L’Unité Centrale ( UC)
14
L’unité centrale (appelée aussi processeur , microprocesseur) à pour rôle
d’exécuter les programmes.
L’UC est composée d’une unité arithmétique et logique (UAL) et d’une unité de
contrôle.
- L’unité arithmétique et logique réalise les opérations élémentaires (addition,
soustraction, multiplication, . . .) .
- L’unité de commande contrôle les opérations sur la mémoire (lecture/écriture)
et les opérations à réaliser par l’UAL selon l’instruction en cours d’exécution.
Architecture matérielle d’une
machine Von Neumann
UC
L’UAL
16
L’unité arithmétique et logique réalise une opération élémentaire
(addition, ,soustraction, multiplication, . . .).
L’UAL regroupe les circuits qui assurent les fonctions logiques et
arithmétiques de bases ( ET,OU,ADD,SUS,…..).
L’UAL comporte un registre accumulateur ( ACC ) : c’est un registre de
travail qui sert a stocker un opérande (données )au début d’une
opération et le résultat à la fin.
L’UAL
17
L’UAL comporte aussi un registre d’état : Ce registre nous indique l’état
du déroulement de l’opération .
Ce registre est composé d’un ensemble de bits. Ces bits s’appels
indicateurs (drapeaux ou flags).
Ces indicateurs sont mis à jours ( modifiés )après la fin de l’exécution
d’une opération dans l’UAL.
Les principeaux indicateurs sont :
Retenue : ce bit est mis à 1 si l’opération génère une retenue.
Signe :ce bit est mis à 1 si l’opération génère un résultat négative.
Débordement :ce bit est mis à 1 s’il y a un débordement.
Zero : ce bit est mis à 1 si le résultat de l’opération est nul.
18 Schéma d’une UAL
19 Unité de contrôle
Le rôle de l'unité de contrôle (ou unité de commande ) est de :
coordonner le travail de toutes les autres unités ( UAL , mémoire,
…. )
et d'assurer la synchronisation de l'ensemble.
Elle assure :
la recherche ( lecture ) de l’instruction et des données à partir de la
mémoire,
le décodage de l’instruction et l’exécution de l’instruction en cours
et prépare l’instruction suivante.
20
L’unité de contrôle comporte :
Un registre instruction (RI) : contient l’instruction en
cours d’exécution. Chaque instruction est décoder
selon sont code opération grâce à un décodeur.
Un registre qui s’appel compteur ordinal (CO) ou le
compteur de programme (CP ) : contient l’adresse de
la prochaine instruction à exécuter (pointe vers la
prochaine instruction à exécuter ). Initialement il
contient l’adresse de le première instruction du
programme à exécuter.
Un séquenceur : il organise ( synchronise ) l’exécution
des instruction selon le rythme de l’horloge, il génère
les signaux nécessaires pour exécuter une instruction.
21 Schéma d’une UC
22 Schéma détaillé d’une machine
UC
23 Remarque
Le microprocesseur peut contenir d’autres registres autre
que CO,RI et ACC.
Ces registres sont considérés comme une mémoire
interne ( registre de travail ) du microprocesseur.
Ces registres sont plus rapide que la mémoire centrale ,
mais le nombre de ces registre est limité.
Généralement ces registres sont utilisés pour
sauvegarder les données avant d’exécuter une opération.
Généralement la taille d’un registre de travail est égale à
la taille d’un mot mémoire
24 Une machine avec des registres de travail
registres
25 Jeu d’instructions
Chaque microprocesseur possède un certain nombre limité d’instructions
qu’il peut exécuter. Ces instructions s’appelles jeu d’instructions.
Le jeu d’instructions décrit l’ensemble des opérations élémentaires que
le microprocesseur peut exécuter.
Les instructions peuvent être classifiées en 4 catégories :
Instruction d’affectation : elle permet de faire le transfert des
données entre les registres et la mémoire
Écriture : registre mémoire
Lecture : mémoire registre
Les instructions arithmétiques et logiques ( ET , OU , ADD,….)
Instructions de branchement ( conditionnelle et inconditionnelle )
Instructions d’entrées sorties.
Codage d’une instruction
26
Les instructions et leurs opérandes ( données ) sont stocké dans la mémoire.
La taille d’une instruction ( nombre de bits nécessaires pour la représenter en
mémoire ) dépend du type de l’instruction et du type de l’opérande.
L’instruction est découpée en deux parties :
Code opération ( code instruction ) : un code sur N bits qui indique quelle
instruction.
La champs opérande : qui contient la donnée ou la référence ( adresse ) à la
donnée.
Code opération Opérande
N bits K bits
•Le format d’une instruction peut ne pas être le même pour toutes les instructions.
•Le champs opérande peut être découpé à sont tours en plusieurs champs
Machine à 3 adresses
27
Dans ce type de machine pour chaque instruction il faut préciser :
l’adresse du premier opérande
du deuxième opérande
et l’emplacement du résultat
Code opération Opérande1 Opérande2 Résultat
Exemple :
ADD A,B,C ( CB+C )
•Dans ce type de machine la taille de l’instruction est grand .
• Pratiquement il n’existent pas de machine de ce type.
Machine à 2 adresses
28
Dans de type de machine pour chaque instruction il faut préciser :
l’adresse du premier opérande
du deuxième opérande ,
l’adresse de résultat est implicitement l’adresse du deuxième
opérande .
Code opération Opérande1 Opérande2
Exemple :
ADD A,B ( BA +B )
29 Machine à 1 adresses
Dans de type de machine pour chaque instruction il faut préciser
uniquement l’adresse du deuxième opérande.
Le premier opérande existe dans le registre accumulateur.
Le résultat est mis dans le registre accumulateur.
Code opération Opérande2
Exemple :
ADD A ( ACC(ACC) + A )
Ce type de machine est le plus utilisé.
Mode d’adressage
30
La champs opérande contient la donnée ou la référence ( adresse ) à la donnée.
Le mode d’adressage définit la manière dont le microprocesseur va accéder à
l’opérande.
Le code opération de l’instruction comportent un ensemble de bits pour indiquer
le mode d’adressage.
Les modes d’adressage les plus utilités sont :
Immédiat
Direct
Indirect
Indexé
relatif
31 Adressage immédiat
L’opérande
Code opération existent dans le champs adresse de l’instruction
Opérande
Exemple :
ADD 150 ADD 150
Cette commande va avoir l’effet suivant : ACC(ACC)+ 150
Si le registre accumulateur contient la valeur 200 alors
après l’exécution son contenu sera égale à 350
32 Adressage direct
Le champs opérande de l’instruction contient l’adresse de l’opérande
( emplacement en mémoire )
Pour réaliser l’opération il faut le récupérer ( lire ) l’opérande à partir de
la mémoire. ACC (ACC)+ (ADR)
Exemple :
On suppose que l’accumulateur
continent la valeur 20 .
ADD 150
A la fin de l’exécution nous allons
avoir la valeur 50 ( 20 + 30 ) 30
150
Adressage indirect
La champs adresse contient l’adresse de
33
l’adresse de l’opérande.
Pour réaliser l’opération il faut :
Récupérer l’adresse de l’opérande à partir de la
mémoire.
Par la suite il faut chercher l’opérande à partir de la ADD 150
mémoire.
ACC (ACC)+ ((ADR))
Exemple : 150
200
Initialement l’accumulateur contient la valeur 20
Il faut récupérer l’adresse de l’adresse (150). 40
200
Récupérer l’adresse de l’opérande à partir de
l’adresse 150 ( la valeur 200 )
Récupérer la valeur de l’opérande à partir de
l’adresse 200 ( la valeur 40 )
Additionner la valeur 40 avec le contenu de
l’accumulateur (20) et nous allons avoir la valeur
60
34 Adressage indexé
L’adresse effectif de l’opérande est relatif à une zone mémoire.
L’dresse de cette zone se trouve dans un registre spécial ( registre
indexe ).
Adresse opérande = ADR + (X)
Registre d’indexe
50
ADD 150
30
200
Remarque : si ADR ne contient pas une valeur
immédiate alors
Adresse opérande = (ADR )+ (X)
35 Adressage relatif
L’adresse effectif de l’opérande est relatif a une zone mémoire.
L’dresse de cette zone se trouve dans un registre spécial ( registre de base ).
Ce mode d’adressage est utilisée pour les instructions de branchement.
Adresse = ADR + (base)
Registre de base
100
BR 150
ADD
250
36 5. Cycle d’exécution d’une instruction
Le traitement d’une instruction est décomposé en trois phases :
Phase 1 : rechercher l’instruction à traiter et décodage
Phase 2 : rechercher de l’opérande et exécution de l’instruction
Phase 3 : passer à l’instruction suivante
Chaque phase comporte un certain nombre d’opérations élémentaires
( microcommandes ) exécutées dans un ordre bien précis ( elle sont
générées par le séquenceur ).
La phase 1 et 3 ne change pas pour l’ensemble des instructions , par
contre la phase 2 change selon l’instruction et le mode d’adressage
Exemple1 : déroulement de l’instruction d’addition en mode immédiat
ACC(ACC)+ Valeur
37
Phase 1 : ( rechercher l’instruction à traiter )
Mettre le contenu du CO dans le registre RAM RAM (CO)
Commande de lecture à partir de la mémoire
Transfert du contenu du RIM dans le registre RI RI (RIM)
Analyse et décodage
Phase 2 : (traitement )
Transfert de l ’opérande dans l’UAL UAL (RI).ADR
Commande de l’exécution de l’opération ( addition )
Phase 3 : ( passer à l’instruction suivante )
CO (CO )+ 1
Exemple 2 : déroulement de l’instruction d’addition en mode direct ACC(ACC)+
(ADR)
38
Phase 1 : ( rechercher l’instruction à traiter )
Mettre le contenu du CO dans le registre RAM RAM (CO)
Commande de lecture à partir de la mémoire
Transfert du contenu du RIM dans le registre RI RI (RIM)
Analyse et décodage
Phase 2 : ( décodage et traitement )
Transfert de l’adresse de l ’opérande dans le RAM RAM (RI).ADR
Commande de lecture
Transfert du contenu du RIM vers l’UAL UAL (RIM)
Commande de l’exécution de l’opération ( addition )
Phase 3 : ( passer à l’instruction suivante )
• CO (CO )+ 1
Exemple 3 : Déroulement de l’instruction d’addition en mode indirect
ACC(ACC)+ ((ADR))
39
Phase 1 : ( rechercher l’instruction à traiter )
Mettre le contenu du CO dans le registre RAM RAM (CO)
Commande de lecture à partir de la mémoire
Transfert du contenu du RIM dans le registre RI RI (RIM)
Analyse et décodage
Phase 2 : ( décodage et traitement )
Transfert de l’adresse de l ’opérande dans le RAM (RI).ADR
Commande de lecture /* récupérer l’adresse */
Transfert du contenu du RIM vers le RAM RAM(RIM)
Commande de lecture /* récupérer l’opérande */
Transfert du contenu du RIM vers l’UAL UAL (RIM )
Commande de l’exécution de l’opération ( addition )
Phase 3 : ( passer à l’instruction suivante )
CO (CO )+ 1
b- Unité de commande
Elle est composée de deux registres :
• Le compteur ordinal (CO) : stocke l’adresse de
l’instruction à exécuter, sa taille est identique à
celle d’une adresse mémoire.
• Le registre d’instruction (RI) : stocke l’instruction
en cours d’exécution sa taille est égale à celle d’un
mot mémoire.
Le RI code l’instruction en cours comme suit :
Exemple :
En supposant que les opérations de base
sont codées 0000 pour l’addition, 0001
pour la multiplication, 0010 pour la
soustraction et 0011 pour la division,
« 0011 1001 0011 0001 » est
l’instruction effectuant la division entre
le mot mémoire d’adresse 9 avec celui
d’adresse 3 et stockant le résultat dans
le mot d’adresse 1.
c- L’unité de traitement
Elle exécute des opérations de
base et est composée de :
• Trois registres : deux servant à
stocker les données donnée1 et
donnée2 ainsi que le résultat de
l’opération arithmétique,
• L’unité arithmétique et logique
(UAL) capable, quand on lui
fournit le code d’une opération
arithmétique de prendre les
contenus des deux premiers
3- L’unité centrale en œuvre
Exécuter un programme revient à exécuter ces instructions
une par une en commençant par mise de sa première
instruction dans le CO, l’exécution d’une instruction
élémentaire se fait suivant un cycle de trois phases :
Phase1 : l’instruction courante dont l’adresse est stockée dans
le CO est recopiée dans le RI en transitant par le bus
« instruction ».
Phase2 : cette instruction courante est décodée à destination
de l’UAL, ainsi que le bus « Ordres » transfère le code de
l’opération et le bus « données/résultats » transfère dans les
registres donnée1 et donnée2 le contenu des mots mémoires
associés.
Phase3 : l’UAL exécute l’opération en mettant à jour son
registre « résultats » et transfère le résultat dans la mémoire
centrale en utilisant le bus « données/résultats ».
Exemple de programme Adres
Mot mémoire
se
;Int a=5 0000
عداد
Int b=14 ترتيبي
0000 1011 1100
0000
1110
0001 0001 11101100 1110
1101
;Int c=2 سجل 1011
0111
التعليمات
;Int d,e 0010
0001
1110
1101 0111
0010
;da+b وحدة التحكم 0011
;ed*c 0100
0101
الوحدة 0000 0000
0000 00000010 0110
0001
0110
الحسابية 0011
0111 e
المنطقية
وحدة المعالجات 1000
1001 0000 0000 0000
1010 0101
0000 0000 0000
0000 0000 0010
1110
1011 0000 0000 0000 0101 a
0000
0000 0000 0001 0011
سجل سجل 0000
1100 0000 1110 b
المعطيات النتائج 0000
0000
TD 1
Avec Solution
Exercice 1
La RAM d’une machine contient 64 mots
mémoire, et elle peut exécuter 13
opérations (arithmétiques et logiques),
1. Donnez la taille du CO
2. Donnez la taille minimale du RI
Si la taille de cette RAM = 192 octet,
3. Donnez la taille réelle du RI
Solution
1.Donnez la taille du CO
Nombre de mot mémoire 64 mots = 26 if faut 6 bits
pour codifier les adresses et puisque le CO contient des
adresses mémoires donc la taille du CO=6 bits
2.Donnez la taille minimale du RI
Taille du RI=taille code opération+(taille adresse mémoire
x3)
Puisque la machine peut exécuter 13 opérations donc il
faut 4 bits pour les codifier
Et la taille d’une adresse mémoire =6bits donc la taille du
Si
RI la taille de cette
=4+6x3=22 bits RAM = 192 octet,
3. Donnez la taille réelle du RI
La taille du RI = la taille d’un mot mémoire=192octet/64=3
octets= 24 bits
Exercice 2
Une machine peut exécuter 11 opérations
codées de 0000 a 1010 , le CO contient
00011,
1. Donnez la taille du RI
2. Donnez le nombre de mots mémoires au
maximum de la RAM
Supposons que le registre RI peut prendre
les cas suivants :
1011110110001010001
1000111110000010101
0110110110000100011
Solution
1. Donnez la taille minimale du RI
Taille du RI=taille code opération+(taille adresse
mémoire x3)
Taille du code opération =4 bits
CO contient 00011 taille @ mémoire=5bits; donc la
Donnez le nombre
taille de mots mémoire
du RI =4+5x3=19 bits au maximum: Nbr=25=32
pposons que le registre RI peut prendre les cas suivants :
Impossible (code opération
11 11011 00010 10001 invalide)
00 11111 00000 10101 Possible
Impossible (l’@ du résultat est une @instruction voir
10 11011 00001 00011 CO)
Précisez les cas possibles et les cas impossibles
Exercice 3
Donnez un contenu final de la RAM après l’exécution du
programme suivant, Sachant que 0000 représente
l’addition et 0001 représente la multiplication et la RAM
contient 16 mots de deux octets:
Adres
Mot mémoire
se
عداد 0000
0000 0000 1000
0000 0000 0000 0110 a
ترتيبي 0000
0000 0000 0000 1100
سجل 0001 b
التعليمات 0010 c
0100 0001
وحدة التحكم 0011 0001 0010
0000
0000 0001 0000 0001
0000
0100 0000 0001
0001
الوحدة 0101
الحسابية 0110
المنطقية
0111
وحدة المعالجات
1000
1001
0000 0000 0000 0010 0000 0000 0000 0110 1010
1011
سجل سجل 1100
المعطيات النتائج
1101