什麼是空間局部性

存取某個位址後,其附近的位址也容易在不久後被存取的性質。例如依序讀取陣列的處理,是以快取行為單位一併載入的原因。

日文名稱: 空間的局所性

「空間局部性」出現在1領域的2道練習題中(CPU與架構等)。

這個名詞所屬的領域: 記憶體階層與效能

練習空間局部性的題目

設置快取記憶體的主要目的,下列何者正確?

  1. A為了在切斷電源後仍能保存資料
  2. B為了將常用資料放在 CPU 附近,縮小與主記憶體之間的速度差距
  3. C為了修正運算結果的錯誤
查看答案與解析

正確答案:B. 為了將常用資料放在 CPU 附近,縮小與主記憶體之間的速度差距

CPU 處理一個時脈只需 0.2〜0.3 ns,但存取 DRAM 需要數十〜100 ns,也就是數百個時脈。因此將常用的資料與指令放在高速 SRAM 的快取中,以減少等待時間。快取利用的是短時間內會再次使用相同資料的時間局部性,以及會連續使用相鄰位址的空間局部性;L1 只需數個時脈即可存取,即使是 L3 也只需數十個時脈。

目前許多 CPU 所使用之快取列(快取區塊)的大小,下列何者為一般情況?

  1. A1 位元組
  2. B64 位元組
  3. C64 MB
查看答案與解析

正確答案:B. 64 位元組

許多 CPU 在快取與主記憶體之間,是以 64 位元組的快取列為單位交換資料。相鄰位址的資料經常會被連續使用(空間局部性),所以一併取入較有效率,也與 DRAM 的突發傳輸(DDR4 為 8 次 × 8 位元組 = 64 位元組)相符。在多執行緒程式中,必須注意若不同的變數位於同一條快取列,會發生互相爭奪的「偽共享」(false sharing)。

解析中的「空間局部性」

出現「空間局部性」的題目(2題)

  1. 設置快取記憶體的主要目的,下列何者正確?
  2. 目前許多 CPU 所使用之快取列(快取區塊)的大小,下列何者為一般情況?

相關名詞

快取記憶體 時間局部性 偽共享(False sharing) 失誤懲罰 平均記憶體存取時間(AMAT) 全相聯快取 快取行 直接映射快取 非阻塞快取 容量失誤

前往名詞解釋列表