2013-08-01 2 views
4

Lorsqu'une ligne de cache sale est vidée (pour une raison quelconque), est-ce que la totalité de la ligne de cache est écrite dans la mémoire ou dans la CPU vers laquelle les mots sont écrits et réduit le nombre d'écritures?Le vidage de la ligne de cache écrit-il toute la ligne dans la mémoire?

Si cela diffère selon les architectures, je suis surtout intéressé à connaître ce pour Blackfin, mais ce serait bien d'entendre les pratiques en x86, ARM, etc ...

Répondre

2

Généralement, si vous avez un tampon d'écriture, il passe à travers le tampon d'écriture (ligne de cache entière). Ensuite, le tampon d'écriture à un certain point termine les écritures à ram. Je n'ai pas entendu parler d'un cache qui garde une trace par élément dans une ligne dont les parties sont sales ou pas, c'est pourquoi vous avez une ligne de cache. Donc, pour les cas que j'ai entendu parler de toute la ligne sort. Un autre point est qu'il n'est pas rare pour la mémoire lente sur le verso d'un cache DDR par exemple, est accessible via une largeur fixe, 32 bits à la fois 64 bits à la fois 128 bits à la fois, ou chaque partie est à cette largeur et il y a plusieurs parties. Ce genre de chose, donc pour éviter une lecture-modification-écriture que vous voulez écrire dans des tailles de largeur de RAM complètes. Les lignes de cache sont des multiples de cela, bien sûr, et l'opportunité de ne pas écrire est là. Aussi, s'il y a ecc sur ce bélier, alors vous devez écrire une ligne ecc entière à la fois pour éviter une écriture en lecture-modification.

Vous auriez besoin d'un bit sale par élément inscriptible dans la ligne de cache, ce qui multiplierait le stockage de bit sale, ce qui pourrait ou non avoir un impact réel sur la taille ou le coût, etc. Cela peut être moins cher de faire une transaction multi-mot plutôt que deux transactions distinctes, donc ce schéma pourrait créer un hit de performance plutôt que boost (même problème dans le tampon d'écriture, au lieu d'une transaction avec une adresse de début et une longueur, maintenant plusieurs transactions).

Il semble juste que beaucoup de travail pour quelque chose qui peut ou ne peut pas entraîner un gain. Si vous en trouvez un qui le fait, veuillez le poster ici.

2

Je dépoussiérer mon ordinateur cobwebby connaissance de l'architecture des cours pris il y a 15 ans - s'il vous plaît soyez gentil si je me trompe totalement. Je semble me souvenir que x86, MIPS et Motorola, toute la ligne est écrite. C'est parce que la ligne de cache est la même que la largeur du bus (sauf dans des circonstances très étranges, comme la vieille ligne 386-SX moisie qui était une architecture 32 bits avec un bus 16 bits), donc il ne sert à rien d'essayer pour faire une optimisation par mot, toute la ligne va être écrite de toute façon.

Je ne peux imaginer aucun scénario dans lequel une architecture matérielle de quelque sorte que ce soit ferait quelque chose de différent, mais j'ai été connu pour avoir tort dans le passé.

Questions connexes