多核研究现状

目前,多核技术已经成为最受关注的话题和研究方向。多核体系结构为性能提高和节能计算等领域开辟了新的方向。然而,现在的多核处理器还没有统一的标准,基本上处于探索阶段。核与核之间的连接方式、通讯协调方式、同一处理器中核与核间结构的差异、器件资源分配策略、任务调度策略、节能策略、软硬件协同设计策略等方面都处于研究探索之中。多核必将带来影响整个计算机行业方方面面的巨大变革,包括体系结构研究、嵌入式系统设计和解决方案设计、编译技术、操作系统核心算法、应用软件设计等计算机系统的各个领域。

在单核处理器研究中,主要集中在提高频率,提高指令级并行度等方面。而在多核体系中,更加关注核与核之间的协作、共享资源的分配、提高线程级并行度等方面。

多核处理器必然带来一个问题是,需要提高程序的并行度,因为单线程程序是无法发挥多核处理器的优势的。通过编译优化可以把原先单线程的代码编译成多线程的形式。OpenMP提供了一种方法,程序员根据需要把可以并行处理的代码加上合适的标记,编译器根据这些标记把相应代码编译成多线程的程序段。多线程程序开发涉及到多线程调试的难题,这在多核处理器上会变得更加困难,所以多核体系导致程序开发模式发生巨大变化。

多核处理器上的任务调度也是个新问题,常用的调度算法有全局队列调度和局部队列调度。前者是指操作系统维护一个全局的任务等待队列,当系统中有一个CPU核心空闲时,操作系统就从全局任务等待队列中选取就绪任务开始在此核心上执行。这种方法的优点是CPU核心利用率较高。后者是指操作系统为每个CPU内核维护一个局部的任务等待队列,当系统中有一个CPU内核空闲时,便从该核心的任务等待队列中选取恰当的任务执行,这种方法的优点是任务基本上无需在多个CPU核心间切换,有利于提高CPU核心局部Cache命中率,从而提高系统的性能。目前多数CMP操作系统采用的是基于全局队列的任务调度算法。

如何有效地利用多核技术,对于多核平台上的应用程序员来说是个首要问题。多核时代的到来需要软件开发者必须找出新的开发软件的方法,选择程序执行模型。在多核系统中,核心是通过内存共享数据和通讯。为了充分利用多核,程序需要同时做很多事情。并行程序执行指令的速度将比传统的串行程序要快很多,因为它能将工作负载按照不同需求分配给处理器的不同核心

你可能感兴趣的:(设计模式,多线程,数据结构,算法,嵌入式)