多核心與同步

關於ARM或RISC-V(RVWMO)這類較弱的記憶體一致性模型,下列何者正確?

  1. A允許對不同位址的讀寫進行多種調換,需要順序的地方由程式插入屏障等
  2. B完全不允許調換,所以不存在屏障指令
  3. C連對同一位址的讀寫順序都不保證
查看答案與解析

正確答案:A. 允許對不同位址的讀寫進行多種調換,需要順序的地方由程式插入屏障等

在較弱的模型中,硬體可以相當自由地調換沒有相依關係、針對不同位址的讀寫。雖然容易簡化電路並提升效能與電力效率,但與其他核心交換資料時,必須以fence指令,或具有取得、釋放意義的讀寫指令來明確指定順序。在高階語言中,只要使用原子變數,編譯器就會產生適當的指令。

  • A. 正確。硬體的自由度越高,順序就越需要明確指定。
  • B. RISC-V也有fence指令。
  • C. 對同一位址的順序,由一致性(coherency)來保持。
練習這個領域 前往領域頁面

多核心與同步的其他題目

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

這個領域的比較