2016-02-05 72 views
0

我明白,訪問緩存比訪問主內存要快得多,我對所有這些錯過率和錯過懲罰內容有一個基本的想法。緩存如何提高流水線處理器的性能?

但是,這只是讓我想起了:如何緩存在管道處理器中有用?

根據我的理解,單個時鐘週期所花費的時間是由所有進程中花費的最長時間所限制的。就像訪問緩存需要1n,訪問主內存需要10n,那麼時鐘週期時間應該至少大於10n。否則,該任務在需要時無法完成。然後,即使高速緩存訪​​問完成,指令仍然需要等到下一個時鐘週期。

我正在成像一個基本的5階段流水線過程,包括取指令,解碼,執行,存儲器訪問和回寫。

我完全誤解了一些東西嗎?或者實際上我們有一個非常複雜的流水線,內存訪問被分解爲幾個部分,比如緩存檢查和主存訪問,所以如果我們碰到一個問題,我們可以跳過下一個週期?但如果以前的指令沒有跳過一個循環,而當前的指令不會執行,那麼也會出現問題...

我正在抓我的頭......任何解釋都將非常感謝!

回答

0

週期時間並不低於所有過程中花費的最長時間。實際上,RAM訪問可能需要數百個週期。 有不同的處理器架構,但典型的數字可能是:

1 cycle to access a register. 
4 cycles to access L1 cache. 
10 cycles to access L2 cache. 
75 cycles to access L3 cache. 
hundreds of cycles to access main memory. 

在極端情況下,如果計算是內存密集型,不斷失蹤的緩存,CPU會很充分利用,因爲它請求從內存中獲取數據並等待數據可用。另一方面,如果算法需要重複訪問完全適合L1緩存的相同內存區域(如反轉矩陣不太大),CPU將會更好地利用:算法將從獲取數據放入緩存中,算法的其餘部分將僅使用緩存來讀取和寫入數據值。