多核技术
多核技术就是在处理器上拥有两个或更多一样功能的处理器核心,即将数个物理处理器核心整合人一个内核中。数个处理核心在共享芯片组存储界面的同时,可以完全独立地完成各自地工作,从而能在平衡功耗的基础上极大地提高CPU性能。
多核技术的介绍
SMP:指在两个相似(或相同)的处理器通过一条高速通道连接,并且共享外设和存 储器空间的体系结构上,运行同一个操作系统实例,上层应用对于多CPU、线程多实例无需了解,由操作系统自动协调运行,并管理共享资源。
AMP:在一个由两颗或者多颗相同或者不同的处理器通过各种通信通道连接(比如可以将一个MCU(Main Control Unit)和一个DSP集成在一起) ,在逻辑上共享或者独占外设、存储器的体系架构上,运行不同的操作系统实例,相互之间通过TIPC(Transparent Inter-Process Communication)等机制通讯。往往是用于主控处理单元与各种专业协处理器协同工作的情形。
多核:是一种处理器的结构,在一个芯片上集成了多个处理器核心。一般各个核有独立的L1cache,但共享L2 Cache,同时,也共享存储器、外设。
SMT(HT):同时多线程技术(在intel称为超线程技术),是在CPU中提供多个半独立的处理器单元,其中寄存器独立,但共享L1 cache和ALU单元,其目的是提高ALU的利用率,提升CPU效率。从物理上来看,是一个类多CPU体系。当然各芯片厂家实现方案可能不同。
多处理器:由多颗相同或者不同的独立完整的CPU通过通信通道连接,可共享也可独立拥有存储器、外设。
多核技术的应用模式
AMP:每个核运行独立的OS,或者同种OS的独立实例;
SMP:一个OS的单一实例同时管理所有CPU,所有应用可以浮动到其中任一个去运行;
BMP:一个OS的单一实例同时管理所有CPU,但可以将某些应用或者线程锁定在指定的CPU上运行,实际上是SMP的一种特例;
多核技术的软件开发要求
1 架构方面:
提升软件并行性
算法级(使用并行算法、使用OpenMP编程)
任务级(流水线、多实例)
合理规划资源分配(中断资源分配、处理器分配)
2 编程方面:
选用适当的同步手段
控制锁粒度
充分认识多核带来的程序并发性提高(同时多任务运行、关中断将不确保安全的同步)
3 下层支撑平台提供支持:
多种类型同步手段(spinLock,读写锁、全局中断锁…)
快速核间通讯手段(IPI机制)
并发任务管理,二级调度任务间的同步性