答案 0 :(得分:15)
似乎是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
“执行典型指令”= 1 ns的部分意味着1 GHz CPU(当然假设有效的流水线操作)。
我不知道他在哪里获取这些信息,但我相信Peter Norvig是可靠的: - )
答案 1 :(得分:3)
公平摘要here,有些不精确。当写入(2年以前)和当时的中档PC时,它估计:内存访问,60ns; L1缓存,10ns; L2缓存,20-30ns(无估计L3缓存访问时间)。当然,这取决于争用和访问模式,所有这些都取决于批次(因为缓存层通常由较慢的内存“按行”填充,如果您访问地址X然后地址X + 1,则第二次访问可能因为第一次访问启动了缓存行填充,所以要快一点。
当然,高端,经过良好调整的服务器速度要快得多(这些机器在内存访问延迟方面的相对差异通常比“原始”CPU速度大得多)。
答案 2 :(得分:2)
该表中有nice visualization个数据发布在github.org上。它们还对那里的时间值进行了“人类尺度”重新解释。