2014-01-10 42 views
1

我在期末考試中遇到了兩個案例。 第一種情況的內存從位置獲取信息,如:0x101,0x102,0x101,0x102,0x101,0x102,0x101,0x102。關於時間局部性和空間局部性的一些問題

第二種情況下的內存獲取來自以下位置的信息: 0x101,0x101,0x101,0x101,0x111,0x109,0x102,0x100。

問題是在哪種情況下它使用時間局部性。

這是我的觀點:在第一種情況。我認爲在我們訪問0x101的時候,內存也會訪問0x102到緩存中。然後在接下來的六場比賽中,不會有任何處罰。這意味着在這種情況下,我們只有一個緩存未命中。在這裏,我認爲我們受益於時間局部性和空間局部性。而在前四步中的第二種情況下,我們受益於時間局部性,但在下一步中,我們沒有時間局部性。事實上,這導致更多的緩存未命中。 我認爲兩者都是對的,但我們只能有一個答案,所以我感到困惑。

回答

0

我會投票給二號之一。正如你所說,它在前四個步驟中具有明顯的時間局部性。

從來沒有說過你的緩存有足夠空間容納超過1項內存。它可能是一個只有1個寄存器或其他東西的CPU。因此,第一種情況可能不會出現任何地方。

問題提供了關於系統體系結構的更多細節嗎?

+0

此問題沒有提供更詳細的信息。我不知道我在這個考試中選擇了一個錯誤的答案,真可惜... – user3180776

0

這絕對是第二選擇。問題很明顯:在第二種情況下,您明確地利用了時間局部性,因爲您連續多次訪問0x101次。

看到這個問題:Spatial vs. Temporal locality

時間局部性意味着你要 多次訪問同一地址,相對緊密的時間。

你是正確的說,第一種情況下也使用時間局部性的,但我會說這對空間局部性齒輪,因爲你是2個相鄰位置之間交替,因此,高速緩存未命中,因爲空間局部性的最小化,不是因爲時間的局部性。

在第二種情況下,緩存未命中由於時間局部性而最小化。請記住,時間地點說,如果您現在訪問位置X,您很可能會很快再次訪問位置X。這是在第二種情況下探討的財產。

+0

但是「很快」的意思是什麼。我懷疑在兩個或三個系統時鐘也很快就會被調用。 – user3180776

+0

@ user3180776 2或3個系統時鐘不算什麼。 100系統時鐘仍然很快。這取決於上下文,但請記住CPU週期非常快。考慮到你的問題中的選項,我會選擇2,因爲時間局部性在那裏非常明顯。 –

+0

@ user3180776,很快是一種主觀的定義 - 它應該被認爲是很快,如果你訪問同一行,而它仍然駐留在緩存中(實際距離將根據緩存大小/關聯,訪問模式,不同等。) – Leeor