多核心與同步

關於x86的記憶體一致性模型(TSO,Total Store Order,全域儲存順序)的特徵,下列何者正確?

  1. A允許讀寫的任何組合被調換的、最弱的模型
  2. B完全不允許調換的循序一致性本身
  3. C只允許寫入之後對其他位址的讀取,比該寫入更早被看到的、相對較強的模型
查看答案與解析

正確答案:C. 只允許寫入之後對其他位址的讀取,比該寫入更早被看到的、相對較強的模型

在TSO中,寫入之間的順序、讀取之間的順序、讀取之後寫入的順序都會被保持,只有寫入之後對其他位址的讀取可以超前。這是直接反映儲存緩衝區存在的模型。多數程式在這個範圍內都能依直覺運作,所以在x86上需要屏障的場合相對較少。

  • A. 這個說明比較接近ARM或RISC-V這類較弱的模型。
  • B. 寫入與讀取的調換是會發生的。
  • C. 正確。只會看到由儲存緩衝區造成的調換。
練習這個領域 前往領域頁面

多核心與同步的其他題目

  1. 關於ARM或RISC-V(RVWMO)這類較弱的記憶體一致性模型,下列何者正確?
  2. 關於記憶體屏障(fence)指令的作用,下列何者正確?
  3. 在上方的程式碼中,執行緒1準備好data後以flag通知,執行緒2看到flag後讀取data。在弱記憶體一致性模型的CPU上,要讓執行緒2確實讀到42,下列何者是必要的做法?
  4. 關於具有取得(acquire)與釋放(release)意義的記憶體操作,下列何者正確?
  5. 在C語言中,僅對執行緒之間傳遞的旗標變數加上volatile,仍不足以作為同步,其理由下列何者正確?

這個領域的比較