Major Member
|
快取的效率取決於兩個主要因素:cache acess time and hit ratio
假設 CPU 沒有 cache 架構
則 CPU 運作時每次的 memory request 都必須到主記憶體去做存取的動作
假設這個動作所需要的時間為 ma = 200ms
假設現在為了提升效率,我們加入了一層的快取
快取的存取時間為 ca = 10ms,而快取的 hit ratio 為 95%
也就是 CPU 所發出的 memory requests 中
平均每 100 次有 95 次可以在 cache 中找到資料,另外 5 次則資料在主記憶體裡
則現在 CPU 每次的 memory request 所花的時間為
ma1 = 200*0.05 + 10*0.95 = 19ms
這樣可以算出我們在 CPU 運作時得到了 200/19=10.5(約) 倍的記憶體效率增進
而 cache 的大小跟匯流排寬度影響快取的存取時間
cache 越小 or 匯流排越寬 or 記憶體延遲越低 都會減少快取的存取時間
另外 cache management unit 的設計以及 cache 的大小 則影響 hit ratio
以之前的例子來說,當 cache 大到使 ca = 100ms 且 hit ratio = 98% 時
ma2 = 200*0.02 + 100*0.98 = 101.92ms
則效率為原來的 200/101.92ms = 2(約) 倍
所以一昧的增加快取大小對增加運算速度來說並不是個好策略
其餘的可能性就請有心的網友來算算看吧
|