我知道有幾個原子指令,如test & set,比較& swap指令,它們實現了互斥量的硬件實現。但是我很想知道是否有像ARM或ARM這樣的單獨指令可以實現互斥鎖?執行單CPU互斥指令的ARM
我認爲至少需要兩條指令(原子執行)才能實現互斥鎖。
P.S.在描述Compare和Swap後,我在採訪中被問到了這個問題。針對ARM的更多優化目標。但是我想知道它在其他架構中的可能性嗎?
我知道有幾個原子指令,如test & set,比較& swap指令,它們實現了互斥量的硬件實現。但是我很想知道是否有像ARM或ARM這樣的單獨指令可以實現互斥鎖?執行單CPU互斥指令的ARM
我認爲至少需要兩條指令(原子執行)才能實現互斥鎖。
P.S.在描述Compare和Swap後,我在採訪中被問到了這個問題。針對ARM的更多優化目標。但是我想知道它在其他架構中的可能性嗎?
一個互斥對象在單個指令中實現的級別機制太高。它需要關於哪個線程持有鎖的信息,線程中帶有鎖的互斥層級的計數,以及基於優先級的搶佔式RTOS需要優先級反轉機制,其中包括暫時提升擁有鎖。
即使簡單的自旋鎖在單一操作中往往是一個壞主意。 ARM曾經有過一些簡單的「交換」指令,它們將寄存器中的值與存儲器中的值原子交換,但是它們不能很好地適應高頻率多核系統(因爲您必須鎖定總線以確保原子性的交換),所以他們從新版本的體系結構中刪除,並替換爲多部分加載/存儲專用指令。
您可以通過以下方式自己回答:a)簡單地查看指令集,b)比較任何開源操作系統中現有的ARM互斥鎖實現。雖然答案[將來可能會改變](http://community.arm.com/groups/processors/blog/2014/12/02/the-armv8-a-architecture-and-its-ongoing-development),它的在任何打擊生產之前將會有一段時間。 – Notlikethat 2015-03-25 09:07:11