Question

Qu'est-ce qu'une vitesse d'accès au cache pour les processeurs modernes? Combien d'octets peuvent être lus ou écrits à partir de la mémoire à chaque horloge de processeur à cocher par Intel P4, Core2, Corei7, AMD?

S'il vous plaît, répondez avec à la fois avec des nombres théoriques (largeur de l'unité LD / SD avec son débit dans UOPS / Tick) et des nombres pratiques (même des tests de vitesse MEMCPY, ou des référence en flux), le cas échéant.

PS C'est une question, liée au taux maximal d'instructions de charge / magasin dans l'assembleur. Il peut y avoir un taux de chargement théorique (toutes les instructions par tic sont des charges les plus larges), mais le processeur ne peut donner qu'une partie de telle, une limite pratique de chargement.

Était-ce utile?

La solution

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 / horloge lecture et 128 bits = 16 octets / Clock Write (puis-je combiner lire et écrire en un seul cycle?)

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 L2 et L3 peuvent-ils être utilisés en horloge unique?

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

Latence (horloge tiques), certaines mesurées par CPU-Z latencetool ou par lmbench's lat_mem_rd - les deux utilisent une longue liste de liste liée pour mesurer correctement les noyaux hors service modernes 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 une bonne source sur les données de latence est Site Web 7CPU, par exemple pour Haswell: http://www.7-cpu.com/cpu/haswell.html

En savoir plus sur le programme LAT_MEM_RD est dans son page ou Ici, donc.

Autres conseils

Les lectures / écritures les plus larges sont une charge / magasin SSE 128 bits (16 octets). Les caches L1 / L2 / L3 ont différentes bande passantes et latences et ce sont bien sûr spécifiques au processeur. La latence L1 typique est de 2 à 4 horloges sur des 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 ici quelque part - qu'est-ce que vous essayez réellement? Voulez-vous simplement écrire le MEMCPY le plus rapide possible?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top