Simulateur de cache CPU

Comparer les mappages de cache, les politiques d’écriture et les motifs d’accès avec une trace reproductible.

À propos de cet outil

Choisissez une configuration de cache et un motif d’accès, ou saisissez une trace personnalisée, puis sélectionnez Exécuter. Les préréglages sont des configurations illustratives, pas des mesures d’un processeur particulier. Changer une saisie ou l’onglet source annule le calcul courant et efface les deux résultats. Effacer les résultats conserve les saisies.

Le modèle commence avec un cache vide. Chaque accès lit ou écrit un mot de 4 octets aligné à une adresse d’octet 32 bits de 0 à 4294967292. La capacité est 1–2048 KiB ; la taille de ligne est 8–256 B. L’associativité ne peut pas dépasser le nombre de lignes. Le mappage utilise block = floor(adresse / taille de ligne) et set = block modulo le nombre d’ensembles.

Write-back avec write-allocate : un défaut charge une ligne ; un store la marque sale. Une éviction sale écrit toute la ligne. Les lignes sales restantes à la fin sont reportées à part et ne sont pas automatiquement vidées. Write-through sans write-allocate : chaque store écrit 4 B ; un défaut d’écriture ne remplit pas une ligne de cache. Les trafics en lecture et en écriture décrivent ce modèle de trace, pas des compteurs de performance matériels.

Causes de défaut : pour LRU avec write-back/write-allocate, le premier contact avec un bloc est obligatoire. Les défauts ultérieurs sont des défauts de capacité si un cache LRU entièrement associatif de même capacité échoue aussi, sinon des défauts de conflit. FIFO, Random et write-through/no-allocate ne reportent que les premiers contacts et les défauts ultérieurs ; cela ne sépare pas les effets de politique, de mappage et de capacité. LRU remplace la ligne la moins récemment utilisée ; FIFO remplace la ligne insérée le plus tôt. Les choix Random utilisent des graines fixes et sont reproductibles, pas cryptographiques. Le mappage modulo peut introduire un petit biais pour des ensembles de travail dont la taille n’est pas une puissance de deux.

Traces : mettez un accès par ligne, par exemple R 0x0, W 4 ou 1024 (lecture par défaut). Les lignes vides et les lignes entières commençant par # sont ignorées. Les lignes invalides sont rejetées ; rien n’est sauté ni tronqué en silence. Les limites sont 1200000 accès et 48 Mi caractères de texte d’entrée. Seules les 64 premières étapes apparaissent dans le tableau ; les totaux couvrent toute la trace.

Les tableaux générés contiennent des éléments de 4 octets. Les matrices sont en ordre ligne, avec A, B et C placés consécutivement. Les traces de multiplication lisent et écrivent C pour chaque tuile ; la transposition lit A et écrit B. N de matrice est 2–64 pour la multiplication et 2–512 pour la transposition ; une tuile est 1–N. Le pas est un multiple de 4 et doit garder chaque adresse dans la plage 32 bits. Les accès aléatoires utilisent l’ensemble de travail choisi.

Coûts et comparaison : AMAT = coût de succès + taux de défauts × surcoût de défaut. Les deux coûts peuvent aller de 0 à 10⁹ cycles. Ce modèle à coût constant ne simule ni tampons d’écriture, ni accès superposés, ni plusieurs niveaux de cache. La comparaison de capacités utilise les mêmes 150000 premiers accès au plus pour chaque configuration et reporte leurs taux de défauts, pas un taux stationnaire garanti.

Les saisies, même inachevées ou invalides, sont enregistrées localement dans la limite de 100000 caractères sérialisés. Au-delà, la copie précédente est conservée et un avertissement apparaît : téléchargez la trace complète avant de recharger ou de quitter la page. La navigation interne conserve la session et le résultat terminé. Un rechargement rétablit les saisies enregistrées et attend Exécuter. Les traces omises par les anciennes versions ne peuvent pas être récupérées.

Sources : Cornell CS3410: Caches et Dinero IV: trace-driven cache simulation.

La synthèse et le graphique des ensembles couvrent toute la simulation. Dépliez les étapes d’accès pour voir les enregistrements ; la limite d’échantillon n’est indiquée que si la trace dépasse le tableau affiché. Les colonnes numériques suivent l’alignement de leurs en-têtes et les tableaux larges défilent localement. Les coûts et la comparaison des capacités restent facultatifs.

Le graphique présente les indices des ensembles horizontalement et le nombre d’accès verticalement. Le bleu représente tous les accès ; le rouge superpose leurs défauts sans les additionner. Si la place manque, les ensembles voisins sont regroupés ; chaque colonne additionne leurs valeurs.