這其實是個和硬件有關的概念。
有些register是2層的,第一層是供CPU訪問,第二層供Hw訪問。
CPU訪問 |
Hw訪問 |
其中Hw訪問的這層register稱之爲Shadow Register。
CPU在寫Register的時候,會先寫在上層的Shadow Register,隨後硬件update之後纔會在下層供Hw訪問的Register開始執行。
這是同一個Register,不是2個Register,只不過分了2層。形象的講上層是下層的Shadow。
因爲真正生效的執行Hw動作的是下面這層,而上面這層只是將CPU(也就是將軟件)的信息獲取到,等下個硬件週期纔會執行。
那麼這有什麼用呢?哪裏用到了這點呢?
這樣做可以加快程序的相應和信息的處理。
其中ARM的FIQ有用到,也就是fast interrupt,快速中斷的意思。
因爲FIQ是有Shadow Register的,所以你在使用它或者是設置它的時候,指令可以先存在Shadow Register裏面,等到下一個硬件週期就會立即執行。
而沒有Shadow Register的IRQ(interrupt),就要等Register裏面的數據執行完畢後才能寫入,那樣就稍慢一些。
這也就是FIQ比IRQ快的一個原因。