在每個指令週期中,cpu至少會訪問記憶體一次,來抓取下一條執行的指令,而且經常會附帶著更多次的訪問,來獲取運算元,以及儲存結果。而cpu執行指令的速度就因此大大受限於對記憶體的訪問速度,而且隨著cpu的速度提高大大快於記憶體的訪問速度提高,這個問題會越來越嚴重。理論上來說,我們可以製造一種訪問速度與cpu暫存器相同的記憶體,但那樣的話記憶體就會相當昂貴,所以為了解決這個問題,就需要利用短時間內指令的聚合特性來設計乙個在cpu和主存之間工作的快取。
快取持有主存的一部分拷貝,當處理器試圖訪問記憶體中的乙個位址時,會首先判斷該位址中的內容是不是已經在快取中了,如果是的話,則資料直接從快取傳送到處理器中,不是不是的話,則首先將該指令以及該指令附近的資料讀取到快取中,然後再從快取中讀取資料到處理器中。
1.快取大小
合理的快取大小可以大大加快cpu訪問資料的速度
2.快取單次資料交換大小
起初隨著快取單次交換資料增長,快取命中率會增加,因為更多目標資料附近的資料被載入到了快取中,但是隨著快取單次交換資料繼續增長,效能反而會下降,這是因為此時將過多的資料從記憶體中載入到快取中,這個資料交換花費了過多時間,而快取命中率並不會繼續顯著的增加。
3.快取替換演算法
快取替換演算法是當一塊新的記憶體資料被載入到快取中時,來確定將哪部分快取中已經存在的資料交換回去,好的快取替換演算法會維持快取的乙個高命中率,但是演算法本身也會耗費時間,所以需要權衡。
資料區域性性原理是快取能大幅度提高效能的原理
資料區域性性在以下四個方面中起作用
1.除了佔整個程式小部分的跳轉指令(呼叫函式),以及條件分支,大部分程式都是線性執行,這代表在大部分情況下,當前要執行的下一條指令就在當前指令的後面。
2.許多迴圈指令都是在短時間內執行大量的重複指令,這些指令都聚集在相對接近的位址段中。
3.在許多程式的運算中,都會處理線性資料結構,如陣列,以及c語言中的結構體,這些資料結構item的位址都是連續的
歡迎關注我的github
作業系統(四)作業系統的執行機制
目錄 1.4 作業系統的執行機制 1.4.1 核心程式 應用程式 1.4.2 特權指令 非特權指令 1.4.3 核心態 使用者態 1.4.4 作業系統的核心 1.4.5 小結 作業系統其實也是一種程式,程式的執行過程也就是cpu執行一行行機器指令的過程。區別於一般程式設計師開發的應用程式,實現作業系...
作業系統之快取演算法
快取演算法是指令的乙個明細表,用於提示 計算裝置的 快取資訊中 哪些條目應該被刪去。常見快取演算法包括lfu lru arc fifo mru。最不經常使用演算法 lfu 這個快取演算法使用乙個計數器來記錄條目被訪問的頻率。通過使用lfu快取演算法,最低訪問頻率的條目首先被移除。這個方法並不經常使用...
作業系統執行機制
cpu 運算器,控制器,暫存器,快取記憶體 兩類暫存器 控制和狀態暫存器 重要 程式暫存器pc 記錄將要取出指令的位址 指令暫存器ir 記錄最近取出的指令 程式狀態字psw 記錄處理器的執行狀態 需求保護 併發,共享 兩種cpu狀態 核心態 執行作業系統程式 使用者態 執行使用者程式 特權指令 只能...