2010-03-01 23 views
15

Quelle est la vitesse d'accès au cache pour les processeurs modernes? Combien d'octets peuvent être lus ou écrits depuis la mémoire chaque fois que l'horloge du processeur est cochée par Intel P4, Core2, Corei7, AMD? S'il vous plaît, répondez avec à la fois théorique (largeur de ld/sd unité avec son débit en uOPs/tick) et les numéros pratiques (même les tests de vitesse memcpy, ou le test de référence STREAM), le cas échéant.Bande passante cache par tick pour les processeurs modernes

PS il est question, liée à la vitesse maximale des instructions charger/stocker dans l'assembleur. Il peut y avoir un taux de chargement théorique (toutes les instructions par tick sont les plus larges), mais le processeur ne peut en donner qu'une partie, une limite de chargement pratique.

+0

@osgx: Déplacer vers serverfault etc, pas une question de programmation est-ce? – TFD

+9

@TFD, non, ceci est * très * lié à la programmation. –

+0

Consultez «Analyse de la bande passante du cache sur l'architecture Intel Core 2 » par Robert Schone, Wolfgang E. Nagel et Stefan Pfleurger, Centre d'information et de calcul haute performance, Technische Universität Dresden, 01062 Dresde, Allemagne Dans cet article, les bandes passantes mesurées entre les cœurs de calcul et les différents caches sont présentées. Le banc d'essai STREAM1 est l'un des noyaux les plus utilisés par les scientifiques pour déterminer la bande passante mémoire . Pour un aperçu plus approfondi, le benchmark STREAM a été repensé pour obtenir les valeurs exactes pour les petits problèmes. – osgx

Répondre

7

Pour nehalem: rolfed.com/nehalem/nehalemPaper.pdf

Each core in the architecture has a 128-bit write port and a 
128-bit read port to the L1 cache. 

128 bits = 16 octets/lecture horloge ET 128 bits = 16 octets/horloge écrire (je peux combiner lire et écrire en cycle unique?)

The L2 and L3 caches each have a 256-bit port for reading or writing, 
but the L3 cache must share its port with three other cores on the chip. 

Les ports de lecture et d'écriture Can L2 et L3 peuvent-ils être utilisés dans une horloge unique?

Each integrated memory controller has a theoretical bandwidth 
peak of 32 Gbps. 

Latency (horloge tiques), certains mesurés par CPU-Z latencytool ou par lat_mem_rd de lmbench - les deux utilisations à pied de liste chaînée longue pour mesurer correctement les noyaux modernes hors de commande comme Intel Core i7

  L1  L2  L3, cycles; mem    link 
Core 2  3  15  --   66 ns   http://www.anandtech.com/show/2542/5 
Core i7-xxx 4  11  39   40c+67ns   http://www.anandtech.com/show/2542/5 
Itanium  1  5-6 12-17  130-1000 (cycles) 
Itanium2 2  6-10 20   35c+160ns  http://www.7-cpu.com/cpu/Itanium2.html 
AMD K8   12     40-70c +64ns  http://www.anandtech.com/show/2139/3 
Intel P4 2  19  43   200-210 (cycles) http://www.arsc.edu/files/arsc/phys693_lectures/Performance_I_Arch.pdf 
AthlonXP 3k 3  20     180 (cycles)  --//-- 
AthlonFX-51 3  13     125 (cycles)  --//-- 
POWER4  4  12-20 ??   hundreds cycles --//-- 
Haswell  4  11-12 36   36c+57ns   http://www.realworldtech.com/haswell-cpu/5/  

Et bonne source sur les données de latence est 7cpu web-site, par exemple pour Haswell: http://www.7-cpu.com/cpu/Haswell.html

Plus sur le programme lat_mem_rd est dans man page ou here on SO.

+3

Répondre à votre propre question? Vous n'avez toujours pas expliqué ce que vous essayez d'obtenir avec cette information. Vous pouvez obtenir une meilleure réponse si vous le faites. –

+0

J'étudie les architectures de cpu et je veux les comparer. – osgx

6

Les lectures/écritures les plus importantes sont une charge/un stockage SSE de 128 bits (16 octets). Les caches L1/L2/L3 ont des bandes passantes et des latences différentes et sont bien sûr spécifiques à l'unité centrale. La latence L1 typique est de 2 à 4 horloges sur les processeurs modernes, mais vous pouvez généralement émettre 1 ou 2 instructions de chargement par horloge.

Je soupçonne qu'il y a une question plus spécifique qui se cache quelque part ici - qu'est-ce que vous essayez réellement d'accomplir? Voulez-vous juste écrire le memcpy le plus rapide possible?

+0

Merci. Combien de charges SSE peuvent être émises par horloge? Je veux trouver la charge maximale/bande passante de stockage pour plusieurs générations de x86. – osgx

+1

@osgx - cela dépend de la CPU - Core 2 et Core i7 peuvent tous les deux * émettre * 2 charges SSE par horloge –

+0

À propos de memcpy le plus rapide - Oui, non seulement le memcpy, mais aussi une écriture simple (plus proche de STREAM). la question peut être considérée comme "quel est le plus rapide théorique" (sans implémentation réelle) et non seulement pour les très grandes données (comme d'habitude), mais aussi pour les petites (jusqu'à L1/2, jusqu'à L2/2, Taille L3/3). – osgx