中文 英语

软件如何利用内核

使软件在多核环境中更有效地运行的最佳实践和关键考虑因素。

受欢迎程度

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

该行业刚刚开始开发在这个领域获得一些数据的能力,
Synopsys低功耗解决方案组技术营销总监Cary Chin表示。“当我们能够做到这一点时,我认为你会发现,移动应用程序的编写方式实际上与笔记本电脑上的应用程序不同,因为它们在功耗方面进行了更好的优化,在缓存数据的方式方面也可能有所不同。”

不过,要做到这一点并不简单。ARM的操作系统架构师杰森·帕克(Jason Parker)表示,节能软件需要从一开始就成为设计的一部分。“设计师需要不断地问自己,‘这是解决这个问题最省力的方法吗?“试图在现有的设计中改进电源管理和效率是一项艰苦的工作,所有的银弹在很久以前就已经用完了。多处理器设计为电源管理提供了额外的技术和限制。”

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

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

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

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

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

获得最佳核心利用率
但是,仅仅了解系统的结构是不够的。为了实现软件对核心的最佳利用,应该实现某些技术,记住,核心的利用是由子系统划分和系统代码和算法的进一步并行性驱动的。“操作系统调度器可以通过将线程及其数据保持在相同或本地cpu上来最大化执行效率,而应用程序软件可以通过使用线程相关性来强制执行,”Parker说。

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

1.内核是否以100%的性能运行一个CPU,而关闭第二个CPU ?
2.内核是否以50%的性能运行两个cpu,频率、电压和总功率更低?

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

他说:“中间地带的情况很有趣。”“现有系统如何跨多个核扩展?这是一个30年来对性能具有挑战性的问题,最近是电力成本问题。对于现有代码和少数核心(少于8个),使用线程是一种可行的解决方案,但它们很难编程。测量和分析,一如既往,是必需的工程技能。如果你不能很好地理解你的系统,你便很难有效地利用多核硬件。”

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

“因此,我们看到了很多处理器——英特尔酷睿i5、酷睿i7等四核和六核处理器,这是当今的主流,非常有趣,尽管移动电子产品的架构还没有真正走这条路。我想说的是,这更多的是异构核心的想法,你使用特定的核心来完成更具体的任务。在移动应用程序中,针对手头的特定任务优化处理器功能的需求甚至更多,”他指出。

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

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



1评论

安德鲁TAM 说:

应用软件只能同时在一种类型的cpu内核中运行

留下回复


(注:此名称将公开显示)

Baidu