Re: [問題] 使用 IPC 或 CPI 衡量效能的時機

看板CSSE (電腦科學及軟體工程)作者 (歌蒂)時間19年前 (2006/07/15 15:58), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串3/5 (看更多)
※ 引述《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

07/15 17:01, , 1F
那個 delta 似乎沒有什麼意義?! @_@"
07/15 17:01, 1F

07/15 17:02, , 2F
你應該用除的, 不是用減的..b
07/15 17:02, 2F
文章代碼(AID): #14kA0j3F (CSSE)
文章代碼(AID): #14kA0j3F (CSSE)