Plusieurs des ressources sur lesquelles je suis allé sur Internet ne sont pas d'accord sur la façon dont fonctionne associative caching.Informations sur les stides de cache associatifs à N-way
Par exemple, les secrets matériels semblent croire cela fonctionne comme ceci:
Ensuite, la principale mémoire RAM est divisée en le même nombre de blocs disponibles dans la mémoire cache. Garder l'exemple associatif à 4 voies 512 Ko, la RAM principale serait divisée en 2 048 blocs, le même nombre de blocs disponibles dans la mémoire cache. Chaque bloc de mémoire est lié à un ensemble de lignes à l'intérieur du cache, tout comme dans le cache mappé direct.
http://www.hardwaresecrets.com/printpage/481/8
Ils semblent dire que chaque bloc de cache (4 lignes de cache) correspond à un bloc particulier de RAM contiguë. Ils disent que les blocs non-contigus de la mémoire système (RAM) ne peuvent pas correspondre au même bloc de cache.
C'est là l'image de la façon dont fonctionne hardwaresecrets pense qu'il http://www.hardwaresecrets.com/fullimage.php?image=7864
qui contraste avec l'image de wikipedia du cache associatif http://upload.wikimedia.org/wikipedia/commons/9/93/Cache%2Cassociative-fill-both.png.
Brown ne partage pas avec les secrets matériels
Tenir compte de ce qui pourrait arriver si chaque ligne de cache avait deux ensembles de champs: deux bits valides, deux bits sales, deux balises champs, et deux champs de données. Un ensemble de champs pourrait mettre en cache des données pour une zone de la mémoire principale, et l'autre pour une autre zone qui passe à la même ligne de cache.
http://www.spsu.edu/cs/faculty/bbrown/web_lectures/cache/
qui est, des blocs non contigus de mémoire système peut carte du même bloc de cache.
Comment sont créées les relations entre les blocs non contigus sur la mémoire système et les blocs de cache. J'ai lu quelque part que ces relations sont basées sur les avancées du cache, mais je ne peux trouver aucune information sur les foulées du cache autres que celles qui existent.
Qui a raison? Si le striding est réellement utilisé, comment fonctionne le striding et ai-je le nom technique correct? Comment puis-je trouver la foulée pour un système particulier? est-il basé sur le système de pagination? Quelqu'un peut-il me diriger vers une url qui explique le cache associatif N-way dans les moindres détails?
voir aussi: http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Memory/set.html
Comment faut-il décider quels morceaux de mémoire système à carte à laquelle le cache se bloque? Si j'écris un programme, comment puis-je déterminer la largeur de la mémoire système qui s'aligne avec le cache? –
La mémoire cache le décide en fonction d'un algorithme de remplacement. Il utilise généralement une forme de pseudo-LRU. Ceci est géré par le matériel et il est hors de votre contrôle. Vous pouvez généralement déterminer les paramètres de la mémoire cache à partir de la fiche de données du matériel ou du guide de l'utilisateur. Il s'agit rarement d'un problème logiciel, sauf si vous utilisez un code intégré qui doit fonctionner avec un budget horaire très serré. – sybreon
Je ne suis pas concerné par les blocs de mémoire système qui sont expulsés, mais plutôt par les blocs de mémoire système qui sont mappés sur les blocs de cache. C'est-à-dire, quelle est la maths qu'une puce x86 utilise pour décider que les emplacements de mémoire système 1000,2000, et 3000 doivent mapper au bloc de cache 5. J'écris un logiciel dont le but est de manipuler le cache et donc il est purement concerné par mappage de cache. J'ai écrit un programme pour déterminer cette cartographie par expérimentation, mais je veux un article ou un article pour vérifier mes résultats. –