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 :

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)
-----------------------------------------------
É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).



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.