Architecture 从内存中提取一个单词需要多少时间?

Architecture 从内存中提取一个单词需要多少时间?,architecture,hardware,computer-architecture,Architecture,Hardware,Computer Architecture,考虑到这一点,我正在思考一个问题: 从内存中提取一个单词需要多少时间,有没有缓存丢失 (假设标准硬件和架构。为了简化计算,假设1Ghz时钟)看起来像诺维格: 表示“执行典型指令”=1ns的部分意味着1GHz的CPU(当然,假设有效的流水线) 我不知道他从哪里得到这些信息,但我相信彼得·诺维格是可靠的:——)公正的总结,有些不精确。当写下(2年多前)和当时的一台中端PC时,它估计:内存访问,60纳秒;一级缓存,10ns;二级缓存,20-30ns(无三级缓存访问时间估计)。当然,根据争用和访问模式,

考虑到这一点,我正在思考一个问题:

从内存中提取一个单词需要多少时间,有没有缓存丢失

(假设标准硬件和架构。为了简化计算,假设1Ghz时钟)

看起来像诺维格:

表示“执行典型指令”=1ns的部分意味着1GHz的CPU(当然,假设有效的流水线)

我不知道他从哪里得到这些信息,但我相信彼得·诺维格是可靠的:——)

公正的总结,有些不精确。当写下(2年多前)和当时的一台中端PC时,它估计:内存访问,60纳秒;一级缓存,10ns;二级缓存,20-30ns(无三级缓存访问时间估计)。当然,根据争用和访问模式,这一切都会有很大的不同(因为缓存层通常是由较慢内存中的“行”填充的,如果您访问地址X,那么地址X+1,第二次访问可能会快一点,因为缓存线填充是由第一次访问开始的)

当然,一个高端的、经过良好调整的服务器会快得多(这类机器在内存访问延迟方面的相对差异通常比“原始”CPU速度方面的差异要大得多)。

在github.org上发布的表中有大量数据,它们对时间值也有“人的尺度”的重新解释


这个答案的理由是什么?硬数字或多或少是已知的。@Yuval-好问题。但是你在最初的问题中没有明确说明你对“为什么”感兴趣,只对“什么”感兴趣。还有,你到底在寻找什么样的理由?解释为什么主内存需要100纳秒?在解释所有逻辑电路的作用时,我发现互斥与主存的对比非常有趣和令人惊讶。我猜速度至少慢四倍的是另一种情况。我原以为一个典型的互斥锁需要一个主内存获取。很明显,我错了——我想我必须调整一下我对多任务开销的一些看法。这是一段非常有名的视频,讲述了纳秒是什么。背后的故事是,在60年代末,她想证明为什么我们需要制造更小的CPU芯片。视频不再可用。
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