Performance 缓存如何提高管道处理器的性能?

Performance 缓存如何提高管道处理器的性能?,performance,caching,architecture,pipeline,Performance,Caching,Architecture,Pipeline,我知道访问缓存要比访问主内存快得多,我对所有这些未命中率和未命中惩罚有一个基本的概念 但我突然想到:缓存在管道处理器中如何有用 根据我的理解,单个时钟周期所用的时间是所有进程中最长时间的下限。就像访问缓存需要1n,访问主存需要10n,那么时钟周期时间至少应该大于10n。否则,该任务无法在需要时完成。。然后,即使缓存访问完成,指令仍必须在那里等待,直到下一个时钟周期 我想象了一个基本的5阶段流水线过程,包括指令获取、解码、执行、内存访问和写回 我完全误解了什么吗?或者,在现实中,我们有一个非常复杂

我知道访问缓存要比访问主内存快得多,我对所有这些未命中率和未命中惩罚有一个基本的概念

但我突然想到:缓存在管道处理器中如何有用

根据我的理解,单个时钟周期所用的时间是所有进程中最长时间的下限。就像访问缓存需要1n,访问主存需要10n,那么时钟周期时间至少应该大于10n。否则,该任务无法在需要时完成。。然后,即使缓存访问完成,指令仍必须在那里等待,直到下一个时钟周期

我想象了一个基本的5阶段流水线过程,包括指令获取、解码、执行、内存访问和写回

我完全误解了什么吗?或者,在现实中,我们有一个非常复杂的管道,其中内存访问被分解为几个部分,比如缓存检查和主内存访问,这样,如果我们受到影响,我们就可以跳过下一个周期?但是如果前一条指令没有跳过一个周期,而当前指令没有跳过一个周期,那么也会出现问题


我在挠头。。。任何解释都将不胜感激

循环时间不受所有过程中最长时间的限制。 实际上,RAM访问可能需要数百个周期。 有不同的处理器体系结构,但典型的数字可能是:

1 cycle to access a register. 
4 cycles to access L1 cache.
10 cycles to access L2 cache.
75 cycles to access L3 cache.
hundreds of cycles to access main memory.
在极端情况下,如果一个计算是内存密集型的,并且经常缺少缓存,那么CPU的利用率将非常低,因为它请求从内存中获取数据,并等待数据可用。另一方面,如果算法需要重复访问完全适合一级缓存的同一内存区域(如反转不太大的矩阵),CPU将得到更好的利用:算法将首先将数据提取到缓存中,算法的其余部分将只使用缓存读取和写入数据值