软件如何利用内核实现高效运行

描述

  作者:Ann Steffora Mutschler

  在编写软件时,设计工程师如何确定它将在特定目标平台上消耗多少功率?虽然这个问题看起来很简单,但答案并非如此。

  Synopsys低功耗解决方案集团技术营销总监Cary Chin表示,该行业才刚刚开始发展在该领域

  获取一些数据的能力。“当我们能够做到这一点时,我认为你会发现移动应用程序的编写方式实际上与你在笔记本电脑上运行的应用程序不同,因为它们将更好地优化功能,并且可能会在缓存数据方面做不同的事情。

  不过,要达到这一点并不容易。ARM的操作系统架构师Jason Parker表示,高能效软件需要从一开始就成为设计的一部分。“设计师需要不断问自己,‘这是解决这个问题最省电的方法吗?’试图将电源管理和效率改造到现有设计中是一项艰巨的工作,而且所有的银弹在很久以前就用完了。多处理器设计为电源管理开辟了额外的技术和限制。

  了解表面之下发生的事情是一个开始。线程和进程是表示 CPU 执行和可见内存空间的软件抽象。线程表示 CPU 的执行状态,例如程序计数器、寄存器和标志。他解释说,进程是受限的进程内存空间,供一个或多个线程在其中执行,而MMU则用于提供此内存。一个进程中通常可以有多个线程,并且它们都共享相同的数据。

  在单核处理器中,CPU 由操作系统内核调度程序在线程之间共享,执行由线程调度管理,线程优先级和时间切片和切换线程称为上下文切换。相比之下,多处理器 (MP) 将多个高效 CPU 组合在一起,可以以比单个高性能 CPU 更低的总功耗提供更高的聚合性能,并提供更多的电源管理选项,Parker 指出。

  MP系统分为对称系统和非对称系统。“非对称系统可以在不同的内核上运行不同的操作系统,协同工作以提供整个系统解决方案。例如,智能手机具有用于 Android 用户界面的 ARM CortexA8 应用处理器,以及在 RF 调制解调器中运行实时电话堆栈的不同 Cortex R4 处理器,以及用于图形、视频和低功耗音频的附加内核。这些系统的优点是可以定制每个子系统的处理器和资源,以最小的功耗提供预期的性能。缺点是系统架构通常是固定的,可能无法实现未来的要求,例如新的视频格式。

  同时,对称系统在相同的内核上运行单个操作系统内核,并有一个连贯的内存系统将它们连接在一起,Parker解释说。“SMP 操作系统将同时运行多个线程,旨在通过集群内的核心分担工作负载。结构良好的代码和算法是可并行化的,能够利用多核的性能。现有的代码和串行算法可能无法利用多个内核。SMP 操作系统中的电源管理系统将通过使用 DVFS 扩展内核的性能来控制功耗,并将关闭未使用/未充分利用的内核。

  当今复杂的 SoC 包含 SMP 和 AMP 子系统的混合体,其功耗针对各自的任务进行了优化。例如,“多核Cortex A9系统为开放平台操作系统提供了灵活性,其中未来的应用需求是未知的,而LTE调制解调器的CPU要求在设计时是已知的,”他说。

  实现最佳核心利用率

  但是,仅仅了解系统的结构是不够的。为了实现软件对内核的最佳利用率,应实施某些技术,同时牢记内核利用率是由子系统分区以及系统代码和算法的进一步并行化驱动的。Parker说:“操作系统调度器可以通过将线程及其数据保留在相同或本地CPU上来最大限度地提高执行效率,而应用程序软件可以通过使用线程亲和性来强制执行。

  最大限度地提高内核利用率将推动最大性能。然而,对于每个硅工艺来说,它可能不是最节能的解决方案,特别是那些具有电源管理功能的解决方案,当所需的总软件负载只是总性能的一小部分时,可以优化线程调度。例如,在一个 CPU 上总负载为 80% 的双核系统中,要问的关键问题是:

  1. 内核是否以 100% 的性能运行一个 CPU,而关闭第二个 CPU?

  2. 内核是否以 50% 的性能运行两个 CPU,频率、电压和总功耗较低?

  Parker说,除了子系统分区之外,还有其他方法可以优化软件利用内核的方式,但这取决于手头的任务,包括使用虚拟机管理程序将多个操作系统整合到单个CPU或集群上。此外,虚拟化操作系统的许多实例可以使用虚拟化分布在多个内核上,例如在 Web 服务器的情况下。在天平的另一端,令人尴尬的并行问题可以移交给 GPU,例如在图像处理中使用 Open CL。

  “中间是事情有趣的地方,”他说。“现有系统如何跨多个内核进行扩展?这是一个 30 年来一直存在的性能问题,以及最近的电源成本问题。对于现有代码和几个内核(少于 《》 个)来说,使用线程是一种可行的解决方案,但它们很难编程。测量和分析一如既往地是所需的工程技能。如果没有对系统有很好的了解,就很难充分利用多核硬件。

  何时使用多核

  Synopsys 的 Chin 表示,如今一切都朝着多核的方向发展,“随着处理器的频率不断提高,这推动了技术的发展,并使电源问题越来越严重。试图通过在某些处理单元中将内核复制到双核、四核、六核或更多内核来增加吞吐量或提高处理能力的想法一直是大多数处理器制造商所走的道路。在过去的 8 或 10 年里,人们一直在谈论这个问题。

  “因此,我们看到了很多处理器——英特尔酷睿 i5、酷睿 i7 等四核和六核处理器在今天非常主流,非常有趣,尽管移动电子产品的架构还没有真正走上这条路。我想说,这更像是异构内核的想法,在这种内核中,您将特定内核用于更具体的任务。在移动应用程序中,对优化处理器功能以满足手头特定任务的需求更大,“他指出。

  但是,某些应用程序在多核环境中的表现比其他应用程序更好。“在服务器场和移动设备方面,你将看到的性能改进之间的最大区别在于,在服务器场上,虚拟化、数据库和谷歌搜索等应用程序在算法上是并行化的,可以很容易地进行线程化。当你在云或服务器场环境中时,你也有拥有很多很多用户的好处,这为整个场提供了另一个层次的并行化和功能,“Chin说。

  在这些环境中,并行化并拥有尽可能多的内核是有意义的,因为启动服务器场的整个想法是提高利用率。“我们的想法是,如果可以的话,让您的农场以接近 100% 的利用率运行,24/7,无论是在线金融应用程序还是季节性圣诞节订购。你希望这与世界其他地区的使用相平衡,“他继续说道。“对于移动应用程序,您只能在操作系统和要运行的应用程序中执行一定数量的线程。在像智能手机这样的东西上,这个想法不是让它一直运行。事实上,这个想法恰恰相反。你希望它尽可能少地运行。

审核编辑:黄飞

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分