Vous êtes sur la page 1sur 3

UNIVERSITE M’Hamed BOUGARA – BOUMERDES

FACULTE DES SCIENCES


DEPARTEMENT D’INFORMATIQUE

Module : Architecture des Ordinateurs Responsable : H. Mokrani


Filière : Licence Informatique Documents : Non autorisés
Examen final 2017-2018
( 01 h 30 min )

Question de cours : (11 points)


1. Quelle est le composant de l’architecture de Von Neumann qui dirige le fonctionnement (2 pts)
des autres unités ? Détailler ce composant ?
Microprocesseur (unité centrale) (0.5 pts), pour chaque composant avec explication
(0,5 pts x 3) :
HORLOGE :…. UAL :…. REGISTRES de données et de contrôles :…..
Unité de commande :……..

(1 pts)
2. Quelle différence il-y-a-t-il entre un accès séquentiel et un accès direct à une mémoire?
Accès séquentiel : Le plus lent, Pour accéder à une information particulière, on est
obligé de parcourir toutes celle qui la précédent. (0.5 pts)
Accès Direct : Le plus rapide, Les données ont une adresse propre, on y accède
directement. (0.5 pts)
(1 pts)
3. Quelle est la différence principale entre le fonctionnement asynchrone et le
fonctionnement synchrone?
Asynchrone : La sortie logique peut changer d'état à tout moment quand une ou
plusieurs entrées changent. (0.5 pts)
Synchrone : Le changement d'état est commandé par un signal d’horloge. Les
informations évoluent en fonction du temps. (0.5 pts)
(1.5 pts)
4. Quel est le rôle d’un bus ? Donnez sa composition ?
Un ensemble de composants et de fils qui assure la transmission du même type
d’information (0.5 pts).
Sa composition: ((1 pts) il suffit d’avoir trois composants pour donner la note
complète)
• Bus de données: bidirectionnel qui assure le transfert des données entre le
microprocesseur et son environnement.
• Bus d’adressage: unidirectionnel qui permet la sélection des données à traiter
dans un espace mémoire.
• Bus de commande: constitué par quelques conducteurs qui assurent la
synchronisation des flux d'informations sur les bus des données et des adresses.
• Autres composants:
1. Arbitre: Choix de Composant maitre du bus à un instant donné.
2. Pont: Liaison entre deux bus. (Adaptation des protocoles).
(2 pts)
5. Citer quatre registres différents du processeur MIPS et décrire leur rôle en une courte
phrase ?
( (0.25 pts x 4) pour chaque registre (0.25 pts x 4) pour chaque explication).
$ra : registre d’adresse, contient l’adresse de retour.
$sp : registre de pile, contient l’adresse du sommet de la pile.
$fp, $PC, $RI, $ZERO ………….
(1 pts)
6. Quel est la différence entre une instruction assembleur et une pseudo-instruction

Page 1 sur 3
assembleur ?
Une instruction assembleur : est un mot mémoire qui comporte une commende avec
ses paramètres compréhensible par le processeur. (0.5 pts)
Une pseudo-instruction : est une instruction qui comporte une commende
paramétrée qui remplace une ou plusieurs instructions assembleur. Le but de création
des pseudo-instructions est de simplifier l’écriture et la compréhension du code par
l’être humain.(0.5 pts)
(1.5 pts)
7. Qu’est-ce que la pile ? Quelles opérations fait-on avec ? Quel registre permet sa gestion
?
Espace de stockage en mémoire comme un tableau à gestion d’accès automatique.
(0.5 pts)
On peut empiler dessus ou dépiler des valeurs (LIFO). (0.5 pts)
Cette gestion est réalisée grâce au pointeur de haut de pile SP. (0.5 pts)
(1 pts)
8. Dans un programme assembleur, lors d’appel de procédure, dans quels cas faut-il faire
appel à la mémoire (la pile) pour sauvegarder les valeurs des registres?
Lors d’appel de fonction imbriqué ou récursive, car on peut écraser les données des
registres. (1 pts)

Exercice 1 : ( 5 points)
Traduire le code C suivante en langage assembleur MIPS. Veuillez commenter votre code.

FIN=0; Supposons que les adresses des variables sont :


for (I=N-1 ; I>0 ; I=FIN)
{ 24000-27996 vecteur A
FIN=0; 28000 constante 0
for (J=0; J<I; J++) 28004 variable I
if (A[J]>A[J+1])
{
28008 variable J
FIN=J; 28012 variable FIN
AIDE=A[J]; 28016 variable AIDE
A[J]=A[J+1]; 28020 variable N
A[J+1]=AIDE;
}
}

Remarques d’ordre générales :


1. Les étudiants peuvent utiliser les adresses à la place des variables.
2. Il existe plusieurs solutions pour le même code, il faut bien étudier le code. Il faut faire attention à:
a. l’utilisation des sauts (beq,bge, ble,…).
b. A l’ordre d’utilisation des registres.
c. Aux sauvegardes des registres dans les variables quand il le faut.
3. Un code non commenté (-0.5 pts) peu commenté (-0.25 pts).

Etiquette Code Commentaire Points


ori $16,$0,0 # Affecter la valeur 0 au registre $16 0.25 pts
sw $16, FIN($0) # Sauvegarder de $16 dans la variable FIN (FIN = 0)

lw $17, N($0) # Lecture de la valeur de N dans $17 0.25 pts


subi $17, $17, 1 # $17 = $17-1 pour (N-1)
sw $17, I($0) # Sauvegarder N-1 dans la variable I
FOR1 ble $17, $0, SUITE3 # sauter vers SUITE3 si i<=0 0.5 pts

ori $16,$0,0 # FIN = 0 0.25 pts


sw $16, FIN($0) # sauvegarder FIN (FIN = 0).

Page 2 sur 3
ori $18,$0,0 #J =0 0.25 pts
sw $18, J($0) # Sauvegarder $18 dans J (J = 0).
FOR2 bge $18,$17, SUITE2 # Sauter vers SUITE2 (j>=i) 0.5 pts

addi $19,$18,1 # $19 contient J+1 0.25 pts

muli $20,$18,4 # Calculer le décalage des adresses dans les éléments 0.25 pts
du tableau.
muli $21,$19,4 # Calculer le décalage des adresses dans les éléments
du tableau.
lw $22, A($20) 0.25 pts
lw $23, A($21) # lecture de la valeur de A[J];
# lecture de la valeur de A[J+1];
IF ble $22,$23, SUITE1 #Sauter vers SUITE1 si (A [j] <= A [j+1]) 0.5 pts

addi $16,$17,0 # $16 reçoit $17 0.25 pts


sw $16, FIN($0) # Sauvegarder FIN = J

sw $22,AIDE($0) 0.75 pts


addi $22,$23,$0 #AIDE = $22
lw $23, AIDE($0) #$22 = $23
#$23 =AIDE
sw $22, A($20) 0.25 pts
sw $23, A($21) # Sauvegarder la nouvelle valeur de A[j]
# Sauvegarder la nouvelle valeur de A[j+1]
SUITE1 addi $18,$18,1 # j ++ 0.25 pts
sw $18, j ($0) # Sauvegarder j dans la mémoire.
j FOR2 # Saut inconditionnel ver FOR2
SUITE2 addi $17,$16,0 # I = FIN 0.25 pts
sw $17, i($0) # Sauvegarder I
j FOR1 # saut inconditionnel vers FOR1
SUITE3 ….

Exercice 2 : (4 points)
On considère une mémoire centrale de 8 Go où la taille d’une cellule est de 16 bits.
1. Calculez le nombre de bits nécessaires pour adresser toute la mémoire ? (1,5 pts)
Une mémoire de 8 Go comporte 4 G cellule (mots) de 16 bits. (0.5 pts)
Pour adresser 4 G_cellules ( 4x230) il faut (log2(4x230)= 32 bits). (1 pts)
2. Calculez l'adresse, en octal, du dixième élément d'un tableau dont l'adresse du premier (1,5 pts)
élément est (100)8 et dont tous les éléments de ce tableau sont composés de 32 bits;
 Neme_element_tab = 1eme_element_tab + (N-1)* size_of_element (0.5 pts).
 (Size_of_element de 32 bits est de deux cellules mémoire (car 1 cellule = 16
bits). (0.25 pts)
 10eme élément d’un tableau c’écrit en octal (12)8. (0.25 pts)
 Donc la formule c’écrit :
10eme_element_tab= (100)8 + ((12-1)8 x (2)8) = (122)8 (0.5 pts)
3. Calculer la taille de cette mémoire en l'exprimant en mots de 32 bits puis en mots de 64 (1 pts)
bits.
 La taille reste inchangée :
o 8Go = 2 G_mot_de_32_bits (0.5 pts)
o 8Go = 1 G_mot_de_64_bits (0.5 pts)

Page 3 sur 3

Vous aimerez peut-être aussi