【问题标题】:Finding Average Penalty from AMAT从 AMAT 中找到平均罚分
【发布时间】:2015-12-06 08:09:43
【问题描述】:

当我有一个缓存时,我可以计算惩罚。但是当我看到两个并行访问的 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?

【问题讨论】:

    标签: performance caching memory computer-architecture


    【解决方案1】:

    简答

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

    详情

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

    平均内存访问时间 = % 指令 x(命中时间 + 指令未命中率 x 未命中惩罚)+ % 数据 x(命中时间 + 数据未命中率 x 未命中惩罚)`。

    正如您在此公式中看到的那样,每条指令都计入一次内存访问,而对数据进行操作(加载/存储)的指令构成了额外的内存访问。

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

    总而言之,尽管在定义和测量方面的最新技术 乱序处理器的内存停顿很复杂,请注意 问题,因为它们显着影响性能。复杂性 出现是因为乱序处理器容忍一些延迟,因为 在不影响性能的情况下缓存未命中。因此,设计师 通常使用乱序处理器和内存的模拟器 评估内存层次结构中的权衡,以确保 有助于平均内存延迟的改进实际上有助于 程序性能。

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

    【讨论】:

    • 这似乎很公平。你的答案很可能是正确的,因为它是一个说教的答案。我正在考虑我们通常在实践中看到的 OOO 当前 CPU。
    【解决方案2】:

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

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

    如果度量单位是 cycles,则您执行的操作与纳秒相同。如果您知道处理器的频率,则可以在纳秒内转换回 AMAT。

    【讨论】:

    • 所以在我的示例中,AMAT 将是数据的一个,因为丢失率较高?因此,我可以通过 4-2 / .03 计算两次访问的平均未命中惩罚?
    • 是的。我就是这样解释你的问题的。
    • 如果有 60% 的指令是加载和存储指令,是否适合 AMAT 的任何位置?
    • 我认为只有在负载和存储量小得多的情况下才有意义。当然,如果有隐藏的约束(例如,你的 cpu 有一个执行端口),这会改变解决方案。
    • 我不认为这是正确的。至少 AMAT 通常不是这样计算的。详情见我的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多