Vous êtes sur la page 1sur 29

Université de Relizane

Département d’informatique

Matière: Architecture des ordinateurs

Chargée de matière: Bahmed F.


Chapitre II : Principaux composants d’un ordinateur
1. Introduction
Un ordinateur est une machine électronique dédiée au
traitement de l’information. Pour cela, il doit posséder un
nombre d’unités capables de collecter l’information, de la
sauvegarder, de la traiter, puis enfin de la diffuser.
diffuser En effet,
tout ordinateur doit posséder :
• Un processeur (ou unité centrale de traitement ou CPU)
• Une mémoire centrale
• Des unités d’entrées/sorties (ou unités d’échanges)
• Des périphériques d’entrées/sorties
Chapitre II : Principaux composants d’un ordinateur
1. Introduction

Processeur Mémoire
Centrale

Unités d’E/S

P1 P2 P3 p4 p5 p6
Chapitre II : Principaux composants d’un ordinateur
2. Registres

Ce sont des mémoires internes au processeur (donc pas la


MC mais, comme elles, un registre est une mémoire non
permanente), et qui sont des petites mémoires très rapides
d’accès, utilisés pour stocker une donnée, une adresse, un
résultat intermédiaire ou une instruction. Le nombre de
registres diffère d’un ordinateur à un autre, cela dépend de
son architecture, mais certains registres fondamentaux
existent dans la majorité des machines.
Chapitre II : Principaux composants d’un ordinateur
2. Registres
registre mot: contient le contenu d'un mot
mémoire, et a donc la taille d'un mot ( 32 ou
Registre 64 bits).

registre adresse: contient l'adresse d'un mot dont


la longueur = log2 (Nombre_de_mots_en_MC)

registre général: interchangeables (parfois notés


R0, R1, etc.), peuvent stocker indifféremment
Registre adresses, entiers, flottants, etc.

registre spécialisé: ne peuvent contenir qu'un type


bien précis de données. CO, PSW, SP, etc.
Chapitre II : Principaux composants d’un ordinateur
2. Registres
Registres de l'UAL accessibles au programmeur contrairement à ceux de l'UCC
Registre accumulateur : pour les opérations arithmétiques ou logiques.

Registre d'état (PSW: Program Status Word): chacun de ses bits est un
"drapeau" [flag] qui indique un état, exemple
exemple: le bit C indique un dépassement
de capacité, le bit Z si le résultat de l'opération effectuée est égal à 0, etc…
Compteur ordinal CO: contient l’adresse de la prochaine instruction à exécuter

Registre d’instruction RI: contient l’instruction à exécuter.

Registre d’adresses RA: utilisé pour accéder en lecture ou écriture à une


donnée/instruction en mémoire.

Registre de données RD: : Registre tampon de l’UAL : Stocke l’une des deux
opérandes d’une instruction arithmétique.
Chapitre II : Principaux composants d’un ordinateur
2. Registres
Registre pointeur de pile (SP): indique le sommet de la pile en mémoire, c’est-à-
dire la première case mémoire libre à son sommet. généralement, la pile sert
à passer des paramètres à une fonction et à stocker ses variables locales.

Registres généraux: pour diverses opérations, exemple, stocker des résultats


intermédiaires

Registres spécialisés: pour certaines opérations, exemple, pour les décalages,


les opérations arithmétiques à virgule flottante, etc.

Registres d'index (XR): utilisé pour manipuler des adresses dans le cas
d'adressage indexé. Ce type de registre est donc particulièrement adapté lors de
l'utilisation de tableaux.

Registres de base (BR): utilisé pour manipuler des adresses dans le cas
d'adressage basé. Ici, les adresses mémorisées sont des adresses de références
auxquelles il faut ajouter la valeur de l'adresse de l'instruction.
Chapitre II : Principaux composants d’un ordinateur
3. Mémoires
Temps d'accès mémoire: temps pour la lecture/écriture d'un mot mémoire;

Fréquence d’horloge caractéristique de la mémoire: l’inverse du temps d’accès.


Exemple: Si un Ta=10 ns → fréquence = 100 Mhz (1 Mhz = 106 Hz).

Note:
Cycle processeur ou cycle CPU: temps d'exécution de l'instruction la plus courte
(du jeu d'instruction) ou la durée d'une action élémentaire provoquant un
changement d'état.

Un accès à la mémoire principale est beaucoup plus long que le cycle CPU
Chapitre II : Principaux composants d’un ordinateur
3. Mémoires
Mémoire vive (RAM: Random Acces Memory
ou Mémoire à accès aléatoire)
Mémoire

Mémoire morte (ROM: Read Only Memory ou


Mémoire à lecture seule)

SRAM (Static RAM): Très rapide, mais: couteuse


et présente une difficulté d’intégration
RAM

DRAM (dynamic RAM): Lente, mais: peu chère


et offre une grande facilité d’intégration
Chapitre II : Principaux composants d’un ordinateur
3. Mémoires
Trois critères principaux définissent l’importance d’une mémoire: La
capacité, le temps d’accès et le coût.

La mémorisation de l’information dans un ordinateur ne se fait pas en un


lieu unique mais est organisée au travers d’une hiérarchie de mémoires.
Chapitre II : Principaux composants d’un ordinateur

4. Mémoire cache
un goulot d’étranglement –Goulot de Von Neumann-.

La MC n'est plus en mesure de délivrer des informations aussi rapidement


que le processeur est capable de les traiter.
Chapitre II : Principaux composants d’un ordinateur

4. Mémoire cache
un goulot d’étranglement –Goulot de Von Neumann-.
Chapitre II : Principaux composants d’un ordinateur

4. Mémoire cache
un goulot d’étranglement –Goulot de Von Neumann-.

Solution: disposer une mémoire intermédiaire très rapide entre le


microprocesseur et la MC. Elle est appelée mémoire cache ou antémémoire.
Le microprocesseur peut ainsi acquérir les données à sa vitesse propre.
propre
Chapitre II : Principaux composants d’un ordinateur
4. Mémoire cache
Question: Quel code est le plus performant??
# define N 700 # define N 700
…. ….
int tab [N][N]; int tab [N][N];
int i,j,k,somme=0;
i,j,k,somme int i,j,k,somme=0;
i,j,k,somme
… …
for ( i = 0; i < N; j ++) { for ( j = 0; j < N; j ++) {
for ( j= 0; j< N; i ++) { for ( i = 0; i < N; i ++) {
somme=somme+tab[i][j]; somme=somme+tab[i][j];
} }
} }

Code 1 Code 2
Chapitre II : Principaux composants d’un ordinateur
4. Mémoire cache

Mémoires cache performantes grâce à deux principes:


Localité spatiale: Quand une instruction s’exécute, il est très probable que la
prochaine instruction à exécuter soit dans le mot suivant de la mémoire.
Aussi, l’accès à une donnée située à une adresse X va probablement être suivi
d'un accès à une zone tout proche de X.

Localité temporelle: les blocs s’exécutent en séquences très proches (il y a plus
de chances d’accéder à une position de mémoire utilisée il y a 10 cycles qu’à
une autre utilisée il y a 10000 cycles). L’accès à une zone mémoire à un instant
donné a de fortes chances de se reproduire dans la suite du programme.
Chapitre II : Principaux composants d’un ordinateur
4. Mémoire cache

Le principe de cache est très simple: le microprocesseur n’a pas conscience de


sa présence et lui envoie toutes ses requêtes comme s’il agissait de la MC:

- Soit l’information requise est présente dans le cache et elle est alors envoyée
microprocesseur On parle de succès de cache (cache hit).
directement au microprocesseur. hit)
-Soit l’information n’est pas dans le cache, et le contrôleur de cache envoie
alors une requête à la MC. Une fois l’information récupérée, il la renvoie au
microprocesseur tout en la stockant dans le cache. On parle de défaut de cache
ou de d’échec de cache (cache miss).

Bien entendu, le cache n’apporte un gain de performance que dans le premier


cas. Sa performance est donc entièrement liée à son taux de succès (hit rate).
Chapitre II : Principaux composants d’un ordinateur
4. Mémoire cache

Donc, lorsqu’une donnée ou une instruction doit être chargée dans un cache il
serait intéressant de charger également les données (et/ou instructions) qui
sont proches en MC (principe de la localité spatiale). On augmente ainsi la
probabilité que le processeur trouve la prochaine donnée (ou instruction) dans
le cache.

- Une ligne (ou bloc) de cache est la plus petite portion de la cache avec une
étiquette unique. C’est le plus petit élément de données qui peut être transféré
entre la mémoire cache et la MC.
- Un mot est le plus petit élément de données qui peut être transféré entre le
processeur et la mémoire cache.
Chapitre II : Principaux composants d’un ordinateur
4. Mémoire cache

0220

LOAD D, R, 0223
Chapitre II : Principaux composants d’un ordinateur
4. Mémoire cache

0220

LOAD D, R, 0223
Chapitre II : Principaux composants d’un ordinateur
4. Mémoire cache

0220

LOAD D, R, 0223
Chapitre II : Principaux composants d’un ordinateur
4. Mémoire cache

0220

LOAD D, R, 0223
Chapitre II : Principaux composants d’un ordinateur
4. Mémoire cache

0220

LOAD D, R, 0223
Chapitre II : Principaux composants d’un ordinateur
4. Mémoire cache

0220

LOAD D, R, 0223
Chapitre II : Principaux composants d’un ordinateur
4. Mémoire cache

0220

LOAD D, R, 0223
Chapitre II : Principaux composants d’un ordinateur
4. Mémoire cache
Astuces de programmation:

Objectif: Augmenter la localité spatiale et temporelle des codes

La gestion entièrement matérielle du cache ne dispense pas le programmeur


de réfléchir à la façon dont le code accède aux données. Il faut essayer
de profiter au maximum de la localité des accès pour améliorer
l’efficacité du cache.
Chapitre II : Principaux composants d’un ordinateur
4. Mémoire cache
Astuces de programmation:
# define N 700 # define N 700
…. ….
int tab [N][N]; int tab [N][N];
int i,j,k,somme=0;
i,j,k,somme int i,j,k,somme=0;
i,j,k,somme
… …
for ( i = 0; i < N; j ++) { for ( j = 0; j < N; j ++) {
for ( j= 0; j< N; i ++) { for ( i = 0; i < N; i ++) {
somme=somme+tab[i][j]; somme=somme+tab[i][j];
} }
} }

Code 1: Temps d’exécution= 1 ms Code 2: Temps d’exécution= 1.5 ms!!


Chapitre II : Principaux composants d’un ordinateur
4. Mémoire cache
Astuces de programmation:

Lorsque le tableau est parcouru par rangée, le processeur accède à des


données successives dans les lignes du cache ; il profite donc au maximum
du principe de localité spatiale.
Chapitre II : Principaux composants d’un ordinateur
4. Mémoire cache
Astuces de programmation:
# define N 400 # define N 400
…. ….
int a[N][N],b[N][N],tab[N][N]; int a[N][N],b[N][N],tab[N][N];
int i,j,k,somme=0; int i,j,k,somme=0;
… …

for ( i = 0; i < N; i ++) { for ( i = 0; i < N; i ++) {


for ( j = 0; j < N; j ++) { for ( j = 0; j < N; j ++) {
a[i][j] = 2* b[i][j]; a[i][j] = 2* b[i][j] ;
} tab[i][j] = 5* b[i][j] ;
} }
for ( i = 0; i < N; i ++) { }
for ( j = 0; j < N; j ++) {
tab[i][j] = 5* b[i][j] ;
}
}

Code 1: Temps d’exécution= 1 ms!! Code 2: Temps d’exécution= 0.8 ms


Merci!

29

Vous aimerez peut-être aussi