多核心與同步
64個核心持續同時以原子指令更新一個共用計數器時,即使增加核心也不會變快。其主要原因為下列何者?
- A因為原子指令只能在一個核心上執行
- B因為核心數量一多,計數器的值會自動變小
- C因為計數器的快取列在核心之間接連移動,更新一次只能進行一個
查看答案與解析
正確答案:C. 因為計數器的快取列在核心之間接連移動,更新一次只能進行一個
要進行原子更新,該核心必須以M狀態持有快取列,所以每次更新時快取列都會移動到別的核心。移動需要核心間的通訊時間,而且一次只有一個核心能更新,因此即使增加核心,也只是讓等待變長。需要想辦法減少共用的寫入,例如讓各核心在自己的位置計數,最後再加總。
- A. 任何核心都能執行。
- B. 值不會自行改變。
- C. 正確。快取列的爭奪決定了效能。