调整多核代码获得实时性能
嵌入式系统正在迅速发展。现代解决方案将判断动态工作负载,而非具有可预测时间的任务。代码不再是静态的。不断变化的安全和业务要求需要频繁地更新软件。或许最重要的是,多核从根本上转变为软件设计这一举措。优化这些处理器上的代码需要使用为高端服务器保留后余下的技术。特别有挑战性?在同一个 CPU 上运行实时代码和非实时代码。这就需要可以确保动态环境中硬性决定论的专门工具。于是英特尔® VTune™ 放大器全新实时 SDK 应时推出。
资源共享与决定论
简要背景信息:资源共享是使多核设计复杂化的关键因素之一。在典型处理器中,多个核心共享最后一级缓存 (LLC)、DRAM 控制器、I/O 控制器和其他硬件。这种共享会导致资源争用。图 1 显示核心 0 上的“嘈杂邻居”如何过度使用缓存,从而耗尽核心 1 上的应用程序资源并影响其性能。
英特尔高速缓存分配技术等工具可以通过为特定核心预留特定缓存块来帮助解决这些问题。但缓存争用只是会降低性能的问题类型之一。现代嵌入式系统需要全面的工具充分利用硬件平台。
VTune 优势
为满足此需要,INtime 分布式实时操作系统和INtime for Windows的开发商TenAsys正在为这两款产品增加对英特尔® VTune™ 的支持。这种搭配将综合优化与实时确定论结合在一起。英特尔® VTune™ 放大器是一种性能分析器,可以分析代码以查找消耗 CPU 时间过多的热点。图 2 说明该工具如何调用问题代码。
重要的是,英特尔® VTune™ 放大器支持在所有英特尔® 处理器系列中进行热点分析。这与高速缓存分配技术形成鲜明对比,目前仅有六款处理器支持高速缓存分配技术。英特尔® VTune™ 放大器其他功能包括:
- 识别使 CPU 得不到充分利用的长时间同步等待
- 逐句通过源代码以识别哪些功能使用 CPU 时间最多
- 与片上性能监控单元连接,以收集低级、细粒度的性能数据
低级热点分析和 CPU 特定分析不是 VTune 的唯一用途。它还能高效地检查 RTOS 节点在更普遍的混合工作负载中的运行方式。图 3 显示可在多核平台上运行的各种工作负载。在本例中,Windows 在一个核心上运行,而 INtime 在另一个核心上运行。
INtime 运行于裸机上,无需使用管理程序。它为自己创建一个完全独立的硬件分区,传统 Windows 安装不会管理此分区。这种安排确保基于 Window 的应用程序不会直接干扰 RTOS,但实时应用程序仍然可能会遇到资源争用或不良串扰效应。为了解决这些问题,TenAsys 在其 INtime 产品中增加了对英特尔® VTune™ 放大器的支持。上面提到的“嘈杂邻居”情景说明了此功能如何发挥有用。假设实时应用程序在单独运行时遇到时间限制。但是一旦添加了 Windows 应用程序,系统就会运行异常。通过分析单独工作负载并再次分析并行工作负载,开发人员可以发现,在 Windows 应用程序运行的同时,实时工作负载的高速缓存未命中率增加很多。接下来,开发人员可以转到 TenAsys SDK,其中包括:
- INtime Explorer,动态对象浏览器
- INscope 系统时序分析仪
- 蜘蛛多线程感知调试器
- 一种故障管理器,用于指示节点在发生故障后应采取哪些措施
所有这些功能都通过 Microsoft Visual Studio 开发环境得到支持。
充分利用多核
随着嵌入式系统复杂性日益增加,软件开发人员需要可以与时俱进的工具。通过为 INtime RTOS 和 INtime for Windows 增加对 VTune 的支持,TenAsys 为开发人员提供了所需的软件资源,让他们可以充分利用英特尔嵌入式平台,从而推进机器人、机器学习、工业物联网以及其他众多设备的进步。