【问题标题】:Calculating memory stalls while adding second level cache添加二级缓存时计算内存停顿
【发布时间】:2017-10-05 17:17:06
【问题描述】:

我正在尝试在添加二级缓存时计算每条指令的内存停顿周期。

我有以下给定值:

Direct Mapped cache with 128 blocks
16 KB cache
2ns Cache access time
1Ghz Clock Rate
1 CPI
80 clock cycles Miss Penalty
5% Miss rate
1.8 Memory Accesses per instruction
16 bit memory address

L2 Cache
4% Miss Rate
6 clock cycles miss penalty

据我了解,计算内存停顿周期的方法是使用以下公式:

Memory stall cycles = Memory accesses x Miss rate x Miss penalty

可以简化为:

Memory stall cycles = instructions per program x misses per instructions x miss penalty

我所做的是乘以1.8 x (.05 +.04) x (80 + 6) = 13.932

这是正确的还是我遗漏了什么?

【问题讨论】:

    标签: cpu-architecture cpu-cache


    【解决方案1】:

    首先,我不确定 L1 和 L2 的未命中惩罚的给定参数(L1 为 80 个周期,L2 为 6 个周期)。

    按原样使用数据:

    1. 每个时钟发出 1 条指令
    2. 一条指令有1.8条内存指令。
    3. 有 5% 的访问可能会错过 L1,还有 4% 的机会会错过 L2。如果你错过了 L1 和 L2,你只会访问主内存。那将是 .04 * .05 = 0.002 = 0.2% 这意味着每次内存访问,您很可能会访问当时的主内存 0.2%
    4. 由于每条指令有 1.8 次内存访问,您很可能会在每条指令中访问主内存 0.002 * 1.8 = 0.0036 = 0.36%
    5. 当您在 L1 和 L2 中都遇到未命中时,您将停滞 80 + 6 = 86 个周期(忽略任何优化)
    6. 每条指令,您只会遇到.36% 主内存访问。因此,每条指令的内存停顿周期为.0036 * 86 = 0.3096

    【讨论】:

    • 在 #3 中,您将 L1 和 L2 缓存的未命中率相乘以获得主内存访问权限?
    • 是的。只有在 L1 和 L2 都未命中的情况下才会访问主存储器。即 5%(L1) 中的 4%(L2)。所以主内存访问的百分比是这两者的乘积。
    猜你喜欢
    • 2013-12-20
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 2015-05-14
    • 1970-01-01
    • 2014-11-28
    • 2011-12-18
    相关资源
    最近更新 更多