記憶體階層與效能

矩陣乘法等所使用的迴圈分塊(loop blocking,亦稱tiling)的主要目的為下列何者?

  1. A以能放入快取的小區塊為單位進行計算,增加資料的重複使用
  2. B減少迴圈的次數,以減少在迴圈結尾執行的分支指令數量
  3. C在不改變計算順序的情況下,使所用的記憶體總量減半
查看答案與解析

正確答案:A. 以能放入快取的小區塊為單位進行計算,增加資料的重複使用

若直接計算大型矩陣的乘法,一度載入的元素在被再次使用之前就會被逐出快取,必須一再從主記憶體重新讀取。迴圈分塊將矩陣切成能放入快取的小區塊,在區塊內完成計算,使載入的資料得以多次重複使用,大幅減少容量未命中。減少分支指令是迴圈展開(loop unrolling)的目的,所用的記憶體總量也不會改變。

  • A. 正確。以能放入快取的單位計算,增加資料的重複使用。
  • B. 減少分支是迴圈展開的目的。
  • C. 計算順序會改變,所用的記憶體總量則不變。
練習這個領域 前往領域頁面

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

  1. 如上將僅加總x座標的處理,改寫成陣列結構(各成分分別放入不同的陣列)後容易變快,其原因為下列何者?
  2. 將快取分為指令用(I快取)與資料用(D快取)的L1快取,其主要優點為下列何者?
  3. 在分頁大小4 KB、快取行大小64位元組的系統中,想讓L1快取採用虛擬索引、實體標籤(VIPT)方式,且索引與偏移量僅由頁面內的位元構成。若為8路組相聯,快取容量最大可以做到多少?
  4. L1快取常採用虛擬索引、實體標籤(VIPT)方式的主要理由為下列何者?
  5. 快取的命中時間為2個週期、未命中率為4%、未命中代價為150個週期時,平均記憶體存取時間為多少個週期?

這個領域的比較