記憶體階層與效能

二維陣列的一列大小為4096位元組(2的冪次)時,沿著行方向走訪元素,即使快取容量有餘裕,未命中也可能變多。作為對策,下列何者有效?

  1. A在每列末端加上填充,使列的大小偏離2的冪次
  2. B將陣列的型別換成相同大小的另一種型別
  3. C將整個陣列重新對齊到較大的2的冪次位址邊界
查看答案與解析

正確答案:A. 在每列末端加上填充,使列的大小偏離2的冪次

若一列剛好是4096位元組,沿著行方向走訪的元素,其位址每次都相差4096的倍數,索引的位元相同,因而集中在同一組。當走訪的列數多於相聯度時,即使容量有餘裕,也會發生互相逐出的衝突未命中。只要在每列加上約一條快取行的填充(padding),各元素所對應的組就會錯開而分散。即使對齊到2的冪次位址,問題也不會改變,換成相同大小的型別也沒有效果。

  • A. 正確。讓列的大小錯開後,元素會分散到不同的組。
  • B. 相同大小的型別,位址的排列不會改變。
  • C. 即使對齊到2的冪次,集中在同一組的問題依然存在。
練習這個領域 前往領域頁面

記憶體階層與效能的其他題目

  1. 存取主記憶體DRAM所需的時間,大約是L1快取命中時間的幾倍?(以一般PC或伺服器的CPU為例)
  2. 附加在快取各快取行上的有效位元(valid bit)的作用,下列何者正確?
  3. 在小容量的全相聯緩衝器中,暫時保存被逐出L1快取的快取行的犧牲快取(victim cache),其主要效果為下列何者?
  4. 在L1快取之下設置L2快取的多層快取中,L2快取的主要作用為下列何者?
  5. 下層快取(L2等)完全包含上層快取(L1)內容的包含式(inclusive)方式,其特徵下列何者正確?

這個領域的比較