摘要
多核处理器也称为片上多处理器(chip multi-processor,CMP)。自1996年美国斯坦福大学首次提出片上多处理器(CMP)思想和首个多核结构原型,到2001年mM推出第一个商用多核处理器POWER4,再到2005年Intel和AMD多核处理器的大规模应用,最后到现在多核成为市场主流,多核处理器经历了十几年的发展。在这个过程中,多核处理器的应用范围已覆盖了多媒体计算、嵌入式设备、个人计算机、商用服务器和高性能计算机等众多领域,多核技术及其相关研究也迅速发展,比如多核结构设计方法、片上互连技术、可重构技术、下一代众核技术等。
随着嵌入式技术的飞速发展,嵌入式处理需求也在快速增长,在集成电路技术飞速发展的今天,单核处理器的性能已经发展到一个相对比较高的高度,单纯依靠提高单核处理器的性能来提高系统的实时性已经不足够,系统架构正朝着多处理器设计的方向发展,以解决单处理器系统复杂度太高和计算能力不足的问题。本文主要讨论多核技术在嵌入式系统中的应用,在嵌入式系统中使用多处理器来共同协作完成任务,当数据到达时,由数据包分发处理器分发给处理数据包处理器,多个处理数据包处理器是对称的均可平等的处理数据,以达到提高系统的实时性的目的。
本文主要讨论多核技术在提高嵌入式系统实时性方面的应用。
前言
近几年来,处理器的速度遭遇到了瓶颈。摩尔定律表明,每隔18到24个月芯片中晶体管的数量就会增加一倍,而芯片性能也随之线性增长,过去的四十年里,芯片生产厂商通过增加处理器的时钟速度来提高芯片的性能,如从100MHz到200MHz,再到最近的数GHz的范围。但是在今天,由于功耗和散热的限制,提高时钟速度来增加性能的方法行不通了。于是,芯片厂商开始转向另一种全新的芯片构架,就是使单独的芯片具有多个处理器器核心,使之能够直接插入单一的处理器插槽中,同时操作系统会利用所有相关的资源,将它的每个执行内核作为分立的逻辑处理器。通过在两个执行内核之间划分任务,多核处理器可在特定的时钟周期内执行更多任务。多核架构能够使目前的软件更出色地运行,并创建一个促进未来的软件编写更趋完善的架构。
多处理器的常见用途有:
1. 多个独立功能。设计可能需要应对多个独立的处理任务,解决这个问题的最好的方法是为每个处理任务创建独立的专用处理模块,并为每个处理模块分配专用处理器和外设集。
2. 接口处理。对于作为多接口之间的桥梁或开关的系统,可以分配一个从处理器用于处理每个接口上的数据,而用一个或者多个主处理器处理更高级的桥接或者开关任务。
3. 数据流处理。对于数据流计算问题,可以安排多个处理器以流水线的方式处理数据流,多处理器流水线的每一级都要在将数据传到下一个处理器之前完成一部分计算任务,这是提高系统吞吐量的一种有效方式。
4. 可靠性和冗余度。可以多次复制处理系统以提高可靠性和冗余度。
5. 对称处理。传统的对称处理(SMP)是一种十分有用的解决方案,可以通过它提升那些不存在明确划分边界的应用性能。一个具体SMP功能的OS层可以管理并行任务,并且在多处理器之间自动调度这些任务。
国内外发展现状
嵌入式实时技术是近年来发展最为迅猛、最受人们关注的一门新兴技术,也是当今中国IT领域最为热门的话题。随着计算机应用的普及、互联网技术的发展,全过程自动化产品制造、大范围电子商务活动、高度协同科学实验以及数字化家庭的兴起,大量的嵌入式设备被嵌入到人们的工作、生活空间中。面对嵌入式系统功能的复杂化,对性能要求、功耗要求的不断提高,越来越多的嵌入式应用需要基于多核处理器的硬件环境。
嵌入式系统也不可避免的遇到了功耗和散热方面的问题,对于嵌入式系统而言,多核技术可以提供更高的处理器性能、更有效的电源利用率,并且占用更少的物理空间,因而具有许多单核处理器无法具备的优势。以往嵌入式系统的实时性研究主要集中于任务调度和切换、实时任务的通信和容错性等,未涉及到实时任务本身的改造。而当前多核的优化更关注于系统的吞吐量,而非针对某一实时任务的优化。目前多核处理器已成为服务器和桌面的主流,不久将广泛地运用在高端嵌入式领域。
在嵌入式实时系统中的应用情况
一.嵌入式系统以及实时系统简介
嵌入式系统(Embedded System)即是嵌入式计算机系统的简称,它是相对于通用计算机系统而言的。IEEE(国际电气和电子工程协会)的定义:嵌入式系统是“控制、监视或者辅助设备、机器和车间的装置”。而目前国内比较认同的定义从技术的角度来讲,是以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积及功耗严格要求的专用计算机系统。从系统的角度来讲,是指设计完成复杂功能的硬件和软件,并使其紧密藕合在一起的计算机系统。
实时系统的定义:一个任务的正确与否不仅依赖于它的逻辑正确性,而且依赖于它的完成时间。在一个硬实时系统中,超时完成是没有意义的;而在一个软实时系统中却可以忍受这样的超时,结果是质量的下降(比如播放视频时丢失帧)。
二.多核技术在嵌入式实时系统中的应用
在嵌入式系统中,其核心问题是系统的实时性,这也是嵌入式系统和其他系统的根本区别所在。现在围绕提高嵌入式系统的实时性的研究是热点问题,很多研究都围绕着通过提高嵌入式设备的性能来提高嵌入式系统的实时性。但随着集成电路技术的发展,处理器的性能提升已不能指望主频的提高,因为功耗和产生的热量随时钟频率呈指数增长。考虑在系统中使用多处理器来共同协作完成任务可以大大提高整个系统的工作效率。
多处理器系统就是在一个系统中含有多个CPU,每个CPU独立地处理一个或少量的事务,在操作系统的控制下,控制数据合理流动,以完成设计要求的系统。多处理器系统的结构如图2-1所示。使用多处理器主要有两种目的:一种是想利用多台处理器进行多任务处理;一种是想依靠冗余的处理器及重组能力来提高系统的可靠性、适应性和可用性。
多处理器系统中,根据多个处理器之间的相互关系可以分为两类:对称多处理器和非对称多处理器。在对称式多处理器系统中,系统资源如存储器和磁盘输入/输出(I/O)被系统中的所有微处理器共享,工作负载被均匀地分配到所有可用处理器上,从而避免对某些特定任务,一些处理器忙不过来,而另一些处理器却闲着。当系统中加入新处理器时,对所有的任务,对称式多处理器系统的性能都会提高。对称多处理器对存储器的访问采用的是均匀存储访问的模式,其结构如图2-2所示,其特点是:
1.物理存储器被所有处理器均匀共享;
2.所有处理器访问任何存储单元用相同时间;
3.每台处理器可带私有高速缓存;
4.外围设备也可以一定形式共享
在非对称式多处理器系统中,任务和系统资源由不同的处理器进行管理。例如,一个处理器处理I/O,而另一个处理器处理网络操作系统任务。由于非对多处理器系统中各CPU具有不同的特性及其所控制的外围设备不同,所以非对称多处理器系统不进行负载平衡。一个微处理器可能忙碌不堪,而另一个处理却可能空闲无事。
核心技术情况分析(2500字)
一.多核技术
多核技术可以看成是一种CPU的集成技术,在一个CPU处理模块上,可以集成2个或者是多个CPU,但是,他们还是单独的物理CPU。
多核处理器将多个完全功能的核心集成在同一个芯片内,整个芯片作为一个统一的结构对外提供服务,输出性能。多核处理器首先通过集成多个单线程处理核心或者集成多个同时多线程处理核心,使得整个处理器可同时执行的线程数或任务数是单处理器的数倍,这极大地提升了处理器的并行性能。其次,多个核集成在片内,极大地缩短了核间的互连线,核间通信延迟变低,提高了通信效率,数据传输带宽也得到提高。再者,多核结构有效共享资源,片上资源的利用率得到了提高,功耗也随着器件的减少得到了降低。最后,多核结构简单,易于优化设计,扩展性强。这些优势最终推动了多核的发展并逐渐取代单处理器成为主流。
二.多处理器结构
采用多处理器结构分工处理数据信息,而且多处理器协同工作可以增强控制系统数据通信速度和信息处理能力。例如,测控系统中的处理器所做的最主要的工作就是数据处理,当然数据处理工作中也包含了大量的I/O工作。如果在系统中使用对称多处理器结构,各处理器平均的处理采集点返回的数据,这样相当于多个处理器同时处理多个数据,首先可以从根本上缩短处理数据本身所使用的时间。其次,由于多处理器是对称的,返回的数据在任何一个处理器上都可以被处理,所以工作负载可以被平均分配到所有的处理器中,这样就消除了上文所说的实时性方面的瓶颈问题。但多个处理器是对称的,如何给处理器分配数据包、如何使工作负载更均衡,这就需要操作系统中的调度算法来控制。调度算法往往使用轮询的方式把数据包分配给处理器,这样消耗了一定的时间,不利于提高系统的实时性。针对上述结构的缺点,根据嵌入式实时监控系统监控点多、数据采集量大的特点,把非对称多处理器结构和对称多处理器结构相结合,其设计思想如下:
当大量的采集数据被送到多处理器系统中后,可以先设一个处理器专门负责数据包的分发工作,并且由该处理器时刻监控其它处理器的工作状态,根据其它处理器的工作状态来决定如何分发数据包。这样就避免了数据包进入多处理器系统后需要轮询各处理器所消耗的时间。各监控点采集来的数据包首先在数据包分发处理器前排队等待处理。数据包分发处理器根据队列中数据包的优先级以及各处理数据包处理器的工作状态把数据包分发给各处理数据包处理器进行处理。由于数据包分发处理器只负责简单的数据包分发工作,所以数据包在该处理器前排队并不会等待很长时间。数据包被分发后发送到空闲状态的处理数据包处理器。各处理数据包处理器只负责数据的处理,它们之间是完全的对称关系。处理完数据后,再将处理好的数据传送回远端的服务器上。嵌入式测控系统的多处理器结构如图2-3所示。
数据包分发处理器与处理数据包处理器是不对称的。数据包分发处理器只负责数据包的分发工作。分发的依据是数据包的优先级,数据包被分配给处理数据包处理器的时候不采用轮询的方式,因为轮询会消耗一定的时间。优先级确定好的数据包被放入缓存区中排队,等待多处理器中有空闲状态的处理器来处理。多个处理数据包处理器之间则是完全平等的关系,采用共享内存的方式连接在一起。若管理平台采用普通的对称式多处理器系统,则采集点传回来的数据包需要在系统的调度算法的控制下分发给各处理数据包处理器,调度算法的使用会占用一定的系统资源,且实现起来代价很高。而添加了数据包分发处理器后,各处理器还是处于对称的地位,只是具体分工不同。分发工作全部由数据包分发处理器完成,这样可以使各处理数据包处理器专心处理数据包,且不需要调度算法,实现起来开销更小,效率更高。
三.多处理器系统中的问题
与单处理器系统相比,多处理器结构的实现必须考虑和解决一些特殊问题:
1.处理器之间的负载问题
在单处理器结构中不存在负载不均匀的问题。但在多处理器结构中,如何把工作更均衡的分配给各个处理器,使多处理器之间的负载更均衡是重要的问题。在对称多处理器结构中,需要尽量把工作平均分配给各个处理器,而对于非对称处理器结构,每个处理器有自己特定的工作,工作的时候是各负其责,所以很多情况下不能够平均分配负载。如何解决系统中不同的分配负载的问题需要操作系统的调度算法来实现。
2.处理器间通信的问题
在单处理器结构中不存在处理器之间的通信,只有进程之间的通信。各个进程看上去是并行的,但实际上却是串行的,因为在任一个时刻只有一个进程在真正运行。在这样的系统中,进程间的同步和互斥是比较容易的。对临界资源的操作中途不发生进程调度,而且不产生与所使用的临界资源有关的中断,就可以保证操作的互斥性。在多处理器结构中,各个处理器并不是相互孤立的,而是协同工作的。那么处理器间就需要进行通信。现有系统中常用的方法有:利用双口RAM实现CPU之间的通信、利用共享内存的方法实现CPU之间的通信、利用总线的方法实现CPU之间的通信等。
3.高速缓存与内存之间内容的一致性问题
在单处理器结构中,使用高速缓存的目的仅在于通过提高CPU取指令和读写数据的速度来改善系统的性能。高速缓存一般在CPU内部,有非常高的访问效率。在多处理器结构中,由于一个CPU并不知道别的CPU会在何时改变所存储的内容,这样就会造成单个CPU的高速缓存在与多个CPU共享的内存之间数据的不一致问题。在对称多处理器结构中高速缓存的作用比在单处理器结构中更为重要,因为它不但可以提高取指令和读写数据的速度,还有利于减少多个CPU在访问内存时的冲突。一般的内存都不允许在同一时间内受到多个CPU的访问,所以,在对称多处理器结构中通常每个CPU都有较大的高速缓存,从而一旦把高速缓存装满以后,就可以运行相当长的时间而无需经常读写物理内存。
4.中断的处理问题
在单处理器结构中,所有的中断请求都由同一个CPU响应和处理。但在多处理器结构中,由于存在多个CPU,如果使用一套操作系统进行管理,对于中断就显得非常难以处理。甚至需要某些硬件加以支持。
趋势
多核处理器面世后给人们的最深印象就是出色的多任务处理性能,对于本身有此需求的用户们来说,可以更为迅速地提升工作效率,通俗地说即是可以在同一时间内让电脑干更多的事情。然而熟悉电脑的玩家们也清楚地看到,从单核到双核,多任务性能的提升是非常明显的,但是从双核到四核,这种提升的幅度就相对减少,并不是简单的“双倍”关系。因此,随着核心数量的增加,在软、硬件上如何更好地提高多核产品的并行处理效率将是今后上游厂商努力发展的一个方向。
从能源角度去看,多核处理器发展的一个重要方向还应该包括如何节能的问题。目前正在解决或者将在解决的是多核处理器要动态实现根据实际使用需求去使用核心数量以节省能源。目前已经实现的随意开启或屏蔽核心数量已经在一定程度上实现了这个功能,今后核心数量的开启与关闭将会越来越节能化。
关于作为嵌入式“大脑”的微处理器及DSP(数字处理器)的发展也是业界关注的焦点。然而,产品功耗不断增长标志着单核处理器已经接近极限,而作为刚刚处于萌发阶段的多核处理技术,可以通过多核结构来减轻单核所面临的种种困难。大力发展多核技术,将会引起嵌入式技术再次腾飞。
结论
随着电子消费品市场的飞速发展,消费者的要求越来越高,基于多核技术在嵌入式系统的产品应该向着高实时性、离性能、低功耗、系统可裁剪、可升级性等方面发展。具有多核技术在嵌入式系统中的设计和开发过程当中有许多问题还在研究和探讨之中,基于多核技术的嵌入式系统是一种知识与技术含量较高的综合性设计,它的飞跃发展给设计者提出了新的挑战。
参考文献
[1] 熊庆国,王鑫,文昕,王恒心.多核技术在嵌入式领域的新发展.武汉.仪器仪表学报.2006.6.
[2] 俞建德.支持异构多核的嵌入式实时操作系统SmartOSEK OS-M.浙江大学.2008.6.
[3]王昊鹏.嵌入式系统中的实时性研究.山东大学.2008.4.
[4]迟青爽. 基于RTEMS多核嵌入式系统安全性及引导技术研究.哈尔滨工业大学.2010.6.
[5] Vasanth Asokan. 满足嵌入式系统应用的多核处理器SoC设计. 赛灵思公司.