我堅持這在下文中陳述問題,對於數據訪問和時間局部性關於數據時間局部性取
描述的一般特徵和程序的行爲將會表現:
(一)關於數據低時間局部性訪問
(b)低時間局部性對於指令獲取
我明白了時間局部性,但我無法理解這是什麼與重意思gard進行數據訪問和取指。如果有人能夠向我解釋,我會非常感激。
我堅持這在下文中陳述問題,對於數據訪問和時間局部性關於數據時間局部性取
描述的一般特徵和程序的行爲將會表現:
(一)關於數據低時間局部性訪問
(b)低時間局部性對於指令獲取
我明白了時間局部性,但我無法理解這是什麼與重意思gard進行數據訪問和取指。如果有人能夠向我解釋,我會非常感激。
他們正在討論如何優化用於訪問CPU中數據和指令的緩存。從本質上講,低時間局部性意味着經常重複使用的東西,但不是一個大塊(即隨時間推移)。
低時間局部性的例子:
read file
process data
output result
....
read file
process data
output result
....
read file
process data
output result
爲了改善這一點,你可以重新安排,以便所有讀取都一起做,所有的處理完成在一起,所有輸出一起做。
在CPU的情況下,你可以說如果你需要頻繁地執行內存讀取,只需讀一次並緩存它,然後在丟棄它之前儘可能多地使用它。對於指令來說,這意味着將循環指令放在非常快的緩存中(通常爲L1)。對於數據,這意味着緩存任何你最常用的東西。
見這些鏈接的正確解釋:
http://www.dotnetperls.com/temporal-locality
http://en.wikipedia.org/wiki/Locality_of_reference#Use_of_spatial_and_temporal_locality:_hierarchical_memory
參考:計算機組成與設計:硬件/軟件接口
我仍然感到困惑的兩個時間局部性。您在示例中給出了兩個(取指令/數據訪問)中的哪一個? –
這個例子適用於兩者。讀取,處理和輸出操作將具有與它們相關聯的代碼塊。在當前狀態下,每個代碼塊將從內存中取出,然後執行。如果操作是聚集在一起的(即讀取,讀取,讀取,處理,處理,處理,輸出,輸出,輸出),則每個代碼塊可以從內存中讀取一次,而不是每次3次。這同樣適用於操作使用的任何變量或數據。 – Polynomial
謝謝。你能否詳細說明一下,時間地點應該高還是低?哪個更好? –