記憶體階層與效能
插入軟體預取指令時,關於要預先讀取多遠之後的資料(預取距離)的說明,下列何者正確?
- A距離越短越好,在讀取下一個元素之前才插入最理想
- B距離越長越好,一開始就把迴圈要用的所有資料一次讀入最理想
- C太短或太長都不好,要依未命中的時間與迴圈一次的時間決定
查看答案與解析
正確答案:C. 太短或太長都不好,要依未命中的時間與迴圈一次的時間決定
預取必須在資料被需要之前就從記憶體讀取完畢才有意義。距離太短,資料來不及到達;太長,則已進入快取的資料會在使用前被逐出,或污染快取。基準是向前預取「未命中代價除以迴圈一次執行時間」所得的次數。只在即將使用前才插入,無法隱藏等待時間;一次把所有資料讀入,則快取放不下。
- A. 在即將使用前才讀取來不及,無法隱藏等待時間。
- B. 先讀入所有資料,會在使用前就被逐出。
- C. 正確。要依未命中的時間與迴圈的時間,選擇既來得及又不會被逐出的距離。