随想录(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占有率才会达到百分之几百的效果。

 

 

你可能感兴趣的:(随想录)