多核心與同步

在無效化型的一致性協定中,核心對處於Shared(S)狀態的快取列寫入時,會進行下列何種動作?

  1. A保留其他核心的副本,只改寫自己的快取列
  2. B先使其他核心持有的相同快取列副本失效,再將自己的快取列轉為M狀態並寫入
  3. C先清空所有核心的快取再寫入
查看答案與解析

正確答案:B. 先使其他核心持有的相同快取列副本失效,再將自己的快取列轉為M狀態並寫入

S狀態表示其他核心可能也持有相同的快取列,因此若直接寫入,其他副本就會變成舊資料。所以要先發送無效化請求,使其他核心的副本變為I狀態,再將自己的快取列轉為M狀態並寫入。其他核心下次讀取該資料時會發生未命中(miss),並重新取得最新的值。許多CPU都採用這種無效化型。

  • A. 這樣其他核心會讀到舊值。
  • B. 正確。避免殘留舊的副本。
  • C. 不需要連無關的快取列都清除。
練習這個領域 前往領域頁面

多核心與同步的其他題目

  1. 在MESI協定中,核心0以Modified(M)狀態持有某快取列,核心1要讀取它時,一般的動作為下列何者?
  2. 關於快取一致性的窺探(snooping)方式,下列說明何者正確?
  3. 在核心數量眾多的系統中,使用目錄方式的一致性協定而非窺探方式,其原因下列何者正確?
  4. 一致性協定有無效化型與更新型。許多CPU採用無效化型,其最適當的原因為下列何者?
  5. 關於多執行緒程式中發生的偽共享(false sharing),下列說明何者正確?

這個領域的比較