Changes between Version 18 and Version 19 of AS6-TME-B4


Ignore:
Timestamp:
Mar 21, 2022, 8:44:25 PM (3 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AS6-TME-B4

    v18 v19  
    3030
    3131
    32 1. Question ?
    33 {{{#!protected
    34 '''
    35 * réponse
    36 '''
    37 }}}
    38 
     321. Que signifie taux de MISS ? De quoi dépend-t-il ? Est-il stable ? Quelle est sa valeur typique ?
     33{{{#!protected
     34'''
     35* Le taux de MISS est le pourcentage d'échec du cache, quand il n'a pas l'information demandé par le processeur.
     36* Ce taux dépend de la taille du cache, mais aussi du profil d'usage de la mémoire par le programme.
     37* Il n'est pas stable. Le travail du compilateur est de tenté de le réduire en utilisant mieux le cache.
     38* < 2% pour le cache des instructions; < 5% pour le cache des données
     39'''
     40}}}
     411. Qu'est ce que le coût d'un MISS ? De quoi dépend-t-il ? Quelle est sa valeur typique ?
     42{{{#!protected
     43'''
     44* Le coût d'un MISS, c'est le nombre de cycles nécessaire pour que le cache aille chercher la ligne manquante.
     45* Ce coût dépend du temps pris pour envoyer une requête vers la mémoire, du temps pris par le cache L2 pour rendre la ligne manquante, du temps de transfert de la ligne sur le bus système et de l'enregistrement dans le cache L1.
     46* Disons de 10 à 50 cycles, c'est très variable.
     47'''
     48}}}
     491. Que signifient CPI et IPC ? Quel est le rapport entre les deux ?
     50{{{#!protected
     51'''
     52* CPI : Clock Per Instruction. IPC : Instruction Per Clock. IPC = 1/CPI
     53'''
     54}}}
     551. Sur un processeur capable de démarrer une instruction par cycle, pourquoi on n'a pas un CPI de 1 ?
     56{{{#!protected
     57'''
     58* parce qu'en fait, certaines instruction durent deux cycles et qu'il y a des dépendances entre instructions qui ajoutent des délais d'attente.
     59'''
     60}}}
     611. Finalement, quelle est l'équation définissant le CPI réel en fonction du CPI0 (avec un cache parfait, donc un taux de MISS de 0%) et de taux de MISS réel et des coûts de MISS ?
     62{{{#!protected
     63'''
     64* CPI = CPI0 + TauxMissIns * CoutMissIns + TauxMissDar * CoutMissIns
     65'''
     66}}}
     671. Qu'est-ce qu'une perte de cohérence pour un cache de niveau 1 ? Est-ce grave ?
     68{{{#!protected
     69'''
     70* C'est quand les données qu'il contient ne sont pas les mêmes que dans la mémoire.
     71* Ces données peuvent être obsolètes, si un composant a écrit en mémoire des lignes et que les copies de ces lignes n'ont pas été mises à jour dans le cache.
     72* Dans certaines conditions la mémoire pourrait aussi contenir des valeurs obsolètes, si le cache modifiait sa copie sans mettre à jour la mémoire, mais cela n'arrive pas dans notre plateforme parce que le cache a une stratégie write through, dans laquelle toutes les écritures demandées par le processeur sont faites en mémoire (et dans le cache si la ligne adressée est présente).
     73* Oui, c'est grave. C'est même mortel pour l'application.
     74'''
     75}}}
     761. Est-ce qu'il y a un risque de perte de cohérence si on a un seul processeur ? Et s'il y en a plus qu'un ?
     77{{{#!protected
     78'''
     79* Oui, si on a un autre initiateur dans le SoC capable d'écrire en mémoire dans des lignes dont la copie est dans le cache.
     80* Oui, aussi si on a deux caches, on a des risques à cause des copies de lignes.
     81'''
     82}}}
     831. Un moyen d'éviter le problème de cohérence, c'est le snooping, qu'est-ce que c'est ?
     84{{{#!protected
     85'''
     86* C'est l'espionnage, fait par les caches L1, des requêtes transitant par le bus afin de repérer des écritures faites par les autres dans des lignes dont ils ont une copie. Quand il voit des écritures, ils mettent leur copie à jour, ou plus simplement, il invalide leur copie (puisqu'elle est obsolète).
     87'''
     88}}}
     891. Quels autres moyens connaissez-vous pour traiter le problème de cohérence ?
     90{{{#!protected
     91'''
     92* On peut l'éliminer en utilisant des mémoires non caché.
     93* On peut demander au cache de flusher les lignes contenant des données partagées avant de les lire afin d'être sûr de lire la version de la mémoire.
     94* On peut utiliser la stratégie directory-based qui délègue que cache L2, la responsabilité de maintenir la cohérence entre toutes les copies qu'il a distribuées.
     95'''
     96}}}
     971. Qu'est-ce qu'un faux partage ? (Non, ce n'est pas quand votre petit frère coupe un gâteau pour vous en donner une part)
     98{{{#!protected
     99'''
     100* C'est quand on met deux variables globales dans la même ligne, que ces variables sont utilisées par deux threads s'exécutant sur deux processeurs distincts. La ligne contenant les deux variables peut être copiées dans les deux caches et la modification d'une variable, fait croire à l'autre cache qu'il y a une perte de cohérence par erreur.
     101'''
     102}}}
     1031. Est-ce que le faux partage est un problème grave
     104{{{#!protected
     105'''
     106* Non, ce n'est pas performant quand ça arrive et ça consomme du temps et de l'énergie pour rien, mais ce n'est pas mortel.
     107'''
     108}}}
    39109
    40110