面向嵌入式系统设计师的多核技术培训

多核是一项不可避免的技术,因此我们应该习惯于将其付诸实践。但是我们知道,多核已经引起了极大的关注,尤其是在工程师决定使用哪种多核平台时,或者试图加快在多核平台上构建其应用程序的最佳技术时。

在 今年的MulticoreExpo,我们努力地进行了组装 60位经验丰富的多核爱好者可以在9条轨道上讲授课程,重点是多核技术的关键领域。以下是该计划中一流课程的一些示例,展示了在使用多核技术进行开发时可以应用的复杂设计技术。

应用并行化和负载平衡

在应用程序中最大化并行化已成为多核程序员的主要目标和挑战。嵌入式开发工程师可以使用多线程技术来提高并发性。

在会议“希拉尔咨询公司的Gaston Hillar将与英特尔凌动家族(ME745)并行编程的可能性”,将解释说可以利用超线程,并行编程技术和SIMD对英特尔双核Atom N270和4核Atom 330进行并行优化说明。

从Hillar的演示中可以确定,无论从应用程序中提取多少并行度,其他因素(例如处理器和操作系统)在获得最终性能方面都起着关键作用。

此外,在会议“Synopsys的Kalyan Saladi解释了多核架构上细粒度并行应用程序(ME710)的性能考虑”,他解释了当今可用的多核架构之间的差异如何影响与细粒度并行应用程序相关的同步开销。

这些体系结构上的差异与各种各样的设计功能有关,例如内存互连,内存布局,缓存层次结构和CPU亲和性方案。Saladi在屏障同步技术和线程间数据共享的背景下解释了多核系统的性能差异。

除了与特定的多核处理器相关的体系结构功能之外,负载平衡还是确保适当利用资源的关键性能考虑。

在大多数情况下,它留给来解决实际的问题,即如何在可用核心上划分,分配和调度工作负载。

由Enea的Daniel Forsgren主持的会议“探索多核AMP系统的动态负载平衡(ME725),探索非对称多处理(AMP)系统上的负载平衡的潜在解决方案,并举例说明DSP基带应用的要点以及它们如何从动态负载平衡中受益。

进程间和内核间通信

除了负载平衡外,AMP系统的另一个重要方面是两个或更多不同操作系统的集成。MentorGraphics的Stephen Olsen提出了“在多核系统(ME793)上实现多OS的挑战”,并阐述了许多固有的挑战,例如资源管理,可伸缩性和同步。

随着用于多个操作系统的操作复杂性的增加,使用混合进程间通信(IPC)变得至关重要。但是IPC也非常适用于其他类型的内核间通信,无论是同构的还是异构的多核。

会议“PolyCore Software的Sven Brehmer交付了“多核方法和应用程序迁移流程(ME728)”,解释了如何使用标准化IPC方法将应用程序从单核迁移到多核以及在不同类型的多核平台之间进行迁移。

Brehmer的会议还涵盖了应用程序分析和策略,这些应用程序和策略用于在多个内核之间分配应用程序,以利用功能流水线和并发。

作为将任务分配给特定内核的先驱,您应该使用与平台无关的框图方法,以在应用程序中获得更大的灵活性和可伸缩性。这种方法论进一步强调了通信设计的价值,随着系统核心数的增加,通信设计的价值反过来变得越来越重要。

有趣的是,这可以使设计任务与用于设计硬件系统的方法具有可比性:网表,综合和仿真。ProximusDA的Enno Wein在他的主题为“为什么“多核软件开发类似于硬件设计(ME808)”,详细说明了如何使用事务级别建模(TLM),因为它完全分解了功能中的通信-甚至“平台”也可以分解并作为独立的“维度”进行处理。 ”

正如我们所讨论的,内核间通信的软件设计方面对系统的性能和可伸缩性具有重要影响。但是,内核间通信的硬件方面对系统性能同样重要。

高性能要求,服务质量需求和物理设计约束使得将越来越多的异构IP内核集成到SoC中成为一个巨大的挑战。

在会议““ Articles的Geert Rosseel使用网络上的芯片(ME807)进行异构IP的SoC集成”描述了基于分组数据传输和灵活拓扑的NoC如何解决多核集成中当前的挑战并提高整体系统性能。

回到软件设计的块级方法,它的另一个好处是可以帮助减少程序中的依赖关系。尽管在基于对称多处理(SMP)架构的系统中这是更常见的情况,但竞争条件是数据依赖项的副产品。

您可能需要对应用程序进行重新架构,以避免这些情况,重点是数据流并确定关键代码区域。会议“由PTR Group的MikeAnderson提出的“在Linux中控制多核竞争条件(ME701)”详细阐述了线程争用,优先级抢占以及随之而来的竞争条件的问题和解决方案,这些问题和解决方案在将单处理器代码移植到多核系统中时很普遍。

继续分析线程争用情况,波音公司的TomDickens提出“ThreadSafety是多核而不是性能的主要考虑因素-或-可以肯定的是,它是快速的,但是否正确?(ME699)”。狄更斯的会议详细介绍了多核系统上与线程安全有关的问题,显示了不安全代码的真实示例(不要期望该代码在波音公司的Air Force One中运行)。本课程还将展示各种线程安全修复程序以及详细的摘要,这些摘要考虑了线程安全技术的性能后果。

解决多核调试挑战

假设您无意中将线程安全问题或任何其他不适当的问题引入了多核系统,发现造成的错误是另一个需要仔细检查的领域。爱立信的多米尼克·图芬(Dominique Toupin)指出,只有当完整的硬件和软件组件在实际负载下相互作用时,许多问题才会浮出水面。

在图芬的会议上,““ MulticoreDebug / Trace:最近的改进和前进的方式(ME689)”,他介绍了诸如低开销用户空间和零拷贝内核跟踪,信号,线程和NMI安全,无等待读副本更新,周期级时间周期等内核改进等改进。标记和非阻塞原子操作。

三星电子的Tasneem Brutch举办了另一场有趣的调试会议,名为“测试和调试并行程序:案例研究(ME752)”。Hersession描述了主动分析工具的两阶段方法,该方法用于补充多线程并行软件调试。

在第一阶段,静态或动态代码分析确定与并发相关的问题,包括原子性违规,数据争用和死锁。然后,将该阶段的输出作为输入提供给基础调度程序,以控制线程调度程序,并最小化在第一阶段可能已经确定的误报。

虚拟嵌入式开发工程师学习路线领取

化的愿景虚拟化和虚拟机管理程序是在Multicore Expo上广泛代表的其他重要主题。尽管有许多商业上可用的虚拟机管理程序,但很少有可用于满足嵌入式应用程序的实时需求。

系统管理程序集成商在大小,硬件支持,来宾操作系统支持,可伸缩性,通信和性能开销方面面临许多限制。此外,如果需要从一种虚拟化解决方案迁移到另一种虚拟化解决方案,那么所有解决方案都是专有的,具有挑战性的系统设计人员,具有复杂的可移植性问题。

诺基亚西门子通信公司的Alex Bachmutsky分析了大多数嵌入式,软实时和硬实时管理程序以及它们在电信应用中的适用性。Bachmutsky的本次会议名为““基于网络的多核电信系统的虚拟化(ME686)”,还描述了EEMBC的基准方法,系统开发人员可以使用该方法分析与管理程序相关的开销和延迟。

为了补充Bachmutsky的会议中提供的信息,Cavium Networks的Rajan Goyal涵盖了诸如准虚拟化vs等主题。全面虚拟化,SoC虚拟化,硬件辅助或协处理器虚拟化。

Goyal的会议名为““针对多核SoC的高级虚拟化技术(ME786)”还介绍了多核系统的虚拟化如何在不同域之间提供隔离和保护,这对于嵌入式系统的安全性而言日益重要。

多核设计涵盖了多种技术。本文介绍的示例会议仅代表演讲者在多核博览会期间提供的材料中的一小部分。这些会议将为您提供背景,以便您在实施基于多核的设计时做出关键的设计决策。

你可能感兴趣的:(大数据)