如何简化向多核的迁移的基本指导
简介
本文引用地址://m.amcfsurvey.com/article/148037.htm全球对计算功率和性能日益增长的需求已经将嵌入式计算推向多核系统发展路径。该迁移带来一系列复杂的问题:我该如何迁移传统软件,使其与多核硬件一起使用?我是否需要通过虚拟化实现更高性能?我如何能够在一个对我来说可以承担的功率范围中获得所需的性能?通过结合高性能硬件;强大的、用户友好型软件和工具;以及广泛的开放式生态系统,飞思卡尔可以帮助您解决这些问题和更多其他问题。
虽然向多核的迁移开始于网络和无线基础设施等高端应用,多核也开始用于过去应用较少的领域,例如汽车、工业控制应用的安全关键领域、以及打印机和影像应用-可以使用更高速度和功率的任意应用。向全球网络连接性的迁移给网络带来巨大压力,并增加了对更高处理功率的需求。如果没有呈几何级增长的功率,单线程性能无法继续提高,这种方法会影响系统成本和可靠性。为了将功率保持在可以管理的等级,应用必须迁移至多核,而不是不断增加频率。
实现多核性能等级不像向系统中添加更多内核那样简单。当从单核迁移至多核硬件时,出现许多与传统软件的迁移有关的复杂问题。总体来看,在这种迁移和多线程编程领域软件工程师缺乏培训。虚拟化对于最大限度发挥多核硬件投资的价值至关重要,是一种截然不同的思考操作系统和资源分区的方式。当您在解决方案中添加更多处理功率时,多核系统当然无法避免发生问题:功耗。
飞思卡尔是世界领先的嵌入式处理技术提供商,至今已向世界各地发送了3亿多个通信处理器。我们的多核QorIQ通信处理器、面向片上基站无线系统的QorIQ Qonverge平台和VortiQa软件解决方案--在全球有众多经验丰富的现场支持工程师和强大、开放的合作伙伴生态系统-将我们的嵌入式处理技术带入新网络纪元。
![简化向多核的迁移](http://m.amcfsurvey.com/uphotos/fetch/20130729/148037_1_0.jpg)
软件问题
向多核迁移路径中两个巨大的障碍都涉及软件。 第一个问题是其中的一项迁移。 用于单处理器顺序执行程序的数百万行传统代码必须迁移以便保护投资。 在映射和迁移变得更加简单和更加高效之前,从单核迁移至多核系统在某种程度上将非常困难。 第二个问题是缺乏关于多核系统编程的基本知识。 从硬件来看,安装多个内核非常简单,但是与以前的单核编程相比,多核编程需要不同的思路和不同的培训。
飞思卡尔在培训和工具上进行了大量投资,使向多核迁移变得更加简单。QorIQ多核软件开发套件(SDK)和CodeWarrior开发工具等开发工具有助于移植流程。飞思卡尔和我们的合作伙伴还提供用于仿真和建模分析的工具,包括处理器分区的“假设”分析。 开发人员的培训始终是需要关注的重点。提供了在多核处理器上重新映射序列应用的流程的真实案例,飞思卡尔还根据这些研究为开发人员开发了应用说明、演示文档和文章。
飞思卡尔预计约有60%至70%的多核研发预算都用在软件而不是硬件上。飞思卡尔始终关注这一点,使多核产品对软件的适应性非常强。 飞思卡尔在QorIQ平台架构中设计了许多功能,提高了软件工程师在迁移旧代码和编写新代码方面的工作效率。之前已经提到,软件研发时间占到60%至70%,根据预计有超过50%的时间用在调试软件和优化性能。飞思卡尔的产品帮助缩短这一时间,并使软件工程师更加高效。
例如,飞思卡尔的用户空间数据路径加速架构(USDPAA)软件比传统的通过内核访问驱动器的方式在性能上有很大的提高。该软件包含通过多个CPU内核支持简化共享网络接口和加速器的硬件组件。队列管理器和缓冲器管理器组件提供了基础架构,用于与内核、硬件加速器和接口之间往复传递数据包。软件通过称为门户的硬件组件访问数据路径加速架构。USDPAA是一款使Linux用户空间应用能够通过高性能的方式直接访问门户的软件框架。USDPAA帮助传统Pthread/用户空间应用的开发和移植变得非常简单。
虚拟化和可视性
多核开发与单核开发不同的另一个方面是如何集成软件和硬件。第一代多核处理器具有相同内核的多个实例。从另一方面来说,飞思卡尔QorIQ Qonverge平台在一个芯片上混合了处理元件:Power Architecture内核、StarCore DSP和多个加速引擎。未来的产品将在一个芯片上提供更多内核,并且在一个芯片上混合不同的内核类型。最大的区别是所有内核都将被虚拟化。在一个虚拟化的系统中,应用的每个任务都需要映射至相应的处理模块。目前,该流程需要很多人力来完成。必须提供以更紧密的方式集成的分区工具、映射工具和分解工具,使软件工程师能够快速可视化分区,根据性能、功率、存储器等执行“假如”分析,然后选择目标实施并执行。
下一个步骤是调试应用。该步骤的关键是能够观察这些复杂芯片的所有等级。大多数芯片在处理器内核等级都将具有可视性,但是您最终需要完整的内部可视性,包括I/O、存储器控制器和加速引擎。当您具有可视性以后,您还需要可控制性。
![虚拟化和可视性](http://m.amcfsurvey.com/uphotos/fetch/20130729/148037_1_1.jpg)
您是否能够以非常精细的方式控制这些具有许多内核和不同内核类型的高度复杂的芯片? 您是否能够控制数据的移动方式?为了找到答案,您可以针对数据如何移动执行快速的“假如”分析。这使您可以获得系统可视性。然后,您拥有了一个“旋钮”,您可以从来自“假如”分析的目标方案中获得更高性能。这涉及软件和硬件。 芯片中如果没有正确的调试hook,它将不具有可视性。如果调试hook存在,但是API未将其暴露给工具和调试器,将没有可视性。如果没有芯片hook也将没有可控制性,并且hook应与工具套件集成。
飞思卡尔QorIQ多核SDK和CodeWarrior开发工具嵌入了广泛的可视性,可接入至我们的处理器中,因此开发人员可以完全利用内核和资源,并调试复杂的片上交互。
飞思卡尔的嵌入式管理程序对于虚拟化非常重要,它是嵌入式通信处理领域第一款具有最高性能的处理器。管理程序是系统级软件,允许多个操作系统访问常用外设和存储器资源,并且在多个内核之间提供通信机制。 在一个多核系统中,任务不应以物理的方式映射至处理资源。
评论