2012-02-20 34 views
4

我所見過的平均內存訪問時間經常引述:好奇的平均內存訪問時間(AMAT)

AMAT = (L1 cache hit time + L1 miss rate*(L2 hit time + L2 miss rate*(memory access time))) 

有什麼理由命中次數不受命中率乘以?只有錯過時間乘以錯過率?

回答

2

家庭作業?

在大多數高速緩存中,所有請求都會進入L1高速緩存,然後,只有在確定爲未命中之後,才能進入L2。等等。

或者:

在100訪問

時間L1花命中= L1高速緩存命中時間* L1緩存的命中率

時間在去記憶= L1高速緩存未命中率L1遺漏花*(L1緩存命中時間+去內存的時間)

Total time = Thit * Phit*100 + Pmuss*100 * (Thit + Tmiss) 
= Thit * (1-Pmiss)*100 + Pmiss*100 (Thit+Tmiss) 
= Thit * (1-Pmiss+Pmiss) * 100 + Pmiss*100*Tmiss 
= 100* (Thit + Pmiss*Tmiss) 

等等,如果你有一個L2。

I.e.他們抵消了。

現在,緩存系統,或者至少已經存在,同時訪問被髮送到緩存和內存。在這樣的系統中,

Tavg = Phit*Thit + Pmiss*Tmiss. 

但是這些並不常見。他們往往會浪費電力,因爲你已經開始了L2或主存儲器訪問,你可能不需要。

我稱前者爲透視緩存,後者爲後備緩存。 (我已經知道我的一些同事把這種情況稱爲後一種情況,即同時向高速緩存和內存發送訪問,「推測高速緩存未能訪問內存」,這不是不合理的用法,但也可以將其與「預測性高速緩存未命中」混淆,例如由具有分支預測的機器產生。考慮兩種情況:(1)沒有分支預測,沒有推測性執行的機器。這樣的機器,指令,內存引用不是推測性的,所以我們只是推測是否將這個訪問僅僅發送到緩存或者也發送到內存。(2)具有分支預測或其他形式的推測性執行的機器。在這樣的機器上,實際的內存操作是推測性的,兩者可以結合:一個我們還不知道的推測性指令實際上是否會執行,一個內存訪問可能會或可能不會被推測性地發送到內存之前,它被確定爲高速緩存未命中)

2

這是因爲無論是否存在高速緩存,這次查找高速緩存中的數據已經花費。

AMAT = HitTime *(1-MissRate)+ MissRate *(HitTime + MissPenalty)
= HitTime + MissRate * MissPenalty