記憶體階層與效能

插入軟體預取指令時,關於要預先讀取多遠之後的資料(預取距離)的說明,下列何者正確?

  1. A距離越短越好,在讀取下一個元素之前才插入最理想
  2. B距離越長越好,一開始就把迴圈要用的所有資料一次讀入最理想
  3. C太短或太長都不好,要依未命中的時間與迴圈一次的時間決定
查看答案與解析

正確答案:C. 太短或太長都不好,要依未命中的時間與迴圈一次的時間決定

預取必須在資料被需要之前就從記憶體讀取完畢才有意義。距離太短,資料來不及到達;太長,則已進入快取的資料會在使用前被逐出,或污染快取。基準是向前預取「未命中代價除以迴圈一次執行時間」所得的次數。只在即將使用前才插入,無法隱藏等待時間;一次把所有資料讀入,則快取放不下。

  • A. 在即將使用前才讀取來不及,無法隱藏等待時間。
  • B. 先讀入所有資料,會在使用前就被逐出。
  • C. 正確。要依未命中的時間與迴圈的時間,選擇既來得及又不會被逐出的距離。
練習這個領域 前往領域頁面

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

  1. 在上述迴圈中,int為4位元組、快取行為64位元組,陣列不在快取中且起始位置對齊快取行邊界,若沒有預取,讀取陣列時的未命中率為多少?
  2. 矩陣乘法等所使用的迴圈分塊(loop blocking,亦稱tiling)的主要目的為下列何者?
  3. 如上將僅加總x座標的處理,改寫成陣列結構(各成分分別放入不同的陣列)後容易變快,其原因為下列何者?
  4. 將快取分為指令用(I快取)與資料用(D快取)的L1快取,其主要優點為下列何者?
  5. 在分頁大小4 KB、快取行大小64位元組的系統中,想讓L1快取採用虛擬索引、實體標籤(VIPT)方式,且索引與偏移量僅由頁面內的位元構成。若為8路組相聯,快取容量最大可以做到多少?

這個領域的比較