科技论文
转换64位窗口以提供仅软件实时性能
发表于05/24/2016
Next-generation industrial, vision, medical and other systems seek to combine highend graphics and rich user interfaces with hard real-time performance, prioritization and precision.Today’s industrial PCs running 64-bit Windows, complemented by a separate scheduler on multicore multiprocessors, can deliver that precise real-time performance on software-defined peripherals.
硅集成和性能的进步步伐持续不减,受到不富有的应用的需求。然而,这种进步已经采取了不同的方向,特别是在将功能集成到单一硅模具上的情况下。嵌入式OEM的任务是决定如何将这些革命性的发展转化为可提供客户需求的真实产品。现在包括高清音频和视频,机器视觉,实时工业产品,如六轴运动控制,实时连接和丰富的用户界面。用户界面通常还必须包括实时与应用程序链接到应用程序的复杂实时图形数据的能力。
今天的硬件具有这种功能,但实现它的方式是通过软件。使用足够强大的处理器核心,无需依靠自定义硬件来实现专业功能;现在可以用软件完成。软件可以比硬件更轻松地更新和改进,在这里,OEM可以实现其实际值。
要顺利完成复杂的实时软件应用程序的任务,最好的方法是从正确的硬件环境开始。如上所述,硬件集成一直在朝着不同的方向发展。一方面,将实时系统使用的各种设备集成到单个芯片上是一种趋势。这些可能包括多核处理器、DSP、FPGA或高级图形单元。例如,我们最近看到集成了处理器核心和fpga的设备,或者具有高级图形单元的处理器核心,同时也能够进行密集的数字计算,如DSP。
另一方面,我们有机会利用今天的多核cpu,其强大的能力和性能是多核的结果,在更小的范围内,时钟速度接近3 GHz。这些标准的商用现货工业pc (ipc)提供平台,通过一些额外的指令和调度程序,可以提供dsp级的处理、性能、优先级和精度。在今天的cpu中,这种处理可以用浮点来完成,以实现比DSP中通常使用的固定点更多样化的计算。这样的性能改变了重点,从试图优化每条指令的使用,到真正充分利用多核IPC的真正能力。
这一趋势已经导致了可以超越传统DSP处理器的设备。这个领域的另一个主要发展是向64位体系结构的转移,64位体系结构与它们的32位前辈向后兼容,但它提供了极大的性能增强。这有几个优点,因为即使是具有不同集成功能、不同指令集和协议的高度集成芯片,也会对统一的软件环境造成障碍,这既增加了硬件障碍,也增加了开发团队规避这些障碍的负担。
IntervalZero RTX64的全新实现采用了后一条路径,并将Windows转变为一个完全运行在x64多核硬件上的功能完整的实时操作系统。此外,根据实际映射的物理RAM大小,它提供了对128g非分页内存的访问。总的来说,Windows的512g物理内存让32位Windows的4g物理内存限制相形见绌。这种巨大的可用内存为以前无法使用的应用打开了大门,如核磁共振医学成像和高端视频编辑等等。
最重要的是,RTX64以多核x64设备的形式提供了一个单一的商用硬件环境。这使得一个单一的软件环境能够容纳Windows及其丰富的用户界面、可用的应用程序和开发环境。Windows与全功能实时对称多处理(SMP) RTX64环境无缝连接,该环境可以从1核扩展到63核。应用程序编译成一个单一的代码库,不需要fpga或dsp执行基于不同代码的逻辑,这些代码必须分别编译并与主应用程序链接。一套硬件、一套操作系统环境、一套工具和一套代码基础。这意味着一个团队可以相互沟通和合作,生产高性能、可伸缩的应用程序,同时大大缩短了上市时间。
解放统一架构
从实时系统和用户界面等其他功能的隔离中解放出来,原始设备制造商能够以更低的风险和开销探索更多创新的解决方案。例如,考虑用户界面。今天的高级应用程序及其用户都需要功能丰富的、交互式的、触摸激活的图形用户界面。先进的嵌入式系统远远超过了过去的无头系统。此外,基于用户界面提供明确的用户体验也变得越来越重要,这有助于加强产品品牌。
开发嵌入式用户界面的旧方法是让一个团队在桌面系统上设计UI,使用图形程序,如Photoshop、Illustrator,或者可能是针对嵌入式系统的后期工具之一。结果将是一个带有模拟数据和接口的原型UI。然后,这将移交给开发实时应用程序的团队,他们的任务将是在他们使用的任何RTOS环境下实现UI设计。这不可避免地导致了更改和妥协,测试大多被推迟到开发周期的后期,对上市时间有可预测的影响。
使用RTX64,开发团队可以使用他们选择的任何基于windows的工具构建他们的UI,并且确信接口中的对象可以直接与RTX64 api通信,并与嵌入式应用程序交换命令和数据。用户界面或嵌入式功能的任何更改都可以在两者之间快速跟踪和更新。RTX64可以为硬实时应用程序提供对网络、数据库和存储的无缝访问,因为它不会以任何方式改变Windows,而是对Windows的实时扩展。因此,它与Windows的通信是无缝集成的,不依赖于远程过程调用、虚拟化或管理程序等机制,这些机制与多个操作系统的其他实现相关联。添加了第二个调度器和RTOS基础设施,允许UI函数在Windows中执行,而实时函数在RTX调度器中执行。把正确的任务放在正确的调度程序上可以获得最好的总体结果。
RTX64-A Fresh Start into 64-Bit
新的RTX64从头开始构建,以打开64位实时计算的世界,它不是32位产品的一个端口。专业的音频和视频,高端医疗设备以及先进的工业控制系统,结合了机器视觉和丰富的用户界面,所有的地方需求只能由先进的64位系统,可以包括丰富的用户界面可能。
RTX64提供了一种利用前进技术的架构 - 具体而言,高速,多芯X64 - 可以优于依赖于DSP,FPGA和微控制器的传统嵌入式环境(图1)。它通过在单个硬件环境中实现更高的性能实现它们的功能来实现这一点,它可以与Windows结合执行此操作,该Windows提供丰富的用户环境,并访问可以利用和支持真实的大量应用程序- 时间运营。
首先,RTX64具有与Windows HAL不同的硬件抽象层(HAL),但与其一起运行。因此,从一开始,不需要修改Windows。这两个系统并排操作并通过现有机制进行通信。RTX64 HAL可以从1到63个核心缩放,以提供确定性的实时性能,并使用下降到1μs(取决于硬件支持)。驻留在RTX64实时子系统(RTS)中的调度程序可以将线程分配给核心以实现对称的多处理(SMP)以及依赖于虚拟化或复杂的进程通信。
这也是没有内存分区的所有内核都可以使用巨大内存空间的结果。整个系统可以访问高达128g的非分页内存和高达512g的物理内存。这对于越来越依赖可视化的医疗应用,如正在开发中的光学相干断层扫描(OCT)技术,或者对于依赖于器官图像(如跳动的心脏)精确渲染和处理的实时手术机器人来说,都是一个巨大的优势。对于先进的工业控制系统来说,不仅要向用户提供可视化的数据,而且还要对其进行实时处理,以驱动工具的运动控制,并对过程中产生的零件进行检测。
拥有这样一个高性能通用硬件平台可用的内存空间,允许原始设备制造商开发专门的软件,这些软件可以执行非常专门的功能,否则就需要专门的硬件组件。经验表明,混合不同的硬件涉及不同的软件集,这些软件依赖于不同的规程(例如,c++ vs. Verilog),这不仅大大减慢了开发时间,还限制了性能和可伸缩性。扩展这样的系统只会增加复杂性,因为每个不同的附加硬件都有自己的接口和独特的软件需求。
RTX64实时子系统(RTS)包括实时调度程序,完全独立于Windows内核和Windows调度程序。Windows和实时线程没有固有的互动或干扰。只有使用实时API可以发生开发人员的线程之间的预期通信。提供实时API与用户模式Windows应用程序一起使用,或用于Windows内核驱动程序的实时内核API。
在RTX64支持的场景中,应用程序可以将自己作为普通的Windows应用程序呈现给用户,而在用户界面背后,它们的许多特性都利用了RTX64的实时进程。例如,一个机床控制程序可能会显示正在加工的部件的视图,以及用户可以通过触摸屏访问的控制和设置。然而,实际的应用程序由两部分组成。Windows程序可以通过实时api与实时控制程序在内核级和用户级进行通信。
在内核层,Windows驱动程序可以向RTX64端发送数据,RTX64端可能控制着工具的运行,并接收当前的位置数据,然后将其传递给用户界面,或者通过实时内核API (RtkApi)进行某种处理。在用户层面,操作人员可以在触摸屏上设置开关的值或位置等,这些将与Windows进程通信。该过程反过来使用实时API (RtApi)与RTSS进行通信。这两类API直接与实时控制程序所在的RTSS通信。
随着对实时和嵌入式系统的丰富用户界面的需求继续增长,开发人员正面临如何将这种接口与传统上不旨在支持复杂用户界面的RTOS环境的困境。我们已经提到了必须执行的经常尴尬的技巧,以将这种基于RTOS的系统匹配到复杂的用户界面。使用RTX64扩展到Windows,使用一个最喜欢的图形工具将设计一个可以使用RTX API直接链接到底层的实时应用程序的用户界面是直接的。更具吸引力的是,有些可能是简单地购买现成的软件控制和数据采集(SCADA)工具的能力,配有许多预先设计但可定制的仪表,滑块,开关和泵,坦克,执行器的陈述等,并使用相同的RTX64 API从那里开发以连接到系统。
视频数据也是如此。有各种各样的工具和应用程序,可以代表物理现象,例如热分布,流体动力学,压力等,它们都在窗口下运行。存在图像处理应用,可以进行边缘检测和零件检查所需的其他操作。列表继续。OEM在此级别的Windows用户界面中,丰富的“构建或购买”选项,所有这些都可以自信地使用和/或实验,了解底层实时应用的界面是良好的和/或实验将在框中工作。
RSMP为性能和可伸缩性铺平了道路
当然,关于如何利用多核处理器有不同的思想流派。这些基本分为不对称多处理(AMP),或虚拟化和对称多处理(SMP)。AMP的一种方法要求在每个核心上运行操作系统的副本。这就需要将内存分配给各个核心,同时还需要进行进程间通信,从而增加了开销。如果尝试用Windows实现一个用户界面,同样效率低下,需要在Windows和多个RTOSs和内存分区实例之间进行进程间通信。然后尝试在这样一个系统中处理(在RTOS下)和显示(在Windows下)实时视频数据——涉及到更多的ipc——事情很快就会堵塞。将系统扩展到更多的内核需要更多的RTOS副本、更多的内存分区和应用程序的重新配置。
AMP的另一种方法是使用hypervisor实现虚拟化,hypervisor是直接在硬件上运行的一个单独的软件层,它将硬件划分为不同的操作系统(图2)。它基本上为每个操作系统提供了一个虚拟的“主板”。虚拟化通常用于支持“分离内核”,这些内核与系统的其他部分隔离,仅通过严格控制的机制和协议进行通信。这在某些情况下可能很有用,但它的目标是隔离,而SMP的目标是集成。
RTX64代表了对Windows的实时操作系统扩展,并将Windows作为一个单独的操作系统环境,使用SMP方法将多处理器硬件视为一个单独的共享资源。它只需要整个操作系统环境的一个副本,包括实时子系统及其实时调度程序,该调度程序可以访问分配给子系统的所有核心(图3)。代码可以编写一次,之后可以通过静态地重新分配线程或添加内核和重新分区来添加函数。因为所有的内核,也就是所有的线程,都可以直接访问共享数据,所有的资源对所有的实时进程都是可见的,所以不需要额外的复制,也不需要使用复杂的进程间通信方案或远程过程调用。
跨同质硬件平台使用单一扩展操作系统环境的能力减少了OEM的主要硬件决策,“我是否有足够的核心来完成我需要做的事情?”或者“我还需要添加多少内核才能将这个应用程序扩展到我需要的额外功能?”它不再涉及连接不同硬件元素(如fpga和dsp)之间的接口,或者将代码调整到性能更高但有不同编程需求的部件。它不再涉及引进不同的硬件专家来创建或升级产品。该团队根据一种编程语言(如c++)来定义性能。
这带来了一个额外的优势,即整个项目只需要一组开发工具,比如Windows Visual Studio。Windows作为整个系统的开发环境——Windows功能以及实时编码。其他基于windows的工具也可以加入其中,比如需求分析、版本控制或静态分析工具等。实时子系统的用户模式还包括一个连接到RTSS的RTX64服务器控制台。实时工作人员还可以使用他们喜欢的实时调试器、分析器和分析器来调整实时子系统。他们都可以以同样的方式互相沟通和协商。没有人需要学习Verilog或DSP编码语言。
连通性——互联网和实时
随着物联网的崛起,连接已经成为一个必须在将设备链接到本地网络,然后到服务器并最终到云。Internet连接只是带有Windows的给定的,可以自定义为使用实时流程的数据和命令,并提供远程用户界面,以便在几乎任何地方与系统交互。但是,Windows Internet连接本身不是实时。
然而,对于运行Windows的相同系统和RTX64实时扩展环境,可以以EtherCAT的形式添加实时以太网连接,这是一种用于控制自动化技术(CAT)的以太网的现场总线系统,如图4所示。EtherCAT还提供网关,以集成现有现场总线组件,如CANopen或Profibus。EtherCAT在RTX64下运行软件,无需插入系统总线的任何专门的EtherCAT卡。在一个或多个处理器内核上运行,EtherCAT直接与系统中使用的网络接口芯片(NIC)通信。可以在EtherCAT配置期间选择各个设备。
EtherCAT是与工业控制系统相关的复杂而昂贵的布线方案的一个有吸引力的替代方案。一根电缆可以携带多个控制通道以及安全信号与安全检查级别(SIL) 3认证。此外,可以将多核专用于EtherCAT功能,以实现真正丰富的控制连接,所有这些都不需要额外的专用硬件的费用和功耗。
IntervalZero的RTX64以高端视觉、可视化和丰富的用户界面为基于windows的实时系统打开了世界。它使开发人员能够利用底层多核处理硬件的能力,将硬件组件的功能转换为软件组件。对于OEM来说,没有什么需要库存的,零部件可以无限复制。对于软件团队来说,不需要专门的硬件知识,如dsp和fpga。代码存在于一个统一的代码库中,可以这样进行管理。
RTX64无缝集成到Microsoft Visual Studio集成开发环境中,并部署到一个单独的集成Windows系统中。它扩展了Windows,在有限延迟的情况下提供了严格的实时精度,而且它使用多核处理器作为可伸缩的本地smp解决方案。它对成本、上市时间、库存、用户体验和原始系统性能的积极影响是革命性的。