2011-10-17 25 views
1

我堅持這在下文中陳述問題,對於數據訪問和時間局部性關於數據時間局部性取

描述的一般特徵和程序的行爲將會表現:
(一)關於數據低時間局部性訪問
(b)低時間局部性對於指令獲取

我明白了時間局部性,但我無法理解這是什麼與重意思gard進行數據訪問和取指。如果有人能夠向我解釋,我會非常感激。

回答

1

他們正在討論如何優化用於訪問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

+0

我仍然感到困惑的兩個時間局部性。您在示例中給出了兩個(取指令/數據訪問)中的哪一個? –

+0

這個例子適用於兩者。讀取,處理和輸出操作將具有與它們相關聯的代碼塊。在當前狀態下,每個代碼塊將從內存中取出,然後執行。如果操作是聚集在一起的(即讀取,讀取,讀取,處理,處理,處理,輸出,輸出,輸出),則每個代碼塊可以從內存中讀取一次,而不是每次3次。這同樣適用於操作使用的任何變量或數據。 – Polynomial

+0

謝謝。你能否詳細說明一下,時間地點應該高還是低?哪個更好? –

0
  • 低代碼時間局部性是指沒有循環,也沒有指令重用。
  • 代碼的高時態局部性意味着有很多重用的緊密循環。
  • 代碼的低空間局部性意味着很多跳轉到很遠的地方。
  • 代碼的高空間局部性意味着根本沒有分支/跳躍。

參考:計算機組成與設計:硬件/軟件接口