随着多核处理器的发展,对软件开发有非常大的影响,而且核心的瓶颈在软件上
软件开发在多核环境下的核心是多线程开发
这个多线程不仅代表了软件实现上多线程,要求在硬件上也采用多线程技术
可以说多核提供了可以大幅提升性能的机制,多核软件就是可以真正利用这一特点的策略
只有与多核硬件相适应的软件,才能真正地发挥多核的性能
多核对软件的要求包括对多核操作系统的要求和对应用软件的要求
多核操作系统的关注点在于进程的分配和调度
进程的分配将进程分配到合理的物理核上,因为不同的核在共享性和历史运行情况都是不同的
有的物理核能够共享二级 cache,而有的却是独立的
如果将有数据共享的进程分配给有共享二级 cache 的核上,将大大提升性能;反之,就有可能影响性能
进程调度会涉及到比较广泛的问题,比如负载均衡、实时性等
面向多核体系结构的操作系统调度目前多核软件的一个热点,其中研究的热点主要有下面几方面:程序的并行研究;多进程的时间相关性研究;任务的分配与调度;缓存的错误共享;一致性访问研究;进程间通信;多处理器核内部资源竞争等等
这些探讨相互独立又相互依赖
考虑一个系统的性能时必须将其中的几点同时加以考虑,有时候对一些点的优化会造成另一些点的性能下降,需要用程序进行性能优化评测,所以合适的多核系统软件方案正在形成过程中
任务的分配是多核时代提出的新概念
在单核时代,没有核的任务分配的问题,一共只有一个核的资源可被使用
而在多核体系下,有多个核可以被使用
如果系统中有几个进程需要分配,是将他们均匀地分配到各个处理器核,还是一起分配到一个处理器核,或是按照一定的算法进行分配
并且这个分配还受底层系统结构的影响,系统是 SMP 构架还是 CMP 构架,在 CMP 构架中会共享二级缓存的核的数量,这是影响分配算法的因子
任务分配结束后,需要考虑任务调度
对于不同的核,每个处理器核可以有自己独立