多核心與同步

關於循序一致性(sequential consistency),下列說明何者正確?

  1. A各核心的操作每次都以隨機的順序執行
  2. B所有核心的操作被排成某一個順序,且各核心的操作看起來會依程式所寫的順序出現
  3. C所有操作都只在一個核心上執行
查看答案與解析

正確答案:B. 所有核心的操作被排成某一個順序,且各核心的操作看起來會依程式所寫的順序出現

在循序一致性中,多個核心的操作就像洗牌一樣被排成一列,而各核心的操作在其中看起來維持程式的順序。對程式設計師而言這是最容易理解的模型,但它會大幅限制硬體以儲存緩衝區等方式調換順序的最佳化,所以實際上許多CPU採用更寬鬆的模型。

  • A. 並非隨機,而是遵守程式的順序。
  • B. 正確。這是最直覺、最容易理解的模型。
  • C. 前提是在多個核心上運作。
練習這個領域 前往領域頁面

多核心與同步的其他題目

  1. 將上方的兩個執行緒在不同的核心上同時執行(假設編譯器不進行重新排序)。下列哪一個結果在循序一致性下不會發生,但在x86等實際的CPU上可能發生?
  2. 關於x86的記憶體一致性模型(TSO,Total Store Order,全域儲存順序)的特徵,下列何者正確?
  3. 關於ARM或RISC-V(RVWMO)這類較弱的記憶體一致性模型,下列何者正確?
  4. 關於記憶體屏障(fence)指令的作用,下列何者正確?
  5. 在上方的程式碼中,執行緒1準備好data後以flag通知,執行緒2看到flag後讀取data。在弱記憶體一致性模型的CPU上,要讓執行緒2確實讀到42,下列何者是必要的做法?

這個領域的比較