Chabinoux a écrit :
j'ai jamais dit que le L3 est désactivé. le hardware continue à l'utiliser mais windows se limite à l'utilisation du cache L2 qu'on lui spécifie il n'enverra donc pas suffisament d'instruction pour dépasser la taille du cache. de plus dois-je vous rappellez que tout le monde n'a pas de L3. donc si windwos envoi trop de données ou d'instructions pour le L2 le CPU est surchargé et le surplus d'instruction est stocké dans des caches plus lent (chipset, ram,...)
si la taille n'est pas spécifié windows ne vérifie pas si le cache L2 est saturé ou pas d'où l'utilité du L3. si la taille du L2 est spécifié windwos utilisera intelligement le L2 donc le L3 sera inutile pour lui mais continura à être utiliser par le cpu pour stocker d'autre chose (bios pci, prefetch) donc sont utilisation sera également meilleure.
pour ceux qui n'ont pas de L3 les performances seront légèrement meilleures que si windows sature systématiquement le L2.
PS: linux fait une distinction entre les P4 pour la gestion du L2 par exemple, pas windows. -linux : celeron P4<P4A=P4B=P4C=P4EE(mais il tient compte du L3)<P4E
-windows : celeron P4=P4A=P4B=P4C=P4EE(ne tient pas compte du L3)=P4E
c'est pour cela que le P4EE et son cache L3 est parfois avantagé ou d'autre fois à égalité avec les P4C : sa dépend de la saturation ou non du L2 par l'application utilisée.
Ex: -une application aura besoin de 100ko de L2. elle ne sature pas le L2 du P4C ni celui du P4EE. leur performance dans cette application seront égales.
-une application utilise jusqu'à 600Ko de L2. le P4C est dépasser il doit stocké dans des caches lents le P4EE utilise son L3. le P4EE est plus performant.
-une application utilise jusqu'à 600ko de L2 mais windows connait la taille du L2. windows limite l'utilisation de L2 par l'application. Pourtant le p4EE sera plus performant. le L2 contient aussi les bios des périphériqes PCI AGP ou des résultats d'instruction... si windows réserve le L2 toutes ces informations passe dans le L3 du P4EE mais recte dans L2 du P4C ou passe en RAM. ce qui fait que le système est globalement plus performant avec le P4EE qui garde tout son L2 disponible et les informations du système dans un cache rapide. ce qui fait au final que les P4EE sont optimisés pour les calculs intensifs et répétitifs puisqu'il ne pénalise jamais le reste du système lors de ces calculs qui saturent systématiquement le L2.
PS bis: augmenter le cache L2 revient à ajouté du L3 mais le L2 étant plus rapide on gagne en performance. le problème restant le même si L2 est saturé mais à 1Mo de L2 rare sont les applications qui peuvent le saturer.
j'espère que c'est plus clair maintenant
|
STOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOP !
Le cache CPU n'est pas une mémoire utilisée comme une RAM. Que nenni. C'est un système d'accélération d'accès mémoire basé sur plusieurs paradigmes :
-proba spatiale : si une donnée X est demandée, y a de grandes chances qu'on demande la donnée X+1 après.
-Proba temporelle : me souvient plus de celle la, désolé
En clair : ce n'est qu'un espace de stockage totalement invisible à l'utilisateur, destiné à accélérer les accès mémoire de facon significative. Après, il y a les caches inclusifs, exclusifs, write-through, write-back... bref.
De plus, le cache L2 est totalement transparent au multitache. Comme il travaille en collaboration étroite avec le CPU, ce dernier ne faisant que des accès mémoire, multitache ou pas, une application n'a JAMAIS besoin d'une certaine quantité de Cache ( L1, L2 ou L3). Non. C'est juste utilisé dynamiquement, de facon totalement transparente, et, pour être bien clair, aucun programme ne touche au cache CPU directement comme une mémoire. C'est même impossible.
L'OS est aussi inclus dans ces programme ( un OS n'est qu'un programme à la base ).
Parti de la, dire que une application a besoin de 100Ko de L2 est complètement débile. L'application, elle a besoin de tant de RAM. Le cache CPU, elle peut tourner sans, quoiqu'il arrive. Vu que pour elle, il n'existe pas et elle fait référence à la mémoire de facon constante.
Donc, le post de Chabinoxu est, jusqu'a preuve du contraire, de la science-fiction totale et dfinitve. Surtout, ne croyez pas qu'une application a besoin de x Ko de cache CPU : c'est complètement faux.
Pour info personelle, comment ca marche le cache CPU, simplement :
-Le CPU demande une info à la mémoire, disons l'info X.
-l'info est aps dans le cache, on fait l'accès
-comme l'info est petite, on peut en rapatrier une tripotée en même temps. Alors on le fait et on le met dans le cache CPU. Alors, dans le cache, il y a l'info X, X+1, X+2, X+3...x+8 (mettons).
-Le CPU va recevoir l'info X dans un temps long ( normal, on a fait un accès mémoire, c'est très couteux, disons... 1 000 cycles CPU (j'exagère).
-Le CPU bosse et demande l'info X+1 ( probabilité spatiale).
-On regarde dans le cache et... POF ! elle y est l'info ! on la rapatrie directement au CPU sans rien demander à la mémoire. Cout : 3 cycles.
-Le CPU continue...
Bref, la mémoire cache, en simplifié, c'est ca.
Message édité par Tetedeiench le 20-06-2004 à 21:50:56