On dirait Norvig answers this himself:
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
La partie où il est dit "instruction d'exécution de type" = 1 ns implique un processeur de 1 GHz (en supposant un pipelining efficace, bien sûr).
Je ne sais pas où il prend cette information, mais je confiance Peter Norvig être :-) fiable
Qu'en est-il une justification de la réponse? Les nombres durs sont plus ou moins connus. –
@Yuval - bonne question. Mais vous n'avez pas précisé dans votre question initiale que vous êtes intéressé par le "pourquoi", seulement le "quoi". Aussi, exactement quel genre de justification cherchez-vous ici? Expliquer * pourquoi * la mémoire principale prend 100 ns? Comme pour expliquer tous les circuits logiques jouant partie? –
Je trouve le mutex vs principal-memory-fetch intéressant et surprenant. J'aurais deviné que ce qui est au moins quatre fois plus lent serait l'inverse. J'aurais pensé qu'un Mutex-lock typique nécessiterait un fetch de mémoire principale. Évidemment, je me trompe - je vais devoir ajuster certaines de mes vues sur les frais généraux multitâches, je suppose. – Steve314