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?
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?
Réponses:
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).
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).
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.