1. 程式人生 > >隨想錄(smp的一些注意事項)

隨想錄(smp的一些注意事項)

【 宣告:版權所有,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】

 

    所謂的smp,其實就是在soc中出現多個cpu。比如,如果我們說手機是4核cpu,一般指的是soc有4個arm核心。因為自己曾經裸寫過smp的相關程式碼,執行效果還不錯,所以特地做一些紀錄,以備以後使用。

 

1、smp中一般有主核和從核之分,主核只有一個,從核可以有很多個。

2、一般主核是不能關閉的,但是從核是可以關閉,也可以重新喚醒的。

3、主核完成大部分系統啟動任務,等到系統差不多好的時候,開始喚醒從核。

4、主核和從核的起始執行位置是相同的,都在某個彙編檔案中,但是必須根據cpuid馬上分開。

5、主核和從核的c函式入口點是不一樣的。

6、中斷一般是均勻分佈在主核和從核上面的。

7、主核和從核的資料搶佔必須依靠自旋鎖來解決。

8、如果只是兩個核,那麼可以用佇列的方法完成資料同步。

9、smp可能會出現記憶體屏障,即一個核的亂序執行對另外一個核的cache同步造成了影響。

10、緊急的事情,主核和從核之間只能利用核間中斷來解決。

11、不同核執行的堆疊空間必須提前準備好。

12、bss資料只需要主核clear一遍,不需要每一個核clear一遍,反而有風險。

13、主核和從核之間可以有均衡負載,也可以沒有,不是非要和linux一樣。

14、主核和從核之間可以各自執行一個系統,也可以只執行一個系統。

15、多核除錯可以在qemu虛擬機器上面完成。

16、主核和從核之間的alu、tlb、cache是分開來的,但是float、mac有可能是共享的。

17、主核和從核的一級cache一般是分開來的,二級cache、三級cache一般是共享的。

18、主核和從核的cache同步一般是硬體自動完成,實現方法多采用mesi協議,有記憶體屏障的風險。

19、主核和從核之間的tlb同步、cache同步一定要及時,常常需要designer自己手工完成。

20、只有純運算的時候可以最大程度發揮smp的優勢,cpu佔有率才會達到百分之幾百的效果。