4

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

Répondre

6

Quand j'enseigne l'architecture de mémoire cache à mes étudiants, je commence avec un cache en correspondance directe. Une fois cela compris, vous pouvez penser à des caches associatifs à N-way en tant que blocs parallèles de cache mappé directement.Pour comprendre que les deux figures peuvent être correctes, vous devez d'abord comprendre le but des caches set-assoc.

Ils sont conçus pour contourner le problème de «l'aliasing» dans un cache mappé directement, où plusieurs emplacements de mémoire peuvent correspondre à une entrée de cache spécifique. Ceci est illustré dans la figure Wikipedia. Ainsi, au lieu d'expulser une entrée de cache, nous pouvons utiliser un cache N-way pour stocker les autres emplacements de mémoire «aliasés». En effet, le diagramme de secrets matériels serait correct en supposant que l'ordre de remplacement est tel que le premier morceau de la mémoire principale est mappé à Way-1 et ensuite le deuxième morceau à Way-2 et ainsi de suite. Cependant, il est également possible d'avoir la première partie de la mémoire principale répartie sur plusieurs façons.

Espérons que cette explication aide! PS: les emplacements de mémoire contigus ne sont nécessaires que pour une seule ligne de cache, en exploitant la localité spatiale. En ce qui concerne la dernière partie de votre question, je crois que vous pouvez confondre plusieurs concepts différents.

+0

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? –

+0

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

+0

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. –

0

La politique de remplacement détermine où dans le cache une copie d'une entrée particulière de la mémoire principale ira . Si la politique de remplacement est libre de choisir n'importe quelle entrée dans le cache pour contenir la copie, le cache est appelé entièrement associatif. À l'autre extrême, si chaque entrée dans la mémoire principale peut aller dans un seul endroit dans le cache, le cache est mappé directement. De nombreux caches mettre en œuvre un compromis dans lequel chaque entrée principale mémoire peut aller à l'une des places N dans le cache, et sont décrits comme N-way set associative

Questions connexes