作者CoTi (歌蒂)
看板CSSE
标题Re: [问题] 使用 IPC 或 CPI 衡量效能的时机
时间Sat Jul 15 16:34:04 2006
※ 引述《H45 (!H45)》之铭言:
: ※ 引述《CoTi (歌蒂)》之铭言:
: : 然後我发现个很有趣的现象就是在 CPI 上得到改善,不见得会反映到 IPC 上
: : 比如两个几乎一样的系统 miss rate 一高一低 (如: prefetch 机制影响)
: : 在 miss penalty 恶化的情况下会发现两个系统 IPC 的差异还是差不多
: : 可是 CPI 就很明显会看到说 miss rate 稍低的系统会在较糟的 miss penalty
: : 下平均每指令得到较少的周期数
: 有的时候我们把系统的 CPI 减少,企图改善整体流程
^^^^^ ??!! performance ?
: 却忽略了 clock cycle time 的延长,导至流程其实没有改善
: 另外,你所说的 CPI 和 IPC 不就是彼此互取倒数的结果吗?
: 既然 CPI = 1/IPC
: 那怎麽还会有 CPI 降低,但是 IPC 并没有显着增加的情形呢?
: 烦请举例说明
比如 A, B 两系统,其中 A 有 prefetcher 而 B 没有,其他地方都一样 (miss
latency, cycle time... etc)
anyway, 两系统唯一的差别就是 A 的 L2 miss rate 稍低
下面符号定义:
I 所执行 benchmark 的指令数
C 所执行 benchmark 耗用的 cycle 数 (不含 L2 miss penalty)
missA 执行 benchmark 中在 A 上所遭遇的到的 L2 miss
missB 执行 benchmark 中在 B 上所遭遇的到的 L2 miss
p 每次 L2 miss 的 miss penalty
L1 miss 在两个系统会是一样的,所以并入 C 中计算
IPC(A) = I / ( C + missA*p ) IPC(B) = I / ( C + missB*p )
CPI(A) = ( C + missA*p ) / I CPI(B) = ( C + missB*p ) / I
随便代一些数值进来会比较明显: (I = 200, C = 100, missA = 1, missB = 2 )
p = 80
IPC(A) = 1.1111 IPC(B) = 0.7692 delta =
0.3419
CPI(A) = 0.9 CPI(B) = 1.3 delta = 0.4
p = 200 (slower memory or bad bus design)
IPC(A) = 0.6666 IPC(B) = 0.4 delta = 0.2666
CPI(A) = 1.5 CPI(B) = 2.5 delta =
1
我画了图:
(w/ gnuplot, 似乎会有 overflow 的问题,不过值这麽小应该不会碰上吧...)
IPC:
http://img91.imageshack.us/my.php?image=zipc10020012rn2.png
CPI:
http://img204.imageshack.us/my.php?image=zcpi10020012zx4.png
难不成我算式列错... ?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.126.216
1F:→ yalight:那个 delta 似乎没有什麽意义?! @_@" 07/15 17:01
2F:→ yalight:你应该用除的, 不是用减的..b 07/15 17:02