直接将写在实验报告里的那段放进去就算了,好累。
3.3(2分)对最优分块大小的分析
实验表明,分块大小为 32 时性能最好。这个结果和你的预期一致吗? 不一致 。如果不一致,其原因在于 使用perf工具对编译器优化参数为O0、O2下,m0/4、m0/2、m0三种分块大小的运行情况进行了查看,查看的参数主要为L1 dcache miss、dTLB miss。结果显示:
- A.在O2情况下,三种分块大小下的L1 dcache miss、dTLB miss都比O0情况下有明显减少;
- B.无论在O0还是O2情况下,m0分块大小下的 L1 dcache miss均比另外两种分块大小明显减少,这和预期是一致的;
- C.在O0情况下,三种分块大小的dTLB miss是大致相等的,但在O2情况下dTLB miss情况为m0/2优于m0/4,而m0/4优于m0。
所以之所以最终结果不符合预期,是因为m0/2方案在TLB miss和cache miss的综合作用下,比cache miss最优的m0分块方案要更好。编译器在O2优化下,为何能使TLB miss明显减少,推测可能是与TLB控制指令或预取指令有关。