我问有关Haswell Microarchitetcure(Intel Xeon E5-2640-v3 CPU)的问题。从CPU的规格和其他资源中,我发现有10个LFB,超级队列的大小是16。我有两个与LFB和SuperQueues有关的问题:
1)系统可以提供的最大内存级别并行度是10还是16(LFB或SQ)?
2)根据一些消息来源,每个L1D未命中都记录在SQ中,然后SQ分配行填充缓冲区,在其他一些消息来源中,他们指出SQ和LFB可以独立工作。您能否简要说明一下SQ的工作方式?
这是SQ和LFB的示例图(不适用于Haswell)。
参考文献:
https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf
http://www.realworldtech.com/haswell-cpu/
最佳答案
对于(1),在逻辑上,最大并行度将受到流水线的最小并行部分(即10个LFB)的限制,这对于禁用或无能为力的需求负载并行性可能完全正确。实际上,一旦预加载至少部分地帮助了您的负载,一切都会变得更加复杂,因为这样可以使用L2和RAM之间更宽的队列,这可以使观察到的并行度大于10。最实际的方法可能是直接测量:测量到RAM的延迟以及观察到的吞吐量,您可以为任何特定负载计算有效的并行度。
对于(2),我的理解是相反的:L1中的所有需求未命中首先分配到LFB中(除非它们当然命中了现有LFB),然后可能涉及“超队列”(或称为“超队列”)天),如果他们在缓存层次结构中也错过了更高的排名。您所包含的图似乎证实了:从L1的唯一路径是通过LFB队列。