訪問局部性
① 1.什麼是「程序訪問的局部性」存儲系統中哪一級採用了程序訪問的局部性原理
程序的局部性原理,即程序的地址訪問流有很強的時序相關性,未來的訪問模式與最近已發生的訪問模式相似。根據這一局部性原理,把主存儲器中訪問概率最高的內容存放在Cache中,當CPU需要讀取數據時就首先在Cache中查找是否有所需內容,如果有則直接從Cache中讀取;若沒有再從主存中讀取該數據,然後同時送往CPU和Cache。
② 什麼是程序訪問的局部性存儲系統中哪一級採用了程序訪問的局部性原理
程序訪問的局部性是指程序在執行時呈現出局部性規律,即在一段時間內,整個程序的執行僅限於程序中的某一部分。它們傾向於引用的數據項鄰近於其他最近引用過的數據項,或者鄰近於最近自我引用過的數據項。局部性通常有兩種形式:時間局部性和空間局部性
存儲系統中Cache-主存層次和主存-輔存層次均採用了程序訪問的局部性原理。
③ 什麼是存儲訪問的局部性原理,它分別成哪兩個方面的局部性
程序局部性原理:虛擬存儲管理的效率與程序局部性程序有很大關系。根據統計,進程運行時,在-
段時間內,其程序的執行往往呈現岀高度的局限性,包括時間局部性和空間局部性
1、時間局部性:是指若一條指令被執行,則在不久的將來,它可能再被執行
2、空間局部性:是指一旦一個存儲單元被訪問,那它附近的單元也將很快被訪問
④ 計算機組成原理中的局部性原理是什麼
時間局部性就是,最近被訪問的存儲單元,在之後很有可能會被再次訪問到;
空間局部性就是,對於正在被訪問的存儲單元附近的位置,在之後很有可能會被訪問到。
這個很容易理解,以一段常見的代碼為例:
for(i = 0; i <= 100; i++) {
sum += array[i];
}
其中i、sum 這些元素現在正被訪問,在之後也一定會被重復訪問,這就是時間局部性;
而array這個數組,現在訪問了array[0]的位置,那之後緊接著就會訪問它附近的位置,比如array[1]、array[2]等等,這就是空間局部性。
根據局部性原理,可以做一些相關設計。比如cache就是利用局部性原理設計出來的。
⑤ 空間局部性和時間局部性的策略是什麼
進程運行時,在一段時間里,程序的執行往往呈現高度的局部性,包括時間局部性和空間局部性。時間局部性是一旦一個指令被執行了,則在不久的將來,它可能再被執行。空間局部性是一旦一個指令一個存儲單元被訪問,那麼它附近的單元也將很快被訪問。
程序的局部性原理是虛擬存儲技術引入的前提。虛擬存儲的實現原理是,當進程要求運行時,不是將它全部裝入內存,而是將其一部分裝入內存,另一部分暫時不裝入內存。
(5)訪問局部性擴展閱讀:
時間局部性
如果在某一點時訪問了存儲器的特定位置,則很可能在不久的將來將再次訪問相同的位置。在對相同存儲器位置的相鄰訪問之間存在時間接近性。
在這種情況下,通常努力將訪問過的數據的副本存儲在可以被更快訪問的特殊存儲器中。時間局部性是空間局部性的特殊情況,即當預期位置與當前位置相同時。
空間局部性
如果特定存儲位置在特定時間被訪問,則很可能在不久的將來訪問附近的存儲位置。在這種情況下,通常嘗試猜測當前訪問周圍的區域的大小和形狀,對於該區域,值得准備更快的訪問。
局部性的原因
局部性有幾個原因。這些原因是某些方面要實現的目標或接受的情況。以下原因不是不相交的;事實上,下面的列表從最一般的情況到特殊情況:
可預測性:事實上,局部性只是計算機系統中一種可預測的行為。
程序結構
局部性通常因為創建計算機程序的方式而發生,用於處理可決定的問題。通常,相關數據存儲在存儲器中的附近位置。計算中常見的一種模式涉及幾個項目的處理,一次一個。這意味著如果進行大量處理,則將訪問單個項目多次,從而導致時間局部性。
此外,移動到下一項意味著將讀取下一項,導致空間局部性,因為存儲器位置通常被批量地讀取。
線性數據結構
局部性通常因為代碼包含循環,傾向於通過索引訪問數組或其他數據結構。當相關數據元素被線性地排列和訪問時,發生順序局部性,即空間局部性的特殊情況。例如,從基地址到最高元素的一維數組中的元素的簡單遍歷將利用存儲器中數組的順序局部性。
當線性遍歷在具有相同結構和大小的相鄰數據結構的較長區域上,訪問每個結構的相互對應的元素而不是整個結構時,發生更一般的等距局部性。這是當矩陣被表示為行的順序矩陣並且需要訪問矩陣的單個列時的情況。
內存層次結構的效率
雖然隨機存取存儲器使程序員能夠在任何時間在任何地方讀取或寫入,但在實踐中,等待時間和吞吐量會受到高速緩存的效率的影響,這通過增加訪問局部性來改進。訪問局部性差導致緩存抖動和緩存污染,為了避免它,具有弱局部性的數據元素可以從緩存旁路。
參考資料:網路-訪問局部性
⑥ 如何減少換頁錯誤
減少換頁錯誤的方法,即降低缺頁中斷率:
1、內存頁框數。增加作業分得的內存塊數。
2、頁面大小。頁面劃分越大,中斷率越低。
3、替換演算法的優劣影響缺頁中斷次數
4、程序局部性。程序局部性好可減少缺頁中斷。
換頁錯誤:
PageFault 是在進程嘗試執行代碼指導,或者引用進程所映射物理內存中並不存在的數據頁時,操作系統記錄的事件。換句話說,進程需要的內存頁實際上可能還處於物理內存中,但是由於它無法再分配到進程中,所以當進程將此頁讀取回到它的內存頁時,就發生了PageFault。
簡單來說就是想在內存里找東西,卻發現不存在(不得不重新讀取...),按道理這不應該算「錯誤」這么嚴重吧(簡單點,「不命中」而已)。