科技论文
对称多处理或虚拟化:最大化软控制架构的值和功率
发表于05/24/2016
概述
多核技术的连续进步是软件创新的催化剂,它正在产生一种更昂贵的嵌入式系统来开发,更高的嵌入式系统,因为任务并行运行。
这些新系统的理想架构在早期的白皮书中有描述:“软控制架构:复杂系统硬实时设计的突破”。本白皮书假定对软控制体系结构如何用Microsoft Windows的硬实时软件插件取代FPGA/DSP/PowerPC和专有RTOS解决方案有基本的了解,以提供突破性的成本、性能和可伸缩性优势。
系统开发人员已经开始利用软控制架构,在工业自动化、医疗系统、测试测量和数字媒体等各种市场中获得持续的竞争优势。
本白皮书探讨了竞争的两种普遍的多处理方法,以提供对软控制架构的价值。它们是对称多处理(SMP)和非对称多处理(ASMP),通常称为虚拟化,或虚拟机管理程序技术。
这两种方法都有各自的特点和挑战,但是对于寻求通过充分利用x86多核(4核、6核、8核以及更多)的能力来最大化可伸缩性和最小化延迟的开发人员来说,比较规模非常有利于SMP。
如您所见,虚拟化/ asmp确实在初始成本降低方面提供短期提升,但是对于真正的实时系统,是一个需要可扩展性,精度和性能的死端技术 - 全部延迟最小。
虚拟化/ASMP是现状,尽管是在单个芯片上。这种镜像现状是极其有限的。它缺乏灵活性,抑制性能,并且在开发人员超越双核时阻碍了可伸缩性。
由于启用smp的体系结构是动态的——而不是像虚拟化/ASMP体系结构那样是静态的——它们为开发人员提供了更广泛的选择来简化和简化开发过程,同时充分利用多核处理能力来交付改变竞争基础的系统。
这对于具有复杂的人机接口(HMI)的嵌入式系统的开发人员来说尤其如此,并且非常苛刻的硬实时和控制要求。MRIS和数字媒体混合控制台等大型医疗系统是具有这些要求的系统的示例。
如上所述,彻底的白皮书中提供了对软控制架构的全面描述,但我们包括该纸张亮点的概要,以便为本文中包含的比较信息提供上下文。
FPGA和DSP在运动控制和其他复杂,高精度和高度良好系统的硬实时时长期统治市场。这已不再是这种情况。推进技术使OEM可以部署软控制体系结构,这些架构可以取代大部分专有硬件。
FPGA和DSP在运动控制和其他复杂,高精度和高性能系统的硬实时时长期统治市场。这已不再是这种情况。
支持SMP的软控制架构的主要趋势包括:
- 越来越强大的X86处理器技术;
- 推动商用现货硬件和软件的发展;
- 基于以太网的现场总线的进展和可用性;
- 系统设计中的组件融合;和
- 触摸中心可用性的出现 - 特别是多点触控和动作技术。
由此产生的软控制架构大写这些趋势利用多核X86。它在单个多核芯片上运行在Windows(包括Windows 7和手势技术)以及具有对称多处理的硬实时插件,例如IntervalZero的RTX64。
可以使用不同的技术来构建软控制架构,而是要提供最大的价值,开发人员必须记住8个关键成功特征:
- 一个常见的集成开发环境(IDE)和世界类图形用户界面(GUI) - Microsoft Visual Studio和Windows操作系统,包括Windows 10和Window嵌入式标准7;
- 支持的SMP的实时子系统直接在多个分配的处理器上执行(不是多个实例);
- 所有实时流程的硬件可见性;
- 能够在多个处理器上安排实时线程,或者将某些逻辑专用于特定核心,具有用于负载平衡的钩子;
- 直接访问共享数据/内存,无需额外副本和IPC使用;
- 最小化硬件要求 - 处理器,内存,电源和足迹;
- 在核心调试的能力;
- 能够自动编码一次和缩放。
虽然SMP在这些成功特征中提供所有8个,但虚拟化/ ASMP仅通过将以前的双PC系统巩固到单个PC系统的内容来部分地提供一部分 - 最小化硬件要求(#6)。
虚拟化/ASMP确实允许许多不同的操作系统/应用程序驻留在同一个多核硬件上,并共享外围资源,如I/O、串行、以太网、USB等。因此,它似乎是降低系统成本和系统复杂性的好方法。
以前运行在独立PC系统上的应用程序可以合并到单个PC系统中的一块硅上。这减少了材料成本,并允许保留现有的代码,消除了重写和重新架构的需要。然而,这正是事情走向死胡同的地方。虚拟化/ ASMP架构的静态特性阻止了它们的扩展,因此不能成为可行的长期解决方案。
例如,使用虚拟化/ ASMP在多处理器配置中所需的所有元素 - 单独的实时操作系统(RTOS),单独的代码库,单独的开发工具和单独的开发团队 - 都在一个系统上镜像。客户无法管理更少的实例化,而是添加管理程序以管理它们。
简而言之,虽然在硬件成本方面存在增益,但没有伴随的软件突破 - 因为有SMP - 这使得开发人员能够扩展系统上的系统和构建系统,这些系统在市场中区分自己的系统。
例如,由于嵌入式开发人员寻求越来越多的核心,通过将更大的功能与不同的核心打破以进行改进的性能;或通过将核心破坏到相关功能;或者通过用于特定计算和数学函数的核心 - 所有这些都可以通过SMP - 虚拟化/ ASMP的镜像架构实现了重大挑战。
虚拟化/ASMP是现状,尽管是在单个芯片上。这种镜像现状是极其有限的。它缺乏灵活性,抑制性能,并且在开发人员超越双核时阻碍了可伸缩性。
仔细看看其他7个成功特征显示SMP的比较强度,并在提供硬实时软控制架构时暴露虚拟化/ amsp中的弱点。
1.一个常见的集成开发环境(IDE)和世界类图形用户界面(GUI) - Microsoft Visual Studio和Windows操作系统,包括Windows 10和Window嵌入式标准7;
虽然虚拟化/ ASMP技术可能或可能不会提供共同的开发环境,但虚拟化不提供集成环境。操作系统的每个实例必须都有自己的代码,并且对在其他内核中运行的其他筒仓中的代码盲目。虚拟化缺乏整合导致管理成本急剧上升。
2.支持的SMP的实时子系统直接在多个分配的处理器上执行(不是多个实例);
该辅助调度程序由支持的SMP的实时插件(如IntervalZero的RTX64)提供,在所有处理器上都具有清晰的可见性。这确保了核心之间的适当利用和同步。
SMP体系结构通过拥有一个辅助调度器(除了Windows调度器之外,而且是独立于Windows调度器的)而受益匪浅,该调度器专用于所有客户应用程序处理都在其上进行的核心。
此辅助调度程序由SMPENABLED实时插件(如IntervalZero的RTX / RTX64)提供,在所有处理器中都具有清晰的可见性。这确保了核心之间的适当利用和同步。
这允许用户实现可以监视各种核心上的活动的监督过程。基于环境需求或用户命令,调度程序可以使用各种API调用来分发或整合核心的功能。这对于优化吞吐量来说是非常有用的,并通过怠速核心最小化功耗。
作为一个示例,让我们看看一个四核x86设备,其中一个核分配给Windows,其余三个核分配给SMP子系统。在苛刻的条件下,所有三个SMP专用核心都可以以100%的速度完全加载,这是对硬件的最佳使用。但是,如果100%负载只发生在占空比为20%的情况下呢?这是对多核体系结构的低效使用,浪费了能量和性能。SMP api允许用户编写一个监督进程或负载均衡器,该进程可以将功能合并到单个核上,从而允许系统闲置/放置两个核,以减少功耗。
同样的API调用还可用于将线程/进程分发到未加载单个核心过载的情况下未化的核心,从而产生更大的处理和吞吐量。
虚拟化/ ASMP架构具有实现监控功能或负载均衡器的大量困难,以帮助管理各种核心之间的处理,因为每个核心都有单独的应用程序图像和RTOS。每个应用程序都是认识的,只有在该应用程序中计划的内容以及通过设计的任何硬件的IPC都是如此。这意味着为了正确移动和调度核心之间的线程/进程,原始应用程序必须使用所有必要的通信和用于负载平衡的功能支持,这通常不是在设计规范中single core device (i.e. DSP). These load balancing APIs are native to the SMP scheduler.
此外,虚拟化/ ASMP架构继承了传统多处理器设计的限制。例如,复制的设计可能具有在该设计中使用的DSP中存在的许多性能限制(CPU,内存,I / O等)。
这些限制不一定要移植到新的多核设备上,但是因为应用程序直接导入到虚拟化/ ASMP设计中,所以限制性限制仍然存在。结果是:一个不太理想的设计。
3.所有实时流程的硬件可见性;
使用SMP架构,访客应用程序直接在核心上运行,并且对I / O的访问无障碍。简而言之,所有实时流程都有完全可见的硬件。虚拟化/ ASMP并非如此。
使用SMP架构,访客应用程序直接在核心上运行,并且对I / O的访问无障碍。简而言之,所有实时流程都有完全可见的硬件。
由于虚拟化/ ASMP架构只是直接导入了一旦在专用设备上运行的单独应用程序,因此没有考虑主机和访客应用程序如何充分使用新设备的功能和功能。这种缺乏协调最终导致了大量的硬件争用。
让我们来看看一个Windows设备和两个DSP的整合的示例,进入单个四核X86。每个不同的应用程序都有自己的独家硬件/外设,包括从串行端口到以太网控制器到USB端口的任何内容。这是虚拟化/ ASMP架构需要虚拟机管理程序或抽象层来管理和仲裁所有不同应用程序的外围设备的地方。这将创造出不同应用程序的错觉,它们具有特定硬件的独占权利。虽然功能性,但这种仲裁导致系统延迟。随着应用程序的数量增加,更多的争用和延迟放大。
相反,在SMP架构中,所有系统分区都在前面完成了哪些线程/过程将拥有或共享特定硬件(以太网,USB等)。传统上,在SMP架构中,Windows调度程序将所有HMI以及任何非关键处理处理,而辅助实时调度程序处理所有时间至关重要,以及CPU密集型线程/进程。
SMP具有在核心之间移动线程/进程所需的钩子/ API。这是负载平衡和适当使用多核架构的必要构建块。负载平衡是确保最佳吞吐量和最佳核心利用的关键。
让我们在一个Windows设备和两个DSP的示例整合到一个四核心X86 - 这次使用支持SMP的实时插件到Windows。重新构建SMP的第一步是在Windows调度程序保留其功能时将所有时间关键或粘性线程/进程安排到辅助SMP调度程序。然后设计器确定外围/驱动程序所在的位置:无论是在非时间关键Windows子系统中还是在SMP实时子系统中。一旦分配了驱动程序,该特定子系统对该外设具有畅通无阻的权限和独占权限。这种体系结构非常良好,因为随着核心计数增加,SMP调度程序可以轻松控制任何核心的线程/进程和驱动器,尽管简单的同步机制(信号量,互斥锁等)。
有些情况可以共享驱动程序,并且在这些情况下,可以在子系统之间导出驱动器API,以共享外围设备和同步调用。这说明了SMP不仅提供了大量的性能,而且还可以对系统如何建立以实现可扩展性和并行性的大量灵活性。鉴于来自英特尔和AMD的多核设备令人难以置信的加速度,可扩展性和平行性变得越来越重要。
4.能够在多个处理器上安排实时线程,或者将某些逻辑专用于特定核心,具有用于负载平衡的钩子;
SMP具有在核心之间移动线程/进程所需的钩子/ API。这是负载平衡和适当使用多核架构的必要构建块。
负载平衡是确保最佳吞吐量和最佳核心利用的关键。
如上所述,虚拟化/ ASMP架构具有负载平衡难度,因为原始系统分区从复制的传统设计中携带。线程/进程包含在特定的访客应用程序中,并且没有简单的方法可以在处理器之间移动功能,而无需额外的拷贝和不同的核心之间的相当大的复杂协调。
5.直接访问共享数据/内存,无需额外副本和IPC使用;
由于SMP架构仅使用主机应用程序共享内存,因此自然地共享不同的核心/应用程序之间的数据。这可降低内存要求并通过消除任何数据,从而提高性能。
虚拟化/ ASMP架构必须制作数据和程序代码的多个副本,因为原始的设计限制是继承的 - 例如,IPC通信和程序和数据的独占内存的要求。缓冲冗余数据添加延迟。
6.最小化硬件要求 - 处理器,内存,电源和足迹;
SMP架构和虚拟化/ ASMP架构既可整理硬件要求,并将计算硬件成本降低25-50%。但是,虚拟化/ ASMP不会获得完整标记,因为硬件消耗未得到优化,并且由于在应用程序级别不可见的虚拟机管理程序级别中可能发生争用和延迟。
相比之下,SMP架构具有更高的效率和更小的占用空间,因为核心之间存在很大的共享数据以及两个子系统(Windows和SMP)之间存在很大的共享数据。这减少了所需的内存量,并进一步降低系统成本。此外,通过组织跨不同核心的线程/流程使能更大的效率和性能通常会降低处理器要求,进一步降低系统成本。
7.在核心调试的能力;
这个非常重要。
在虚拟化/ ASMP架构中,争用和延迟可能在应用程序级别不可见的虚拟机管理程序级别出现。这是特别麻烦的 - 使调试非常困难,系统失败是一个主要问题。
对于能够正确调试多核系统的工具集,它必须了解所有的操作系统,并在整个系统中具有可见性。在虚拟化/ASMP架构中,由于原始应用程序和RTOSes是直接导入的,所以IDE不能识别运行在其他核心上的客户应用程序。
在这种情况下,需要单独的工具集来调试不同的核心或应用程序。在双核系统中,这并不是特别具有挑战性,但随着系统增长到4核或4核以上,这就变得越来越难以应对。
想象一下,调试4核或6核系统的复杂性,您可以在其中设有4或6个,尝试调试不同的核心。个人IDES / DEVUGGER虽然在自己的权利中强大,但对其他环境的可见性非常有限。在处理添加的延迟时,此有限调试可见性问题复制了管理程序,它会引入仲裁外围设备以不同应用程序排列的共享外围设备。
值得注意的是,在处理时间关键应用时,由虚拟机管理程序创建的添加延迟可以呈现必须在应用层中考虑的未知时间常数。
最后,除了调试复杂性之外,虚拟化/ ASMP架构通常需要用户维护所有不同的工具集和操作系统。随着核心计数的增加,这些不同的工具集的维护增加了成本并创造了支持负担。
在虚拟化/ ASMP架构中,争用和延迟可能在应用程序级别不可见的虚拟机管理程序级别出现。这是特别麻烦的 - 使调试非常困难,系统失败是一个主要问题。
SMP架构对开发工具和调试具有很大简化的方法。
SMP应用程序内置在Visual Studio IDE中,它完全了解Windows和SMP计划仪。SMP子系统使用辅助调度程序,其主持在实时子系统中的所有内核。由于为SMP子系统具有单个调度程序,因此没有增加调试复杂性,因为核心/应用程序的数量增加。Visual Studio的RTX调试器具有全部核心的完全控制和可见性以及两个调度程序 - Windows和SMP。
SMP架构中的应用程序具有与其外设的直接交互和所有权,消除了应用程序所占用的任何额外延迟。这种紧密的集成使得开发和调试直接,因为用户可以在Visual Studio中轻松设置Windows和SMP子系统之间的断点。SMP使用单一IDE简化和简化了调试和工具维护,非常具有成本效益。
由于为SMP子系统具有单个调度程序,因此没有增加调试复杂性,因为核心/应用程序的数量增加。
8.能够自动编码一次和缩放。
这是上面触及的,但由于并行性是如此重要,这方面值得一个更充分的解释。
SMP架构包括API,用于分配处理器关联和理想的处理器。这些API允许开发人员为理想的多核架构进行编码一次,通过更多核心可用,提供软件自动扩展到设备的能力。
另一方面,在从单独的处理器到单个硅的第一转换之后,在虚拟化/ ASMP环境中变得困难,以在设计各种系统时适当地利用不同的核心倍数。
如果没有重写代码,虚拟化/ ASMP设计必须在每个附加核心上放置原始访客应用程序的多个副本/图像。这是冗余和浪费的,因为通过对特定核心运行的线程/进程,没有能够通过分组的线程/进程来提高性能和吞吐量。
开发人员非常关注,虚拟化/ asmp不会减轻传统的单独处理器系统中存在的复杂性和效率,多个工具环境,多个开发团队和多个操作系统。
并且在将单独的芯片巩固到共享外围设备的多核架构中,资源争用可能成为各种开发团队的重大挑战。
共享以前专用于每个应用程序的外设不可避免地意味着某些操作必须在所需的外设忙时等待访问。这不仅效率低下,而且对实现多核硬件的最大处理速度和电源的目标是效率低下。简而言之,怠速硅是浪费资源。对于开发人员来说,真正降低系统成本,他们必须一直最大限度地提高所有处理潜力。
如前所述,这些挑战根本不存在于SMP架构中。
简而言之,虽然虚拟化/ asmp可以是单任务或更少复杂的环境的合适方法 - 桌面虚拟化的原因很容易被收集 - 它没有衡量作为复杂的多任务系统的解决方案,其中硬实时,精度,灵活性,上市时间加速和可扩展性是强制性的。
实际上,对于虚拟化/ ASMP来说是复杂嵌入式系统的可信选项,将需要一个Windows虚拟机管理程序扩展名。这将允许实时SMP产品插入并扩展核心和外设访问。
通过SMP,开发人员在重新思考和重新设计系统中有许多选项,不仅可以获得最大的多核功能,而且还可以增强长期经济效益和可扩展性的开发过程。
通过增强具有SMP的硬实时子系统的Windows / X86系统,该系统添加第二个独立调度程序,系统开发人员获得了一个适用于最大化多处理能力的软控制架构,以及提供重要的经济和经济延长系统整合的性能福利。
结论
最多,虚拟化/ asmp表示从多个系统到多核的短期值,低值整合路径。但是,对于一个真正简化和简化的架构,其高性能,可扩展,高效。建议为长期值构建,建议启用SMP的软控制架构。