在整个嵌入式范畴,“更多内核”已经成为规划趋势,一些硬件架构能够供给数十个内核,有些架构中的内核乃至多达上千个。但是,多内核规划在软件方面仍存在许多应战,在不同架构间进行运用程序的移植并不简略。
在低端嵌入式范畴,单内核解决计划依然存在。经过选用速度更快或带宽更宽的处理器仍有或许提高体系的功用和功用曲线。在高端范畴,多内核是必定的发展方向。这正是双精度浮点算法常常出现并在超级计算机中长盛不衰的原因。事实上,台式机和机架装置体系(比方Nvidia的产品)正在将这种处理才能普及化。
在评论软件和多内核架构时常常提及的另一个问题是虚拟化。并不是一切多内核渠道都支撑虚拟化,但虚拟化确实能带来更好的时机。尽管虚拟化使得硬件规划面对更多的应战,但它一般能简化软件和运用办理。
SMP服务器
Xeon Nehalem-EX是Intel公司供给的尖端8内核对称多处理(SMP)渠道。像8芯片、64内核体系这样的多芯片解决计划,一般选用高速 QuickPath点到点互连技能将处理器和外设控制器链接在一起(图1)。运用过带HyperTransport链路的AMD Opteron处理器的工程师,对这种架构十分了解。在这两种状况下,最简略的装备是单个处理器经过单条高速链路链接到单个外设控制器。
除了供给分布式内存子体系外,Intel和AMD还完结了连接缓冲非统一内存寻址(ccNUMA)技能。每个处理器芯片都有自己的内存控制器以及一级、二级和三级缓存。任何芯片都能够运用高速链路拜访其它任何芯片中的内存。当然,离恳求者越远的数据拜访时刻越长。这些高速链路也被用于消费设备,但只要到 I/O中心的单条链路是必需的。换句话说,在同享内存拜访时服务器将在处理器芯片间发生显着的流量。芯片至芯片流量和缓存办理是高效操作的要害。
HT Assist是AMD最新推出的Istanbul Opteron处理器的一个重要功用,它经过优化内存恳求和呼应进程来尽量削减相关业务处理的数量,从而释放出许多带宽用于处理其它业务(图2)。HT Assist实践上会盯梢数据在内核和缓存间的移动,答应恳求得到具有所需数据的最近内核的服务。
最坏的状况是拥有片外存储器空间的芯片有必要从片外存储器拜访数据;最好的状况是发现数据正好坐落运转着需求这个数据的线程的芯片缓存中;中心状况是内核从相邻芯片的缓存中获取数据。运用虚拟化和缓存技能后体系将变得愈加杂乱,并导致数据延时愈加难以确定。这在确定性嵌入式运用中或许是个问题,但在大多数服务器运用中问题并不十分显着,由于这种状况下的速度比精密确实定性愈加重要。
编程人员现在都在运用这些渠道,由于它们能大大简化编程使命。相同,运用程序能够运用越来越多的内核,条件是运用程序可高效地运用足够的线程。高效运用多内核体系并不像外表看起来那么简略。缓存巨细和运用程序作业数据会集的参阅方位会影响特定算法的运转作用。
AMP运用处理器
对称处理(SMP)架构对许多嵌入式运用来说十分有用,但非对称多处理(AMP)也有它的用武之地。AMP装备在许多当地都能够看到,从TI的OMAP(敞开多媒体运用渠道)到飞思卡尔的P4080 QorIQ都有AMP的身影(图3)。
TI的OMAP 44xx渠道整合了ARM Cortex-A9、PowerVR SGX 540 GPU、C64x DSP和图画信号处理器。每个内核有专门的功用,处理器之间的通讯不是对称的。OMAP只作业在AMP形式,而P4080的内核是SMP体系,但也能够将内核区分为AMP形式。8内核芯片能够像8个独立内核那样运转,在许多装备中也能够联合起来运用(如一对双内核SMP子体系,或四个单内核子体系)。
OMAP和P4080在高层架构的首要区别是OMAP功用是固定的,内核针对各自的业务做了优化。这将使编程简略得多,由于能够依据匹配功用将运用程序区分到特定内核。
每个子体系的功用水平受架构的约束,但P4080能够调整区分计划,尽管区分一般是在体系启动时完结的。体系规划师能够调整P4080中内核的分配,条件是有足够多的内核。市场上也有内核数量较少的QorIQ渠道,因而能够选用更经济的芯片。
IBM的Cell处理器填补了中心的空白。它选用了1个64位的Power内核和8个增效处理单元(SPE)。一切SPE都是相同的(每个有256KB的内存),它们作业在阻隔状况,这与上述评论的同享内存SMP体系有所不同。SPE内没有缓存,也不支撑虚拟内存。
对软硬件规划来说,这种方法既有长处又有缺陷。长处为是简化了硬件完结,但从多个视点看都使软件杂乱化了。例如,内存办理受运用程序控制,就像内核间的通讯相同。数据在能够操作之前有必要要移进SPE的本地内存。彻底开发Cell这样的架构很花时刻,由于它们有别于更传统的SMP或AMP渠道。多年来在像索尼的PlayStation 3这样的根据Cell的渠道上所作的软件改善突显了编程技能和经历的改动。
GPU等专用处理器
改动编程技能是运用图形处理单元(GPU)是否成功的关健。来自ATI和Nvidia等公司的GPU在单个芯片内有上百个内核,这些GPU能够被整合进多芯片解决计划,向开发人员供给上千个内核。例如,集成进1U机箱的4个Nvidia Tesla T10就能够供给960个内核(图4)。
对Tesla或其它任何兼容的Nvidia GPU芯片进行编程都极具应战性,但相似Nvidia的CUDA这样的架构或根据CUDA的运转时运用能够使作业变得愈加轻松。部分应战来自于 Nvidia GPU的单指令、多线程(SIMT)架构。与许多高功用体系相同,这种GPU喜爱处理数组数据。对许多运用来说这是不错的挑选,但并非都是这样,这正是 GPU常常要与多内核CPU匹配的原因之一。