Existe-t-il une correspondance entre la taille du cache et la latence d'accès?

9

Existe-t-il une correspondance entre les tailles de cache et la latence d'accès? Toutes choses étant égales par ailleurs, un cache plus volumineux fonctionne-t-il plus lentement? Si oui, pourquoi? Combien plus lent?

ivanmp
la source
1
Si vous souhaitez explorer certains compromis dans la conception du cache, HP a développé l' outil CACTI qui fournit des estimations de latence et d'utilisation de l'énergie en fonction des caractéristiques de conception. Une interface Web pour la version 5.3 est également disponible .
Paul A. Clayton

Réponses:

5

Les articles entre vos mains sont plus rapides d'accès que les articles dans vos poches, qui sont plus rapides d'accès que les articles de votre placard, qui sont plus rapides d'accès que les articles de Digikey. Chaque type de stockage successif que j'ai répertorié est plus grand mais plus lent que le précédent.

Alors, ayons le meilleur des deux mondes, faisons vos mains aussi grandes qu'un entrepôt Digikey! Non, ça ne marche pas, car maintenant ils ne sont plus vraiment des mains. C'est un boulet de canon qui vous alourdit.

La raison pour laquelle un stockage plus important est plus lent est la distance . Un stockage plus important est plus éloigné de vous en moyenne. Cela est vrai pour les éléments physiques et pour la RAM.

La mémoire de l'ordinateur occupe de l'espace physique. Pour cette raison, des mémoires plus grandes sont physiquement plus grandes, et certains emplacements dans cette mémoire vont être physiquement plus éloignés. Les choses éloignées prennent plus de temps à accéder, en raison des limitations de vitesse. Dans le cas de vos poches et de Digikey, les limites de vitesse sont la vitesse de vos bras et les limites de vitesse sur autoroute.

Dans le cas de la RAM, les limites de vitesse sont la vitesse de propagation des signaux électriques, le retard de propagation des portes et des pilotes et l'utilisation courante des horloges synchrones. Même si l'argent n'était pas un objet et que vous pouviez acheter autant que vous le souhaitez de la technologie RAM la plus rapide disponible aujourd'hui, vous ne pourriez pas en bénéficier. Disposez une feuille de cache L1 au format A4 si vous le souhaitez et placez votre processeur au centre. Lorsque le processeur souhaite accéder à une certaine mémoire dans le coin de la mémoire, il faudra littéralement une nanoseconde pour que la demande y parvienne, et une nanoseconde pour qu'elle revienne. Et cela n'inclut pas tous les délais de propagation et les portes et les pilotes. Cela va sérieusement ralentir votre processeur 3GHz.

La logique synchrone étant beaucoup plus facile à concevoir que la logique asynchrone, un «bloc» de RAM sera cadencé avec la même horloge. Si vous voulez faire de toute la mémoire un cache L1, vous devez synchroniser l'ensemble avec une horloge lente pour faire face au pire des cas de l'emplacement le plus éloigné en mémoire. Cela signifie que les emplacements de mémoire distants retiennent désormais les emplacements locaux, qui auraient pu être cadencés plus rapidement. Donc, la meilleure chose à faire serait de zoner la mémoire. La section la plus proche et la plus petite du cache utiliserait l'horloge la plus rapide. La section suivante la plus proche et la plus petite utiliserait une horloge légèrement plus lente, etc.

Et maintenant, vous avez des caches L1 et L2 et de la RAM.

Ce qui nous amène à la prochaine raison, la consommation d'énergie.

Le cache consomme en fait une quantité importante d'énergie. Non seulement la mémoire elle-même, mais toute la logique qui l'entoure qui gère le mappage entre les lignes de cache et la mémoire principale. L'augmentation des performances de cette logique supplémentaire peut entraîner une augmentation de la consommation d'énergie. Désormais, pour certaines applications (mobiles, embarquées), vous êtes encore plus incité à garder le cache petit.

Voir les compromis de conception de cache pour l'optimisation de la puissance et des performances: une étude de cas (Ching-Long Su et Alvin M. Despain, 1995).

Rocketmagnet
la source
1
+1 J'aime votre réponse. Accède à tous les points pertinents et le sauvegarde également. Facile à lire
Gustavo Litovsky
Est-ce correct? la réponse est fondée sur le retard de la vitesse de la lumière d'un pouce par rapport à plusieurs pouces?
Andyz Smith
1
Cette réponse est bonne comme un aperçu général, mais je soupçonne qu'elle ne répond pas à la question initiale. Il ne faut pas être un expert uArch pour se rendre compte que le cache au format A4 n'est pas pratique. Je crois qu'OP a demandé une augmentation raisonnable de la taille du cache et comment cette augmentation affectera la latence de l'accès au cache.
Vasiliy
1
@AndyzSmith - C'est une exagération grossière et une simplification excessive, mais je pense que cela fait comprendre le fait que, à un moment donné, le cache L1 ne peut pas être agrandi indéfiniment. À un moment donné, les lois de la physique entrent en jeu et la ralentissent.
Rocketmagnet
Le retard d'un signal sur puce n'est pas la vitesse de la lumière, c'est une valeur plus compliquée calculée en considérant la capacité nette / fil plus la grille entraînée comme un réseau RLC. Ce n'est pas assez long pour être une ligne de transmission. Plus le filet est long, plus la porte de conduite doit être grande ou vous devez insérer des tampons comme répéteurs. Tout cela consomme également plus d'énergie.
pjc50
4

En laissant de côté tous les facteurs économiques / performances / consommation d'énergie, la réponse à votre question est: cela dépend de nombreux facteurs micro architecturaux.

À titre d'exemple, voir cette référence - la latence d'accès L1 mesurée pour tous les processeurs testés est de 4 cycles d'horloge. Les fréquences des processeurs sont presque les mêmes, mais les tailles du cache L1 diffèrent jusqu'à un facteur 3.

La raison de la latence constante vers L1 sur plusieurs processeurs différents dans le test ci-dessus est enracinée dans la micro-architecture du cache: l'accès au cache lui-même (récupération des données de la mémoire) ne prend qu'un seul cycle d'horloge. Trois cycles supplémentaires sont consacrés au décodage de l'accès, à la vérification de la présence de données et plus encore ... Le nombre d'étapes supplémentaires est le même sur tous les processeurs testés, donc les latences d'accès sont les mêmes.

Malgré l'exemple ci-dessus, il ne faut pas conclure que la latence du cache est indépendante de la taille du cache. Si quelqu'un tentait d'implémenter un cache L1 ridiculement grand, la logique qui effectue toutes les opérations requises pour une lecture de cache deviendrait également volumineuse. À un certain point, le retard de propagation à travers toute cette logique serait trop long et les opérations qui n'avaient pris qu'un seul cycle d'horloge auparavant devraient être divisées en plusieurs cycles d'horloge. Cela augmentera la latence.

En supposant que le cache en question soit implémenté dans SRAM, les modules les plus affectés par la taille du cache sont: les décodeurs de lignes et les multiplexeurs. Cependant, même les amplis de détection seront affectés pour les très grands caches: une plus petite oscillation de tension sur une ligne de bit en raison d'une capacité plus élevée nécessitera un amplificateur de détection "plus fort". Dit que, l'effet le plus grave sur la vitesse logique sera ajouté par la capacité d'interconnexion des fils - cette capacité a plus qu'une dépendance linéaire sur la taille de la SRAM. Les détails exacts sont spécifiques à l'implémentation.

Maintenant, les caches L1 sont assez stables dans leurs latences car leurs performances sont les plus cruciales. Si vous essayez d'analyser les caches L2 et L3, l'image complique beaucoup.

L'image se complique beaucoup plus lorsque vous considérez les processeurs multicœurs - ils ont une logique supplémentaire pour assurer la cohérence du cache . Cela conduit à un facteur supplémentaire qui affecte la latence de l'accès au cache: l'historique des accès à la mémoire de tous les cœurs.

Sommaire

Comme vous pouvez le voir, votre question est loin d'être anodine et ne peut recevoir de réponse complète. Cependant, si vous considérez les caches économiquement et les performances comme préférables, je dirais que leur taille n'affectera pas la latence de manière appréciable.

Pour les lecteurs intéressés:

Cette référence est une analyse très approfondie des facteurs de performance des processeurs modernes. Il y a beaucoup de matériel lié au cache là-dedans. Nécessite une compréhension approfondie de l'architecture informatique et des principes de la micro-architecture (alternativement - un bon résumé des sujets que vous devez connaître pour devenir un professionnel dans ce domaine).

Vasiliy
la source
Merci pour la réponse! Les réponses de @ Rocketmagnet sont à peu près complémentaires. J'espère que je pourrais choisir les deux. J'ai déjà ma copie de la référence citée et j'ai été très intéressé par le sujet récemment, d'où la question.
ivanmp
pourquoi la logique pour effectuer une opération de lecture dépend-elle de la taille du cache. ou s'il n'y a pas de saut discret, quelle est la formule pour le temps d'accès par rapport à la taille?
Andyz Smith
pouvez-vous être précis sur le composant: "La récurrence critique est alors un additionneur, un décodeur, la ligne de mots SRAM, la ou les lignes de bits SRAM, les amplis de détection, les multiplexeurs de direction d'octets et le bypass multiplexeurs. " fait que la logique devient grande? en.wikipedia.org/wiki/Sum_addressed_decoder
Andyz Smith
@AndyzSmith, la formule du temps d'accès en fonction de la taille ne peut être donnée que par quelqu'un qui conçoit et simule le cache. Dans la référence que j'ai publiée, vous pouvez voir qu'il faut 4 cycles d'horloge pour obtenir des données de L1, mais personne ne tente d'estimer les relâches associées à ces lectures. Demander une formule n'est pas une question pratique sans beaucoup d'informations supplémentaires spécifiques à la mise en œuvre.
Vasiliy
1
@AndyzSmith, en supposant que le cache en question soit implémenté dans SRAM, les modules les plus affectés par la taille du cache sont: les décodeurs de lignes et les multiplexeurs. Cependant, même les amplis de détection seront affectés pour les très grands caches: une plus petite oscillation de tension sur une ligne de bits en raison d'une capacité plus élevée -> un amplificateur de détection "plus fort". Dit que, l'effet le plus grave sur la vitesse logique sera ajouté par la capacité d'interconnexion des fils - cette capacité a plus qu'une dépendance linéaire sur la taille de la SRAM. Encore une fois, les détails sont spécifiques à l'implémentation.
Vasiliy
3

Ingénieur de test de cache CPU ici - Dave Tweed dans les commentaires a les bonnes explications. Le cache est dimensionné pour maximiser les performances au prix attendu du processeur. Le cache est généralement le plus grand consommateur d'espace de matrice et sa taille fait donc une grande différence économique (et de performances).

Jetez un œil à la page de la famille de processeurs Intel Ivy Bridge: http://ark.intel.com/products/codename/29902/Ivy-Bridge

Le haut de gamme Xeon est livré avec 30 Mo de cache, a 12 cœurs et coûte environ 2700 $. L'i3 inférieur avec 3 Mo de cache (i3-3217) ne coûte que 500 $ pour un ordinateur portable entier (je ne le trouve pas individuellement).

Le Xeon offre les performances ultimes, mais il coûte également plus cher à fabriquer et à tester. L'i3 est beaucoup moins cher mais le compromis est une taille de puce plus petite dont le cache est la plus grande partie.

xyzio
la source
2
Réponse très intéressante. Mais comme je l'ai dit dans la question, je ne cherche pas la réponse économique et évidente. Ce que j'essaie de comprendre se rapporte aux performances impliquées dans l'accès à un très grand cache (> 512 Mo). La taille dégraderait-elle les performances du cache?
ivanmp