Bonjour,

j'ai quelques exercices sur les niveaux de cache que je n'arrive pas à résoudre, alors je ne cherche pas nécessairement une réponse
j'aimerai une indication ou une lecture qui me permettrait de mieux comprendre et de m'orienter vers le résultat.

Soit le pseudo code C suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
#define N ...
#define M ...
#define P ...
int A[N][M], B[M][P], C[N][P];
int i, j, k, s;
for (i=0; i< N; i++){
    for (j=0; j< P; j++){
         for (k=0; k< M; k=k+ pas){ // un pas pour sauter des éléments de tableau
              C[i,j] = C[i,j] + A[i,k] * B[k,j];
         }
     }
}

Considérons un processeur cible qui a trois niveaux de cache L1, L2 et L3, chacun
ayant une capacité de taille C(L1), C(L2), C(L3) respectivement (en octets). La
taille d’un ligne cache est égale à S octets, et la taille d’une page mémoire est égale
à T octets.


1. En supposant que la valeur du pas est égale à 1. Calculez le nombre minimal
de défauts de cache L1 provoqués par ce programme.


2. Donnez et expliquez la formule qui calcule une taille suffisante pour le cache
L3 en octets, taille qui permettrait de garder les trois tableaux A, B, C en
cache.



3. Rappelez la formule qui calcule l’adresse des éléments A[i,k] et B[k,j] en
mémoire.

A+L×i+T×k.
B+L×k+T×j.
A et B adresse du début d'une ligne.
L la longueur d'une ligne et T la longueur d'une colonne.

4. Donnez et expliquez la formule qui calcule une valeur suffisante pour le pas
afin que chaque accès A[i,k] de chaque itération de la boucle k, puisse se
faire sur une ligne cache distincte.


5. Donnez et expliquez la formule qui calcule une valeur suffisante pour le pas
afin que chaque accès B[k,j] de chaque itération de la boucle k, puisse se
faire sur une page mémoire distincte.


Merci de votre aide.