多核心與同步

64個核心持續同時以原子指令更新一個共用計數器時,即使增加核心也不會變快。其主要原因為下列何者?

  1. A因為原子指令只能在一個核心上執行
  2. B因為核心數量一多,計數器的值會自動變小
  3. C因為計數器的快取列在核心之間接連移動,更新一次只能進行一個
查看答案與解析

正確答案:C. 因為計數器的快取列在核心之間接連移動,更新一次只能進行一個

要進行原子更新,該核心必須以M狀態持有快取列,所以每次更新時快取列都會移動到別的核心。移動需要核心間的通訊時間,而且一次只有一個核心能更新,因此即使增加核心,也只是讓等待變長。需要想辦法減少共用的寫入,例如讓各核心在自己的位置計數,最後再加總。

  • A. 任何核心都能執行。
  • B. 值不會自行改變。
  • C. 正確。快取列的爭奪決定了效能。
練習這個領域 前往領域頁面

多核心與同步的其他題目

  1. 關於NUMA(非均勻記憶體存取)系統,下列說明何者正確?
  2. 在Linux的NUMA系統中常用的首次接觸(first touch)策略(將頁面放在第一次寫入該頁面的執行緒所在節點的記憶體),下列關於需要注意之處的說明何者正確?
  3. 在平行程式中,即使增加核心數量,效能仍未如預期成長,下列何者不屬於其原因?
  4. 將迴圈的各次迭代分配給多個執行緒時,若每次迭代的運算量差異很大,適合的分配方式為下列何者?
  5. 以多個執行緒計算陣列所有元素的總和時,為了效能,適合的方法為下列何者?

這個領域的比較