关于多核的一些粗浅认识。
程序员更多地关心多核下编程的要求,个人认为我们通常所说的多核是指同构的多核(无论是Intel还是amd), 这时候从软件的角度讲多核与SMP并无太大的区别,之所以出现多核而不是继续走SMP是受到芯片制造的制约及系统扩展(大的smp很难设计实现,成本也高)。如果说与SMP在软件上有区别,我想就是有可能利用共享的cache获得某种性能上的优化或改进的机会,再就是多核有可能构造大的并行系统如上千个核,这时会对OS的调度,负载均衡提出更高的要求。
除了同构多核,另一种多核技术是异构多核,异构多核的设计思路是简化核的设计以降低成本和功耗,通过增加核的数量来提供强劲的计算能力。典型的有IBM的cell,和gpu,多用于娱乐、游戏和科学计算,如游戏机PS3,显卡中的GPU对于游戏玩家是多重要这里就不多说了,而科学计算如floding@home就将ps3和gpu作为主要的计算资源。 异构多核对编程的影响更大,不过一般会有相应的开发库或编译器给予支持,如cbe sdk,brook,cuda等。