12
votes

Combien de temps faut-il pour chercher un mot de la mémoire?

Prendre Le conseil de Peter Norvig , je réfléchis à la question suivante:

Combien de temps faut-il pour chercher un mot de la mémoire, avec et sans cache miss?

(assumer le matériel et l'architecture standard. Pour simplifier les calculs, assumez une horloge de 1 GHz)


0 commentaires

3 Réponses :


18
votes

semble être comme norvig répond à cela lui-même :

execute typical instruction         1/1,000,000,000 sec = 1 nanosec
fetch from L1 cache memory          0.5 nanosec
branch misprediction                5 nanosec
fetch from L2 cache memory          7 nanosec
Mutex lock/unlock                   25 nanosec
fetch from main memory              100 nanosec
send 2K bytes over 1Gbps network    20,000 nanosec
read 1MB sequentially from memory   250,000 nanosec
fetch from new disk location (seek) 8,000,000 nanosec
read 1MB sequentially from disk     20,000,000 nanosec
send packet US to Europe and back   150 milliseconds = 150,000,000 nanosec 


3 commentaires

Qu'en est-il de la justification de la réponse? Les nombres durs sont, plus ou moins, connus.


@Yuval - bonne question. Mais vous n'avez pas spécifié dans votre question initiale que vous êtes intéressé par le «pourquoi», seulement le «quoi». En outre, quel type de justification cherchez-vous ici? Expliquer pourquoi la mémoire principale prend 100 NS? Comme pour expliquer tous les circuits logiques jouant une partie de jeu?


Je trouve le mutex contre la mémoire principale et la mémoire principale intéressante et surprenante. J'aurais deviné que le ce qui est - à au moins quatre fois plus lent serait l'inverse. J'aurais pensé qu'un mutex-verrouillage typique nécessite une récupération de mémoire principale. De toute évidence, je me trompe - je vais devoir ajuster certains de mes points de vue sur les frais généraux multitâches, je suppose.



3
votes

Résumé juste ici , avec une certaine imprécision . Quand écrit (il y a plus de 2 ans) et pour un PC de milieu de gamme de l'époque, il estimé: accès à la mémoire, 60ns; L1 cache, 10ns; Cache L2, 20-30ns (aucune estimation des temps d'accès au cache L3). Tout cela varie bien sûr au lot , en fonction des modèles de conflit et d'accès (car les couches de cache sont généralement remplies "par des lignes" de la mémoire plus lente, si vous accédez à l'adresse x, adresse x + 1 Le deuxième accès peut être un peu plus rapide car le remplissage de la ligne de cache a été démarré par le premier accès).

et, bien sûr, un serveur haut de gamme et bien réglé sera beaucoup plus rapide (les différences relatives entre de telles machines dans la latence d'accès à la mémoire sont généralement beaucoup plus grandes que celles des vitesses de processeur «brutes»).


0 commentaires

2
votes

Il y a un Nice Visualisation des données de ce tableau publiées sur github.org ont également une "échelle humaine" réinterprétation des valeurs de temps là-bas.

Entrez la description de l'image ici


3 commentaires

C'est une vidéo plutôt bien connue sur la visualisation de ce qu'est une nanoseconde est Grace Hopper - Nanosecondes . La backstory est qu'à la fin des années 60 ou quelque chose qu'elle voulait faire une affaire pour laquelle nous devons faire des copeaux de processeur plus petits.


La vidéo n'est pas longue disponible.


YouTube.com/results?search_query=grace+Hopper+Nanoseconde