Exercices architecture processeur (CPU) et mémoire
Exercice 1
Question 1 : Commentez cycle par cycle ce qui se passe lors de l'exécution de la suite d'octets (située en mémoire d'instructions :
Question 1 : Commentez cycle par cycle ce qui se passe lors de l'exécution de la suite d'octets (située en mémoire d'instructions :
ILOAD
1
Question 2 : Même question avec la suite d'octets :
WIDE
ILOAD
1
0
Remarque : la micro-instruction wide_iload 1 est située à 256 mots d’écart de la micro-instruction iload1.
Exercice 2
On considère la fonction C suivante:
-----------------------------------------------
int sommen(int n)
int i, s=0;
for (i=1,is=s+i
return(s)
-----------------------------------------------
int sommen(int n)
int i, s=0;
for (i=1,is=s+i
return(s)
-----------------------------------------------
Écrire une implémentation des instructions de cette fonction dans le langage du jeu d'instruction dit « jeu projet ». On notera @n,@s et @i les adresses (constantes) des variables correspondantes.
-----------------------------------------------
int sommenrec(int n)
{if (n==0) return(0);
return(n+sommenrec(n-1));}
-----------------------------------------------
Ecrire une implémentation de cette fonction en IJVM (avec appel récursif). On supposera que la fonction est numérotée 5 dans la zone des constantes pointée par CPP.
Question 5 : Décrire les états successifs de la mémoire lors de l'exécution de l'appel à sommenrec(4).
Question 6 : A l'aide du micro-programme calculer le nombre de cycles d'horloge nécessaires pour réaliser un appel à sommenrec(4). Indiquez également le nombre d'octets nécessaires pour ranger les instructions de sommenrec.
Question 7 : Quelle est l'implémentation la plus efficace?
Exercice 3
Que fait la suite de micro instructions suivantes ? :
myst1 MAR=SP=SP+1 goto myst2
myst2 H=MDR=TOS if (N) goto myst3bis else goto myst3
myst3 wr, goto main1
myst3bis TOS=MDR=-H;goto myst3
Exercice 1
Question 1 :
Question 2 :
Exercice 2
Question 1 :
(on pouvait supposer que le GOTO microprogrammé permet de gérer les offsets négatifs, ou utiliser l’instruction GOTOR vue en cours, car sinon, tel qu’il est écrit, le micro-programme ne permet pas de gérer les retours arrière)
Question 3 :
Question 4 :
En observant la séquence de micro-instructions associées à Invoquevirtual et à Ireturn, on constate que pour que la procédure récursive fonctionne, il est nécessaire qu’avant chaque appel récursif sur la pile se trouve non seulement la valeur du paramètre (n-1) mais également au dessous un mot (ici de valeur 0) qui sert ultérieurement à stocker le pointeur sur la case contenant l’adresse de retour.
Avec cette configuration, il est nécessaire d’avoir en début de zone d’instructions deux octets représentant le nombre de paramètres +1 (ici 2).
Avec cette configuration, il est nécessaire d’avoir en début de zone d’instructions deux octets représentant le nombre de paramètres +1 (ici 2).
Question 5 :
Le premier appel est celui avec paramètre 4 qui est déjà en cours. On présente dans les tableaux suivants les états de la pile d’exécution.
Question 6 :
Cf tableau de la question 4
Question 7 :
Cette suite de micro-instructions calcule la valeur absolue du mot au sommet de la pile et l’empile.