Ell*_*sky 5 optimization performance intel cpu-architecture micro-architecture
假设我们有这个伪代码,但它ptr不在任何 CPU 缓存中:
prefetch_to_L1 ptr
/* 20 cycles */
load ptr
Run Code Online (Sandbox Code Playgroud)
由于ptr在主存中,预取操作的延迟(从预取指令解码到ptr在L1高速缓存中可用)远大于20个周期。正在进行的预取是否会减少负载的延迟?或者预取除非在加载之前完成,否则就没用吗?
天真地(对内存系统如何工作没有太多了解)我可以看到它以两种方式工作:
其中之一是正确的吗?还有我没有想到的第三种选择吗?我对 Skylake 特别感兴趣,但也只是想建立一些一般的直觉。