多核心與同步

在MESI協定中,核心0以Modified(M)狀態持有某快取列,核心1要讀取它時,一般的動作為下列何者?

  1. A核心0將最新的值寫回,或直接傳給核心1,雙方的快取列都轉為Shared(S)狀態
  2. B核心1讀取主記憶體中的舊值,核心0維持M狀態
  3. C核心1的讀取會一直等待,直到核心0逐出該快取列
查看答案與解析

正確答案:A. 核心0將最新的值寫回,或直接傳給核心1,雙方的快取列都轉為Shared(S)狀態

核心0得知核心1的讀取請求後,由於清楚自己持有最新的值,便會將該值寫回主記憶體,或直接傳給核心1。之後兩個核心持有相同的內容,所以雙方都轉為S狀態。重點在於不能讓對方讀到主記憶體中的舊值。直接傳遞的方式,比經由主記憶體更能快速送達數值。

  • A. 正確。最新的值會被共享。
  • B. 這樣無法維持一致性。
  • C. 不必等待逐出,會立即處理。
練習這個領域 前往領域頁面

多核心與同步的其他題目

  1. 關於快取一致性的窺探(snooping)方式,下列說明何者正確?
  2. 在核心數量眾多的系統中,使用目錄方式的一致性協定而非窺探方式,其原因下列何者正確?
  3. 一致性協定有無效化型與更新型。許多CPU採用無效化型,其最適當的原因為下列何者?
  4. 關於多執行緒程式中發生的偽共享(false sharing),下列說明何者正確?
  5. 像「long cnt[8];」這樣排列每個執行緒的計數器陣列,發生了偽共享。下列何者是最適當的對策?

這個領域的比較