Vous êtes sur la page 1sur 9

Architecture des

ordinateurs
T. ABED
Support de cours : Architecture et fonctionnement des
ordinateurs. - Année 2010/2011 -

Centre Universitaire de BBA


Institut des Sciences et de la Technologie
Département d’Electronique
Architecture des ordinateurs
1- Introduction
L’architecture d’un ordinateur est la description de ses unités fonctionnelles et de leurs interconnexions.
Un ordinateur est une machine de traitement de l’information. Il est capable d’acquérir de l’information, de la stocker,
de la transformer en effectuant des traitements quelconques, puis de la restituer sous une autre forme.
2- Historique
La naissance des ordinateurs est l'aboutissement de millénaires de progrès, de découvertes, parmi lesquelles nous
pouvons citer :
- Boulier chinois
- La Pascaline de Blaise Pascal 1642 (addition et soustractions).
- La machine à calculer de leibnitz en 1694 …
- Konrad Zuse réalise en 1936 une machine à base de relais électromécaniques
- Howard Aiken termine en 1944 le mark I à base de relais électromécaniques
- Le premier ordinateur électronique est apparu en 1946, ENIAC construit à base de tubes à vide.
- Intel fabrique en 1978 le microprocesseur 8086
- IBM lance en 1981 le premier PC
Quatre générations d’ordinateurs peuvent être distinguées :
- 1ère génération 1945 - 1955 : tubes à vides
- 2ème génération 1955 - 1965 : transistors
- 3ème génération 1965 - 1980 : circuits intégrés
- 4ème génération 1980 - à nos jours : utilisations de circuits LSI et VLSI (Very Large Scale Integration)
3- Architectures de base
3.1 Architecture de Von Neumann :
Cette architecture est caractérisée par un processeur et une mémoire reliés par un bus :

Les instructions et les données sont stockées dans la mémoire. Pour accéder à une information contenue en mémoire le
processeur affiche sur le bus l'adresse de celle-ci. Après un certain temps le contenu demandé est affiché par la
mémoire sur le bus. C’est à cette architecture que nous nous intéresserons.
3.2 Architecture de Harvard :
Dans cette architecture on sépare physiquement la mémoire des instructions et la mémoire de données. Chacune de
ces mémoires est accessible par un bus différent. Il est alors possible d'accéder simultanément aux instructions et aux
données, ce qui permet d'augmenter le flux des informations.

4- Blocs fonctionnels
L’ordinateur est une machine qui effectue une suite d’instructions dite programme. Il est constitué essentiellement de
trois parties principales :
- l’unité centrale (CPU : Central Processing Unit) ou processeur
- la mémoire centrale (MC)
- l’unité d’entrées/sorties (unité d’échange)
Tous ces blocs sont connectés par un bus, Un bus est un ensemble de fils qui assure la transmission du même type
d’information. On retrouve trois types de bus : bus d’adresses, bus de données et bus de contrôle.
5- Principe de fonctionnement
5.1 La mémoire centrale :
La mémoire d’un ordinateur permet de stocker les données, ainsi que les programmes à exécuter. La capacité (ou taille)
mémoire d’un ordinateur est le nombre de cases mémoires qu’il contient. Ce nombre a une limite supérieure pour
chaque ordinateur, c’est le nombre de bits qui forment l’adresse qui fixe cette limite. Avec une adresse de n bits il est
possible de référencer au plus 2n cases mémoire.
Les opérations de lecture et d’écriture mémoire portent en général sur plusieurs octets contigus en mémoire : un mot
mémoire. La taille d’un mot mémoire dépend du type de processeur ; elle est de :
- 1 octet (8 bits) dans les processeurs 8 bits (par exemple Motorola 6502) ;
- 2 octets dans les processeurs 16 bits (par exemple Intel 8086) ;
- 4 octets dans les processeurs 32 bits (par ex. Intel 80486 ou Motorola 68030).
5.2 L’unité centrale de traitement (UCT) CPU ou processeur :
a. Description :
C’est l’élément de l’ordinateur qui interprète et exécute les instructions du programme. Pour chaque instruction, le
processeur effectue schématiquement les opérations suivantes :
1. lire en mémoire l’instruction à exécuter ;
2. effectuer le traitement correspondant ;
3. passer à l’instruction suivante.
Le processeur est divisé en deux parties, l’unité de commande et l’unité de traitement, en plus de un ou plusieurs
registres généraux :

L’unité de traitement :
C’est le coeur du processeur. Elle regroupe les circuits qui assurent les traitements nécessaires à l'exécution des
instructions. Le traitement d’une instruction quelconque nécessite de connaître trois adresses :
- celle du 1er opérande
- celle du 2ème opérande
- et l’adresse à laquelle on doit ranger le résultat.
Cependant, on peut réduire le nombre de ces adresses en utilisant des adresses implicites, c’est ainsi que la majorité
des ordinateurs actuels fonctionnent : machine à une adresse. Dans ce cas, un registre spécial, appelé accumulateur
contient le 1er opérande et reçoit le résultat.
L’unité de traitement est formée des éléments suivants :

 Unité Arithmétique et Logique (ALU) : circuit complexe qui assure les fonctions logiques (ET, OU, Comparaison,
Décalage, etc.…) ou arithmétique (Addition, soustraction).
 Le registre d'état : généralement composé de bits à considérer individuellement. Chacun de ces bits est un indicateur
dont l'état dépend du résultat de la dernière opération effectuée par l’ALU. On les appelle indicateurs d’état ou flag ou
drapeaux.
- Retenue (carry : C)
- retenue intermédiaire (Auxiliary-Carry : AC)
- Signe (Sign : S)
- Débordement (overflow : OV ou V)
- Zéro (Z)
- Parité (Parity : P)
 Les accumulateurs : ce sont des registres de travail qui servent à stocker un opérande au début d'une opération
arithmétique et le résultat à la fin de l'opération.
L’unité de commande :
Ensemble de dispositifs qui assure le fonctionnement séquentiel des instructions. Elle comporte essentiellement :
- le registre d’instruction (RI) : reçoit l’instruction à exécuter
- le compteur ordinal (CO), ou compteur programme (CP) (Instruction Pointer IP) : Registre contenant l’adresse en
mémoire où est stockée l’instruction à chercher. Ce registre est incrémenté automatiquement chaque fois
qu’une instruction est placée dans le RI, et ce afin de pointer l’adresse de l’instruction suivante.
- le décodeur de code opération : détermine quelle opération doit être effectuée parmi toutes les opérations
possibles.
- le séquenceur : génère les signaux de commande
- l’horloge : synchronise toutes les actions de l’unité centrale

CO RI

Décodeur

Séquenceur

Horloge
Unité de commande

Les registres généraux : (ou registres banalisés) jouent le même rôle que les cases mémoires, mais leur temps d’accès
est très faible. Ils sont utilisés pour sauvegarder des résultats intermédiaires pour éviter des accès à la mémoire,
accélérant ainsi l’exécution des programmes.
b. Fonctionnement de l’unité centrale :

Unité de traitement

Acc
C1
C1

ALU Séquenceur

Décodeur

C1 B1

RM A3 C Op. Adr RI Acc : Accumulateur


ALU : Unité arithmétique et logique
RM : Registre mot
B3
RA : Registre d’adresse
A2
COp : Code opération
B2
R Adr : Adresse
C Op. Adr Opérande
A CO : Conteur ordinal (CP)
A1 CO C3
RI : Registre instruction

Mémoire centrale Unité de commande


Le traitement d’une instruction peut être décomposé en trois phases :
 Phase 1 : Recherche de l'instruction à traiter [Instruction Fetch]
A1 : (CO)  RA (pointer l’adresse de l’instruction)
A2 : Instruction  RM (Lecture de l’instruction dans la mémoire)
A3 : (RM)  RI (Transfert de l’instruction dans le RI)
Cette première phase est identique quelque soit l’instruction.
 Phase 2 : Décodage de l’instruction et recherche de l’opérande *decode]
B1 : C Op.  Décodeur (Décodage de l’opération pour la génération de séquences)
B2 : Adr  RA (Transfert de l’adresse de l’opérande dans le RA)
B3 : Opérande  RM (Lecture de l’opérande dans la mémoire)
 Phase 3 : Exécution de l'instruction [execute]
C1 : (Acc) OP (RM)  Acc (Exécution de l’opération)
C2 : Positionnement des flags
C3 : (CO) Calculer l’adresse de l’instruction suivante.
Les circuits qui synchronisent et contrôlent toutes les opérations de l’ordinateur sont situés dans l’unité de commande.
Les signaux périodiques générés par l’horloge définissent le cycle de base ou cycle machine. Le temps d’exécution d’une
instruction dépend du type d’opération à effectuer, un cycle instruction peut s’étendre sur plusieurs cycles machines.

Cycle d’horloge

Recherche de l’instruction Décodage de l’instruction Exécution

Instruction
Cycle d’instruction suivante

Le séquenceur peut se représenter lui-même sous forme d'un automate particulier (ou une machine à états). Sa forme
diffère d'un processeur à l'autre, mais il comporte toujours trois parties bien distinctes :
- Chargement du code opération ;
- Traitement du mode d'adressage ;
- Traitement de l'instruction associée au code opération et au mode d'adressage.
Le séquenceur du processeur peut être réalisé de deux manières : séquenceur câblé ou micro programmé. Sous sa
forme câblée, le séquenceur est un circuit séquentiel très complexe, qui génère pour chaque instruction les signaux de
commande nécessaires à son exécution. Alors que dans le second cas on fait correspondre à chaque code opération
d’une instruction une adresse d’un microprogramme qui génère ces signaux de commande. [Figure Micro- commandes]
5.3 L’unité d’entrées sorties (unité d’échange) :
Elle gère en entrée comme en sortie le transfert des informations entre l’ordinateur et les périphériques (clavier,
imprimante, scanner etc.…). Durant une opération d’entrée/sortie, l’information est échangée entre la mémoire
principale et le périphérique relié au système. Cet échange nécessite une interface (ou contrôleur) pour gérer la
connexion. Le rôle de cette interface est de connecter le périphérique au bus de données et de gérer les échanges entre
le processeur et le périphérique.
Pour cela, l’interface est constituée par :
- Un registre de commande dans lequel le processeur décrit le travail à effectuer (sens de transfert, mode de
transfert).
- Un ou plusieurs registres de données qui contiennent les mots à échanger entre le périphérique et la mémoire
- Un registre d’état qui indique si l’unité d’échange est prête, si l’échange s’est bien déroulé, etc.…
On accède aux données de l’interface par le biais d’un espace d’adresses d’entrées/sorties.
Il existe deux modes d’échange d’information, l’échange programmé et l’échange direct avec la mémoire :
 Le mode programmé par scrutation ou interruption est celui où le processeur sert d’intermédiaire entre la mémoire
et le périphérique.
- Dans le cas de la scrutation, le processeur interroge l’interface pour savoir si des transferts sont prêts. Tant que
des transferts ne sont pas prêts, le processeur attend. L’inconvénient majeur est que le processeur se retrouve
souvent en phase d’attente. Ce type d’échange est très lent.
- Dans un échange de données par interruption, le processeur exécute donc son programme principal jusqu’à ce
qu’il reçoive un signal sur sa ligne de requête d’interruption. Il se charge alors d’effectuer le transfert de
données entre l’interface et la mémoire.
 Le mode d’échange direct avec la mémoire permet le transfert de blocs de données entre la mémoire et un
périphérique sans passer par le processeur. Pour cela, un circuit appelé contrôleur de DMA (Direct Memory Access)
prend en charge les différentes opérations. Le DMA se charge entièrement du transfert d’un bloc de données. Le
processeur doit tout de même :
- initialiser l’échange en donnant au DMA l’identification du périphérique concerné
- donner le sens du transfert
- fournir l’adresse du premier et du dernier mot concernés par le transfert
Il existe deux types de liaisons différentes pour se connecter à des périphériques : la liaison parallèle ou la liaison série.
On caractérise un type de liaison par sa vitesse de transmission ou débit (en bit/s).
5.4 Les bus :
Un bus est un ensemble de connexions (fils) qui assure la transmission du même type d’information. On retrouve trois
types de bus véhiculant des informations en parallèle dans un système de traitement programmé de l’information :
- un bus de données : bidirectionnel qui assure le transfert des informations entre le processeur et son
environnement, et inversement. Son nombre de lignes est égal à la capacité de traitement du processeur.
- un bus d’adresses : unidirectionnel qui permet la sélection des informations à traiter dans un espace mémoire
(ou espace adressable) qui peut avoir 2n emplacements, avec n = nombre de conducteurs du bus d'adresses.
- un bus de commande : constitué par quelques conducteurs qui assurent la synchronisation des flux
d'informations sur les bus des données et des adresses.

La multiplication des périphériques autour du processeur oblige la présence d’un décodeur d’adresse chargé d’aiguiller
les données présentes sur le bus de données.
En effet, le processeur peut communiquer avec les différentes mémoires et les différents boîtiers d’interface. Ceux-ci
sont tous reliés sur le même bus de données et afin d’éviter des conflits, un seul composant doit être sélectionné à la
fois.
Lorsqu’on réalise un système micro programmé, on attribue donc à chaque périphérique une zone d’adresse, et une
fonction de décodage d’adresse est nécessaire afin de fournir les signaux de sélection de chacun des composants.
Remarque : lorsqu’un composant n’est pas sélectionné, ses sorties sont mises à l’état "haute impédance" afin de ne pas
perturber les données circulant sur le bus.
Exemple : mémoire espace : FFFF-FC00, FBFF un périphérique d’entrée, FBFE un périphérique de sortie.
6- Jeu d’instructions
6.1 Définition
Le jeu d’instructions décrit l’ensemble des opérations élémentaires que le processeur peut exécuter.
Une instruction au niveau machine doit fournir à l'unité centrale toutes les informations nécessaires pour déclencher
une telle opération élémentaire : type d'action, où trouver le ou les opérandes, où ranger le résultat, etc. C'est pourquoi
une instruction comporte en général plusieurs champs ou groupes de bits. Le premier champ contient le code
opération. Les autres champs peuvent comporter des données ou l'identification des opérandes.

6.2 Codage
La largeur en bits de chacun des différents champs est importante, en particulier pour le code opération. Le nombre de
bits est déterminé par le nombre d'opérations distinctes envisagées : n bits autorisent 2n instructions. Cependant toutes
les opérations ne nécessitent pas forcément le même nombre de champs ou des champs de même longueur.
De manière générale, une instruction est composée de deux champs :
- le code opération, qui indique au processeur quelle instruction réaliser ;
- le champ opérande qui contient la donnée, ou la référence à une donnée en mémoire (son adresse).

Un octet permet donc de distinguer au maximum 256 instructions différentes.


6.3 Type d’instructions
Les instructions peuvent être classées en quatre groupes :
- transferts de données : de mémoire à registre, de registre à registre, de registre à mémoire
- opérations arithmétiques : addition, soustraction, multiplication et division
- opérations logiques : ET, OU inclusif, NON, OU exclusif, etc.
- contrôle de séquence : branchements, test, appel de procédure, etc.
6.4 Modes d’adressage
Un mode d'adressage définit la manière dont le processeur va accéder à l’opérande. Les différents modes d'adressage
dépendent des processeurs mais on retrouve en général :
a. Adressage implicite
L’instruction contient seulement le code opération. (Ex. incrémenter un registre)
b. Adressage immédiat
La valeur de l'opérande est contenue dans le champ adresse si le nombre
de bits dans ce champ est suffisant, sinon dans le mot suivant l'instruction.
c. Adressage direct
Le champ adresse de l'instruction contient l'adresse effective de l'opérande.
d. Adressage indirect
Le champ adresse (ou le mot suivant) contient l'adresse d'un pointeur :
mot en mémoire qui contient l'adresse effective de l'opérande.
e. Adressage relatif
L'adresse effective est obtenue est additionnant le contenu du champ
adresse de l'instruction au contenu du compteur ordinal.
Ce type d'adressage est utilisé par exemple dans des instructions de branchement.
e. Adressage indexé
L'adresse effective est obtenue est additionnant le contenu du champ
adresse de l'instruction au contenu d’un registre d’indexe.
6.5 Exemple de jeu d’instructions
Le tableau suivant donne la liste de quelques instructions importantes des microprocesseurs Intel 80x86. Le code de
l’instruction est donné en hexadécimal dans la deuxième colonne. La colonne suivante précise le nombre d’octets
nécessaires pour coder l’instruction complète (opérande inclus). On note valeur une valeur sur 16 bits, et adr une
adresse sur 16 bits également, et AX un registre accumulateur.
Symbole Code Op. Octets Opération
MOV AX, valeur B8 3 AX  valeur
MOV AX, [ adr ] A1 3 AX  contenu de l’adresse adr.
MOV [ adr ], AX A3 3 range AX à l’adresse adr.
ADD AX, valeur 05 3 AX  AX + valeur
ADD AX, [ adr ] 03 06 4 AX  AX + contenu de adr.
SUB AX, valeur 2D 3 AX  AX - valeur
SUB AX, [ adr ] 2B 06 4 AX  AX - contenu de adr.
SHR AX, 1 D1 E8 2 décale AX à droite.
SHL AX, 1 D1 E0 2 décale AX à gauche.
INC AX 40 1 AX  AX + 1
DEC AX 48 1 AX  AX - 1
CMP AX, valeur 3D 3 compare AX et valeur.
CMP AX, [ adr ] 3B 06 4 compare AX et contenu de adr.
AND AX, valeur 25 3 AX  AX AND valeur
OR AX, valeur 0B 3 AX  AX OR valeur
XOR AX, valeur 35 3 AX  AX XOR valeur
JMP adr EB 2 saut inconditionnel (adr. relatif).
JE adr 74 2 saut si =
JNE adr 75 2 saut si 
JG adr 7F 2 saut si >
JLE adr 7E 2 saut si 
6.6 Notion d’architecture RISC et CISC
Du point de vue jeu d’instruction, les processeurs se répartissent en deux architectures :
 L’architecture CISC (Complex Instruction Set Computer) : Ordinateur à jeu d’instruction large.
C’est une architecture avec un grand nombre d’instructions où le processeur doit exécuter des tâches complexes par
instruction unique. Le code machine de ces instructions varie d’une instruction à l’autre et nécessite donc un décodeur
complexe (microcode)
 L’architecture RISC (Reduced Instruction Set Computer) : Ordinateur à jeu d’instruction réduit.
C’est une architecture dans laquelle les instructions sont en nombre réduit (chargement, branchement, appel sous-
programme). Les architectures RISC peuvent donc être réalisées à partir de séquenceur câblé. Leur réalisation libère de
la surface permettant d’augmenter les nombres de registres ou d’unités de traitement par exemple. Chacune de ces
instructions s’exécutent ainsi en un cycle d’horloge. Bien souvent, ces instructions ne disposent que d’un seul mode
d’adressage. Les accès à la mémoire s’effectuent seulement à partir de deux instructions (Load et Store). Par contre, les
instructions complexes doivent être réalisées à partir de séquences basées sur les instructions élémentaires.
 Comparaison
Architecture RISC Architecture CISC
- instructions simples ne prenant qu’un seul cycle - instructions complexes prenant plusieurs cycles
- instructions au format fixe - instructions au format variable
- décodeur simple (câblé) - décodeur complexe (microcode)
- beaucoup de registres - peu de registres
- seules les instructions LOAD et STORE ont accès à la - toutes les instructions sont susceptibles d’accéder à la
mémoire mémoire
- peu de modes d’adressage - beaucoup de modes d’adressage
- compilateur complexe - compilateur simple

6.7 Niveaux de programmation


- Langage machine : programmation en utilisant le code machine pour chaque instruction.
- Langage assembleur : Utilisation de mnémoniques pour les instructions machines.
- Langages évolués : (Pascal, C, Java, etc. …) Utilisation d’instructions proches du langage humain qui nécessitent une
conversion en langage machine (interpréteur ou compilateur).

7 Les interruptions
7.1 Définition
Une interruption est un signal matériel qui permet d’interrompre l’exécution du programme en cours. Le processeur
possède une ou plusieurs entrées réservées à cet effet. Par exemple, le processeur ne va pas vérifier en permanence si
l’utilisateur a pressé une touche, mais c’est plutôt le contrôleur du clavier qui va envoyer une interruption au processeur
pour stopper l’exécution du programme en cours.
7.2 Principe de fonctionnement d’une interruption
Avant chaque exécution d’instruction, le processeur examine s’il y a eu une requête sur sa ligne d’interruption. Si c’est le
cas, il interrompt toutes ces activités et sauvegarde l’état présent (registres, PC, accumulateurs, registre d’état) dans
une zone mémoire particulière appelée pile. Ensuite, il exécute le programme d’interruption puis restitue l’état
sauvegardé avant de reprendre le programme principal.
Remarques :
- Certaines sources d’interruption possèdent leur propre autorisation de fonctionnement sous la forme d’un bit à
positionner, on l’appelle le masque d’interruption.
- On peut donc interdire ou autoriser certaines sources d’interruptions, on les appelle les interruptions masquables.
- Chaque source d’interruption possède un vecteur d’interruption où est sauvegardée l’adresse de départ du
programme à exécuter.
- Les interruptions sont classées par ordre de priorité. Dans le cas où plusieurs interruptions se présentent en même
temps, le processeur traite d’abord celle avec la priorité la plus élevée.