从 AMAT 中寻找平均惩罚

Finding Average Penalty from AMAT

当我只有一个缓存时,我可以计算惩罚。但是当我看到两个并行访问的 L1 缓存(一个用于数据,一个用于指令)时,我不确定该怎么做。当我看到时钟周期而不是实际时间(如 ns)时,我也不确定该怎么做。

如何使用这些新参数计算平均失误惩罚?

我是只使用公式两次然后计算失误惩罚的平均值还是还有更多?

AMAT = hit time + miss rate * miss penalty  

例如我有以下值:

AMAT = 4 clock cycles  
L1 data access = 2 clock cycle (also hit time)  
L1 instruction access = 2 clock cycle (also hit time)  
60% of instructions are loads and stores  
L1 instruction miss rate = 1%  
L1 data miss rate = 3%  

这些值如何适合 AMAT?

在我看来,由于L1 Instruction Cache和L1 Data Cache是​​并行访问的,你应该计算指令的AMAT和数据的AMAT,然后取最大值 作为最终的 AMAT。

在您的示例中,由于数据缺失率高于指令缺失率,您可以认为在 CPU 等待数据期间,它解决了指令缓存中的所有缺失。

如果度量单位是周期,你做同样的事情就好像它是纳秒一样。如果您知道处理器的频率,则可以以纳秒为单位转换回 AMAT。

简答

平均内存访问时间 (AMAT) 通常是通过将指令总数除以服务内存请求所花费的周期总数来计算的。

详情

Computer Architecture a Quantiative Approach, 5th edition 的 B-17 页上,AMAT 定义为:

Average memory access time = % instructions x (Hit time + instruction miss rate x miss penalty) + % data x (Hit time + Data miss rate x miss penalty)`.

正如您在此公式中所见,每条指令都计为一次内存访问,而对数据 (load/store) 进行操作的指令构成一次额外的内存访问。

请注意,使用 AMAT 时有许多简化说明,具体取决于您要执行的性能分析。我之前引用的同一本教科书指出:

In summary, although the state of the art in defining and measuring memory stalls for out-of-order processors is complex, be aware of the issues because they significantly affect performance. The complexity arises because out-of-order processors tolerate some latency due to cache misses without hurting performance. Consequently, designers normally use simulators of the out-of-order processor and memory when evaluating trade-offs in the memory hierarchy to be sure that an improvement that helps the average memory latency actually helps program performance.

我引用这句话的意思是,在实践中,AMAT 用于在各种不同的选项之间进行近似比较。因此,总是会使用简化的假设。但在计算AMAT时一般会将指令和数据的内存访问次数加在一起得到总访问次数,而不是单独计算。