Vous êtes sur la page 1sur 69

Architecture

d’un microprocesseur
Cours 02
Plan de la séance
Vue d’ensemble d’un processeur
Assembleur et langage machine
Arithmétique des ordinateurs
Mémoire
Métriques de performance

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 2


Plan de la séance
Vue d’ensemble d’un processeur
Assembleur et langage machine
Arithmétique des ordinateurs
Mémoire
Métriques de performance

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 3


Vue d’ensemble d’un processeur
Rappel de l’architecture de von Neumann

Unité de
contrôle

Unité
Arithmétique et
Entrées Logique (UAL) Sorties

Unité de
Mémoire

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 4


31 0 <31..0>
R0 31 0
registres

Vue d’ensemble d’un processeur


PC
à usage 32
général

31 0
R31 IR

31 0

Rappel de l’architecture de von Neumann A


31 0
MA

Mémoire
A B

UAL 31 0
MD
C

Unité de 31
C
0

contrôle

Unité
Arithmétique et
Entrées Logique (UAL) Sorties

Unité de
Mémoire

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 5


Vue d’ensemble d’un processeur
Rappel de l’architecture de von Neumann
Processeur à un (1) bus interne 31 0 <31..0> 31 0
R0
registres PC
à usage 32
général

31 0
R31 IR

31 0
A
31 0
MA

Mémoire
A B

UAL 31 0
MD
C

31 0
C

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 6


Vue d’ensemble d’un processeur
Rappel de l’architecture de von Neumann
Processeur à un (1) bus interne 31 0 <31..0> 31 0
R0
registres PC
à usage 32
général

31 0
Registres
R31 IR
spécialisés

31 0
A
31 0
MA

Mémoire
A B

UAL 31 0
MD
C

31 0
C

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 7


Vue d’ensemble d’un processeur
Compteur de programme
Rappel de l’architecture de von Neumann
Processeur à un (1) bus interne 31 0 <31..0> 31 0
R0
registres PC
à usage 32
général

31 0
R31 IR

31 0
A
31 0
MA

Mémoire
A B

UAL 31 0
MD
C

31 0
C

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 8


Vue d’ensemble d’un processeur
Rappel de l’architecture de von Neumann
Registre d’instruction
Processeur à un (1) bus interne 31 0 <31..0> 31 0
R0
registres PC
à usage 32
général

31 0
R31 IR

31 0
A
31 0
MA

Mémoire
A B

UAL 31 0
MD
C

31 0
C

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 9


Vue d’ensemble d’un processeur
Rappel de l’architecture de von Neumann
Processeur à un (1) bus interne 31 0 <31..0> 31 0
R0
registres PC
à usage 32
Registres à usage général général

forment un tableau: 31
IR
0
R31
R[0] à R[31] dans cet
exemple 31 0
A
31 0
MA

Mémoire
A B

UAL 31 0
MD
C

31 0
C

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 10


Vue d’ensemble d’un processeur
Rappel de l’architecture de von Neumann
Processeur à un (1) bus interne 31 0 <31..0> 31 0
R0
registres PC
à usage 32
général

31 0
Registre d’adresse de la mémoire
R31 IR

• Ici, la mémoire est une


31 0
A
31 0
abstraction.
31
MA
0 Addr. Addr 0 • On y trouve les instructions

Mémoire
A B
31 0
Mémoire
et les données du
UAL
C
MD
programme.
Données
31 0 Addr MAX • On le regardera comme un
C
tableau:
Registre de donnée M[0] à M[ADR MAX]
de la mémoire
Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 11
Vue d’ensemble d’un processeur
Il existe différent types d’instructions:
• Instructions arithmétiques (+, −, ×, ∕, √)
• Instructions logique (AND, OR, XOR, NOT)
• Instructions de décalage
• Instructions de déplacement de données
• Instruction de branchement

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 12


Vue d’ensemble d’un processeur
31 0 <31..0>
Exemple d’instruction arithmétique: R0 31
PC
0

GPR
• R[2]  R[0] + R[1] 32

31 0
R31 IR

31 0
A
31 0
MA

Memory
A B

ALU 31 0
MD
C

31 0
C

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 13


Vue d’ensemble d’un processeur
31 0 <31..0>
Exemple d’instruction arithmétique: R0 31
PC
0

GPR
• R[2]  R[0] + R[1] 32

31 0
R31 IR
Avant Après

R[0] 10 10 31 0
A

10 12 31 0
R[1] 12 12 MA

Memory
A B

ALU 31 0
R[2] 13 22 MD
C

31 22 0
C

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 14


Vue d’ensemble d’un processeur
31 0 <31..0>
Exemple de déplacement de données: R0 31
PC
0

GPR
• R[2]  M[1] 32

31 0
R31 IR

31 0
A
31 0
MA

Memory
A B

ALU 31 0
MD
C

31 0
C

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 15


Vue d’ensemble d’un processeur
31 0 <31..0>
Exemple de déplacement de données: R0 31
PC
0

GPR
• R[2]  M[1] 32

31 0
R31 IR
Avant Après Avant Après

R[0] 10 10 M[0] 120 120 31 0


A

12 13 31 0
R[1] 12 12 M[1] 122 122 MA

Memory
A B

ALU 31 0
R[2] 13 122 M[2] 123 123 MD
C

31 25 0
C

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 16


Vue d’ensemble d’un processeur
Mémoire
01 IF CONDITION 31 0 <31..0>
Exemple de branchement: 02 INST #1
R0 31
PC
0

GPR
• PC  #ADDR 03 INST #2 32

04 INST #3
31 0
ELSE R31 IR
Important pour réaliser: 05 INST #4
• Des structures conditionnelles 06 INST #5
31 0
07 INST #6
• Des boucles END IF
A
31 0
• Des fonctions 08 INST #7 MA

Memory
A B
01 IF CONDITION 01 IF CONDITION
02 INST #1 05 INST #4 ALU 31 0
03 INST #2 06 INST #5 MD
04 INST #3 07 INST #6 C
08 INST #7 08 INST #7

31 0
C

Condition Condition
remplie pas remplie

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 17


Plan de la séance
Vue d’ensemble d’un processeur
Assembleur et langage machine
Arithmétique des ordinateurs
Mémoire
Métriques de performance

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 18


Assembleur et langage machine
Introduction à l’assembleur (ASM) et au langage machine (LM):
• L’assembleur sera considéré plus en détail aux cours 3 à 5

Nous verrons ici:


• Le lien existant entre un langage à haut niveau (ex. C/C++) et l’ASM
• Le principe d’encodage binaire des instructions (langage machine)

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 19


Assembleur et langage machine
Langage haut niveau
• En C/C++, un « instruction » ressemble à ceci:

a = b + c;

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 20


Assembleur et langage machine
Langage haut niveau
• En C/C++, un « instruction » ressemble à ceci:

a = b + c;

• a, b et c ne correspondent pas à des registres mais à des données mémoire

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 21


Assembleur et langage machine
Langage haut niveau
• En C/C++, un « instruction » ressemble à ceci:

a = b + c;

• a, b et c ne correspondent pas à des registres mais à des données mémoire


Dans les faits, le processeur va
o Déplacer les données en mémoire vers les registres
o Effectuer l’addition et mettre le résultat dans un registre
o Déplacer le résultat du registre vers la mémoire

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 22


Assembleur et langage machine
Assembleur
• Une « instruction » en C/C+ peut correspondre à plusieurs instruction en ASM/LM
C/C++:
a = b + c;

ASM:
mov r0 [1] # copie M[1] vers R[0]
mov r1 [2] # copie M[2] vers R[1]
add r0 r1 # additionne R[0] et R[1] et mets le résultats dans R[0]
mov [0] r0 # copie R[0] vers M[0]

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 23


Assembleur et langage machine
31 0 <31..0>
Assembleur R0 31
PC
0

GPR 32

31 0
R31 IR

R[0] 10 M[0] 120


31 0
R[1] 12 M[1] 122 A
31 0
MA
R[2] 13 M[2] 123

Memory
A B

ALU 31 0
MD
C
mov r0 [1] # déplace M[1] vers R[0]
mov r1 [2] # déplace M[2] vers R[1] 31 0
add r0 r1 # additionne R[0] et R[1] et mets le résultats dans R[0] C
mov [0] r0 # déplace R[0] vers M[0]

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 24


Assembleur et langage machine
31 0 <31..0>
Assembleur R0 31
PC
0

GPR 32

31 0
R31 IR

R[0] 122 M[0] 120


31 0
R[1] 12 M[1] 122 A
31 0
MA
R[2] 13 M[2] 123

Memory
A B

ALU 31 0
MD
C
mov r0 [1] # déplace M[1] vers R[0]
mov r1 [2] # déplace M[2] vers R[1] 31 0
add r0 r1 # additionne R[0] et R[1] et mets le résultats dans R[0] C
mov [0] r0 # déplace R[0] vers M[0]

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 25


Assembleur et langage machine
31 0 <31..0>
Assembleur R0 31
PC
0

GPR 32

31 0
R31 IR

R[0] 122 M[0] 120


31 0
R[1] 123 M[1] 122 A
31 0
MA
R[2] 13 M[2] 123

Memory
A B

ALU 31 0
MD
C
mov r0 [1] # déplace M[1] vers R[0]
mov r1 [2] # déplace M[2] vers R[1] 31 0
add r0 r1 # additionne R[0] et R[1] et mets le résultats dans R[0] C
mov [0] r0 # déplace R[0] vers M[0]

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 26


Assembleur et langage machine
31 0 <31..0>
Assembleur R0 31
PC
0

GPR 32

31 0
R31 IR

R[0] 245 M[0] 120


31 0
R[1] 123 M[1] 122 A
31 0
MA
R[2] 13 M[2] 123

Memory
A B

ALU 31 0
MD
C
mov r0 [1] # déplace M[1] vers R[0]
mov r1 [2] # déplace M[2] vers R[1] 31 0
add r0 r1 # additionne R[0] et R[1] et mets le résultats dans R[0] C
mov [0] r0 # déplace R[0] vers M[0]

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 27


Assembleur et langage machine
31 0 <31..0>
Assembleur R0 31
PC
0

GPR 32

31 0
R31 IR

R[0] 245 M[0] 245


31 0
R[1] 123 M[1] 122 A
31 0
MA
R[2] 13 M[2] 123

Memory
A B

ALU 31 0
MD
C
mov r0 [1] # déplace M[1] vers R[0]
mov r1 [2] # déplace M[2] vers R[1] 31 0
add r0 r1 # additionne R[0] et R[1] et mets le résultats dans R[0] C
mov [0] r0 # déplace R[0] vers M[0]

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 28


Assembleur et langage machine
31 0 <31..0>
Assembleur R0 31
PC
0

GPR 32

Avant Après Avant Après 31 0


R31 IR

R[0] 10 245 M[0] 120 245


31 0
R[1] 12 123 M[1] 122 122 A
31 0
MA
R[2] 13 13 M[2] 123 123

Memory
A B

ALU 31 0
MD
C
mov r0 [1] # déplace M[1] vers R[0]
mov r1 [2] # déplace M[2] vers R[1] 31 0
add r0 r1 # additionne R[0] et R[1] et mets le résultats dans R[0] C
mov [0] r0 # déplace R[0] vers M[0]

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 29


Assembleur et langage machine
Assembleur
• L’ASM est un langage bas niveau (très proche de la machine)
• L’ASM est spécifique à une architecture de processeur (ARM  RISC-V  x86)
• Requiert une connaissance de l’architecture interne du processeur
(au moins celle dite vue du programmeur, L3)

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 30


Assembleur et langage machine
Langage machine
• Une instruction ASM se traduit (typiquement) en une instruction en LM
• Le LM est une traduction binaire de l’ASM (souvent présenté en hexadécimal)
• Il existe différents types d’encodage: à longueur fixe et à longueur variable

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 31


Assembleur et langage machine
Langage machine
• Une instruction ASM se traduit (typiquement) par une instruction en LM
• Le LM est une traduction binaire de l’ASM
• Il existe différents types d’encodage: à longueur fixe et à longueur variable
Exemple
• Soit l’instruction ternaire rdst  rsrc1 + rsrc2
• Un encodage possible est:

opcode rdst rsrc1 rsrc2

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 32


Assembleur et langage machine
Langage machine
• Une instruction ASM se traduit (typiquement) par une instruction en LM
• Le LM est une traduction binaire de l’ASM
• Il existe différents types d’encodage: à longueur fixe et à longueur variable
Exemple
• Soit l’instruction ternaire r0  r1 + r2
• Un encodage possible est:

opcode r0 r1 r2

Code operation, ici addition

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 33


Assembleur et langage machine
Exercice 1:
Soit l’instruction ra  rb + rc . Si un ISA admet 103 instructions différentes, que chaque
instruction est encodée sur 32 bits et que le processeur possède 32 registres:
• Quel est le nombre de bits requis pour encoder le opcode?
• Quel est le nombre de bits requis pour encoder ra, rb et rc?
• Que fait-on des bits restants?

opcode ra rb rc ?

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 34


Assembleur et langage machine
Assembleur permet
• D'utiliser toutes les capacités matérielles de la machine
• L'accès à des modes non-disponibles dans un langage évolué
• D'utiliser les registres et les I/O spécifiques à la plate-forme cible
• L'usage de certaines fonctionnalités du processeur lors du développement du
noyau d'un système d'exploitation
• D'obtenir des programmes rapides et compacts
• D'optimiser les sections critiques d'un programme

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 35


Assembleur et langage machine
Assembleur a ses inconvénients
• Code non portable vers d'autres architectures
• Temps de développement plus long
• Erreurs plus fréquentes et plus difficiles à déceler
• Programmes plus difficiles à comprendre et à maintenir
• Pour un même processeur, le code peut être incompatible entre les différents
systèmes d'exploitation
• Des changements dans le choix des structures de données et des algorithmes sont
difficiles à « propager »

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 36


Plan de la séance
Vue d’ensemble d’un processeur
Assembleur et langage machine
Arithmétique des ordinateurs
Mémoire
Métriques de performance

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 37


Arithmétique des ordinateurs
Un rappel des notions d’arithmétique des ordinateurs:
• Système hexadécimal
• Complément à 2
• Addition et soustraction
• Décalages arithmétiques et liens avec la multiplication et la division

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 38


Arithmétique des ordinateurs
Rappel: Décimal Binaire Hexadécimal
0 0b0000 0x0
1 0b0001 0x1
2 0b0010 0x2
3 0b0011 0x3
4 0b0100 0x4
5 0b0101 0x5
6 0b0110 0x6
7 0b0111 0x7
8 0b1000 0x8
9 0b1001 0x9
10 0b1010 0xA
11 0b1011 0xB
12 0b1100 0xC
13 0b1101 0xD
14 0b1110 0xE
15 0b1111 0xF

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 39


Arithmétique des ordinateurs
Rappel:

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 40


Arithmétique des ordinateurs
Exercice 2:
Donnez la représentation hexadécimale de l’opération signée (+12) + (+45) si les
nombres sont donnés sur 8 bits.

Donnez le résultat du calcul.

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 41


Arithmétique des ordinateurs
Exercice 3:
Donnez la représentation hexadécimale de l’opération signée (+12) + (-45) si les
nombres sont donnés sur 8 bits.

Donnez le résultat du calcul.

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 42


Arithmétique des ordinateurs
Exercice 4:
Donnez la représentation hexadécimale de l’opération signée (+98) + (+37) si les
nombres sont donnés sur 8 bits.

Donnez le résultat du calcul. Que s’est-il passé?

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 43


Arithmétique des ordinateurs
Exercice 5:
Donnez le résultat du calcul suivant:

0x0007 << 13

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 44


Arithmétique des ordinateurs
Exercice 6:
Donnez le résultat du calcul suivant sachant que la valeur en hexadécimal est
signée:

0x0007 << 4

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 45


Arithmétique des ordinateurs
Exercice 7:
Donnez le résultat du calcul suivant sachant que la valeur en hexadécimal est
signée:

0x1000 >> 4

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 46


Arithmétique des ordinateurs
Exercice 8:
Donnez le résultat du calcul suivant sachant que la valeur en hexadécimal est
signée:

0x8000 >> 4

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 47


Plan de la séance
Vue d’ensemble d’un processeur
Assembleur et langage machine
Arithmétique des ordinateurs
Mémoire
Métriques de performance

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 48


Mémoire Adresse Donnée
00 0x01
• Vue par le programme: une adresse par octet 01 0x10
• Un octet = un caractère standard (char) 02 0xA1
03 0xBC
• Sur la puce: une adresse par « mot » (par exemple 32 bits) 04 0x2D
• Réduit le nombre d’accès 05 0x09
06 0x1F
• Ordre de placement des octets
07 0x2E
• Gros-boutiste (« big-endian »): l’octet le plus significatif est placé en premier 08 0x3C
• Petit-boutiste (« little-endian »): l’octet le moins significatif est placé en premier 09 0x21
10 0x12
11 0xE3
12 0xFF
13 0x13
14 0x25
15 0x56

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 49


Mémoire Adresse Donnée
00 0x01
• Vue par le programme: une adresse par octet 01 0x10
• Un octet = un caractère standard (char) 02 0xA1
03 0xBC
• Sur la puce: une adresse par « mot » (par exemple 32bits) 04 0x2D
• Réduit le nombre d’accès 05 0x09
06 0x1F
• Ordre de placement des octets
07 0x2E
• Gros-boutiste (« big-endian »): l’octet le plus significatif est placé en premier 08 0x3C
• Petit-boutiste (« little-endian »): l’octet le moins significatif est placé en premier 09 0x21
10 0x12
0x0110A1BC
11 0xE3
0x2D091F2E
12 0xFF
0x3C2112E3
13 0x13
0xFF132556
14 0x25
15 0x56

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 50


Mémoire Adresse Donnée
00 0x01
• Vue par le programme: une adresse par octet 01 0x10
• Un octet = un caractère standard (char) 02 0xA1
03 0xBC
• Sur la puce: une adresse par « mot » (par exemple 32bits) 04 0x2D
• Réduit le nombre d’accès 05 0x09
06 0x1F
• Ordre de placement des octets
07 0x2E
• Gros-boutiste (« big-endian »): l’octet le plus significatif est placé en premier 08 0x3C
• Petit-boutiste (« little-endian »): l’octet le moins significatif est placé en premier 09 0x21
10 0x12
0xBCA11001
11 0xE3
0x2E1F092D
12 0xFF
0xE312213C
13 0x13
0x562513FF
14 0x25
15 0x56

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 51


Mémoire
Exercice 9:
Donnez le contenu de la mémoire où sont stockés les éléments suivants sachant
que la mémoire est petit-boutiste (little-endian). On supposera que les données
débutent à l’adresse 0x0000.
3 2 1 0
char c1 = ‘a’;
0x0000
char c2 = ‘A’;
char c3 = ‘B’; 0x0004
char c4 = ‘b’; 0x0008
int i1 = +1; 0x000C
int i2 = -2;
0x0010

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 52


Mémoire
Exercice 10:
Donnez le contenu de la mémoire où sont stockés les éléments suivants sachant
que la mémoire est grand-boutiste (big-endian). On supposera que les données
débutent à l’adresse 0x0000.
0 1 2 3
char c1 = ‘a’;
0x0000
char c2 = ‘A’;
char c3 = ‘B’; 0x0004
char c4 = ‘b’; 0x0008
int i1 = +1; 0x000C
int i2 = -2;
0x0010

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 53


Plan de la séance
Vue d’ensemble d’un processeur
Assembleur et langage machine
Arithmétique des ordinateurs
Mémoire
Métriques de performance

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 54


Métriques de performances
• Mesurer la performance d’un ordinateur est primordiale quand on
désire atteindre un objectif de calcul ou de traitement de données
• Cependant, il existe différents critères de performance, et par
conséquent différentes métriques de ladite performance

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 55


Métriques de performances
Débit et Temps de réponse
• Le débit est la quantité de tâches réalisée par unité de temps
• Le temps de réponse (τ) est le temps écoulé entre le début et la fin
d’une tâche

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 56


Métriques de performances
Exercice 14:
Augmenter la fréquence d’un processeur améliore-t-il le débit ou le
temps de réponse?

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 57


Métriques de performances
Exercice 15:
Augmenter le nombre de processeurs dans un ordinateur améliore-t-il
le débit ou le temps de réponse?

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 58


Métriques de performances
Le débit et le temps de réponse sont liés, de sorte qu’augmenter l’un
influence d’une façon ou autre l’autre.

Nous nous intéresserons principalement au temps de réponse ici.

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 59


Métriques de performances
Le temps de réponse est une mesure ambiguë, amalgamant:
• Temps d’accès au disque
• Temps d’accès à la RAM
• Temps d’accès aux entrées et sorties
• Surcharge temporelle due au système d’exploitation
• Temps du processeur (τ)

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 60


Métriques de performances
Le temps du processeur se subdivise en:
• Temps usager:
Temps pris par le programme à proprement parler
• Temps système:
Temps pris par le système d’exploitation à exécuter des tâches requises par le
programme

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 61


Métriques de performances
Performance par temps de réponse
• La performance d’un ordinateur est inversement proportionnelle au
temps de réponse:
Perf = 1/τ
• Un gain en performance obtenu par un ordinateur B par rapport à un
ordinateur A est mesuré par le ratio des performances:
PerfB/PerfA = n

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 62


Métriques de performances
Exercice 16:
Si un ordinateur A exécute une tâche en 23 s, alors que l’ordinateur B
l’exécute en 15 s, quel est le gain de performance du système B sur A?
a) 0.65
b) 1.53

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 63


Métriques de performances
Le temps du processeur d’un programme est determiné par le nombre
de cycles d’horloge (Nclk) du programme et la fréquence (fclk) d’horloge
du processeur:
τ = Nclk/fclk

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 64


Métriques de performances
• Si chaque instruction prenait un cycle d’horloge, le nombre
d’instructions Ninst serait égal au nombre de cycles d’horloge Nclk.
• Cependant, deux instructions différentes peuvent nécessiter des
nombres de cycles différents à s’exécuter. Il est alors possible de
référer au nombre de cycles par instruction moyen (CPImoy) et trouver
τ = Ninst×CPImoy/fclk
Pour simplifier, on notera CPI pour signifier CPImoy
τ = Ninst×CPI/fclk

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 65


Métriques de performances
Exercice 17:
Soient deux CPU (A et B) implémentant le même jeu d’instructions. En
supposant que:
• La période de l’horloge du CPU A est 250 ps, que celle du CPU B est de 500 ps;
• Le CPI de A pour un programme X est 2.0, alors qu’il est de 1.2 pour B
Quel est le CPU le plus performant pour exécuter le programme X?

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 66


Métriques de performances
Exercice 18:
Soient deux CPU (A et B) implémentant le même jeu d’instructions. En
supposant que:
• La période de l’horloge du CPU A est 250 ps;
• Le CPI de A pour un programme X est 2.0, alors qu’il est de 1.2 pour B
Quelle est la fréquence d’horloge que doit pouvoir supporter le CPU B
pour être plus performant que le CPU A pour exécuter le programme X?

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 67


Métriques de performances
Exercice 19:
Un programme Java prend 5 s de temps CPU. Un nouveau compilateur
Java permet de réduire le nombre d’instructions de 40%, mais
augmentant le CPI de 10%.
Quel est le temps CPU du même programme, une fois compilé avec le
nouveau compilateur ?

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 68


Métriques de performances
Remarques finales
• La consommation d’énergie d’un processeur est généralement
proportionnelle à sa fréquence de l’horloge
• Or, la performance croît avec la fréquence de l’horloge
• Par conséquent, un dilemme se pose quand on cherche à réduire la
consommation énergétiques (cas des dispositifs portables) tout en
tentant d’augmenter la performance
• Des solutions architecturales existent (par exemple solutions déployés
par les processeurs ARM), qui feront l’objet des sujets avancés

Mise à jour: 2022/01/19 INF1600: Architecture des micro-ordinateurs 69

Vous aimerez peut-être aussi