記憶體階層與效能

讓兩個程式在同一個核心上交替執行時,有時會比各自單獨執行更慢。從快取的角度來看,下列何者是最恰當的說明?

  1. A因為交替執行時,各自所執行的指令數本身會增加為2倍
  2. B因為交替執行時,快取的容量會被重新設定為一半
  3. C因為自己的資料被對方的資料逐出,重新讀取的次數增加
查看答案與解析

正確答案:C. 因為自己的資料被對方的資料逐出,重新讀取的次數增加

切換程式後,快取或TLB會被對方程式所使用的資料佔滿,輪到自己再次執行時,所需的資料已被逐出。因此,單獨執行時會命中的存取發生未命中,需要花時間從主記憶體重新讀取資料。切換的間隔越短,這個影響越大。執行的指令數不變,快取的容量也不會被重新設定。這是共用快取所造成的影響。

  • A. 各自的指令數不會改變。
  • B. 快取的容量不會改變。
  • C. 正確。被對方的資料逐出,重新讀取的未命中增加。
練習這個領域 前往領域頁面

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

  1. 下列何者最適合作為時間局部性的例子?
  2. 以上述方式走訪C語言的二維陣列a[i][j]時,若內層迴圈使用j,會比內層使用i更容易變快。其原因為下列何者?
  3. 位址為32位元、容量32 KB、快取行大小64位元組的直接映射(direct-mapped)快取,其標籤(tag)為幾位元?
  4. 位址為32位元、容量32 KB、快取行大小64位元組的4路組相聯(set-associative)快取,其組數為多少?
  5. 在全相聯(fully associative)快取中,位址之中用於索引(選擇組的部分)的位元數為下列何者?

這個領域的比較