基于vxWorks的并行应用与设计笔记

1、多核应用

  • SMP
  • AMP
  • BAREMETAL
  • hypervisor

SMP:在多个核上跑一个操作系统。

基于vxWorks的并行应用与设计笔记

优点:核间负载平衡, 性能线性提升,

缺点: 应用程序的竞争条件,应用需要重新设计以利用多核能力,实时性不如AMP

AMP:在多个核上分跑不同或者相同的多个操作系统。

基于vxWorks的并行应用与设计笔记

优点:可以使用不同的OS,冗余备份;OS性能高于SMP,更易于伸缩;错误隔离

缺点:应用需要为AMP重新设计;负载不能自动平衡

baremeal:有些核不跑操作系统,而是裸程序。

基于vxWorks的并行应用与设计笔记

优点:提供了更高的性能;

缺点:开发环境支持少;设计代价更高;需要提供与OS和外部通信机制

hypervisor:

基于vxWorks的并行应用与设计笔记

优点:能够在一个核上运行多个OS; 更稳定安全;OS通过优先级调度可以获得实时响应;快速负载自动平衡;

缺点:性能有百分之几的损失;

2、多核架构

基于vxWorks的并行应用与设计笔记

以上两种架构区别在于L2是否共享,目前大部分架构是L2共享式。举个例子:

基于vxWorks的并行应用与设计笔记

硬件上也存在同构与异构结构。

基于vxWorks的并行应用与设计笔记

异构多核可以充分利用特定的处理器能力完成特定的任务。如数学运算核、通信核、图形核、通用核。目前我们使用的手机多为异型多核,可以查看手机规格手册。

片上多核之间有多种联接方式。

Shared BUS

Crossbar

Network on Chip(NOC)

共享总线型如下所示:

基于vxWorks的并行应用与设计笔记

优点: 简单,易于实现;

缺点:不易伸缩

例如:MPC8541D

交叉互联:

基于vxWorks的并行应用与设计笔记

优点:  并行互联,

缺点: 代价高,需要更多片上空间

例如:AMD Athlon

片上网络互联:

基于vxWorks的并行应用与设计笔记

优点:  高度可伸缩,

缺点:复杂

例如:cavium cn38xx

一致性和非一致性内存访问 UMA/NUMA:以核访问内存时间是否一致决定

基于vxWorks的并行应用与设计笔记

两种cache一致性协议:snoop与directory

基于vxWorks的并行应用与设计笔记

每个核有个嗅探单元,监测总线事务,发现变化立马更改。

基于vxWorks的并行应用与设计笔记

目录协议使用一个所有核可查的表来表示内存状态,每个核访问时查目录表。

3、并行设计机制

并行分为比特,指令,任务,数据级并行

基于vxWorks的并行应用与设计笔记

为了提高并行,应尽量减少共享。

可以使用任务分解/划分;通信和同步;聚合;映射等方式实现。

基于vxWorks的并行应用与设计笔记

将任务分成成多核并行运行的多个任务。

基于vxWorks的并行应用与设计笔记

问题分解后就将串行指令集变成了并行执行的指令集。

问题分解可分成按数据与按功能:

基于vxWorks的并行应用与设计笔记

使用粗粒度分解可以提高性能。

聚合:

基于vxWorks的并行应用与设计笔记

task1与tas4之间,task2与task3之间无其它任务切换,则可以合并两个任务,实现粗粒度,提高性能。

4、并行设计模式与并行算法

基于vxWorks的并行应用与设计笔记

由上图可以看出,编程串行度越高,并行执行速度越低。当串行度降低到50%以上时,再多的核心也无法显著提高性能。

那么如何量化并行?

ADG:任务无循环依赖图:

基于vxWorks的并行应用与设计笔记

上面最大的并行度为3。

关键路径长度:

基于vxWorks的并行应用与设计笔记

红色数据表示任务持续时间。

结论: 短的关键路径可以增加并发程度

并发level取决于: 并发程度和关键路径; 任务粒度