英特尔® Time Coordinated Computing Tools(英特尔® TCC Tools)

提升对延迟敏感的应用程序的性能

概述      文档      下载

时间即性能

英特尔® 处理器具有多种用途,可用于广泛的使用案例,包括云中的数据分析、游戏电脑和传统办公笔记本电脑以及边缘设备。英特尔® Time Coordinated Computing(英特尔® TCC)是一组新功能,可增强英特尔® 处理器的计算性能,以满足实时应用程序的严格时间要求。英特尔 TCC 减少了抖动并提高了延迟敏感应用程序的性能。它通过将时间关键和不受时间限制的应用程序聚合到单个主板上,来帮助最大限度地提高效率。

 

虽然英特尔 TCC 功能驻留在处理器中,但当整个解决方案堆栈从上到下进行优化时,它们的全部潜力就会得到释放。英特尔提供了一个参考实时软件堆栈,可抽象这些硬件功能以加速硬件配置(“调优”)和应用程序开发。此解决方案堆栈包括:

 

  • 针对实时应用优化的实时硬件处理器: 
  • 英特尔凌动® x6000E 系列处理器 
  • 第 11 代智能英特尔® 酷睿™ 处理器
  • 英特尔® 至强® W-11000E 系列处理器
  • 系统软件堆栈:
  • 板级支持包 (BSP) 基础是 Linux 的 Yocto Project* 发行版,带有 PREEMPT_RT 补丁和其他实时优化。 
  • 具有英特尔® TCC Mode 的 UEFI 参考 BIOS
  • 搭载英特尔® TCC Tools 的 Slim Bootloader 启动选项
  • 英特尔 TCC Tools 
图 1: 优化实时改进的步骤。
图 2: 说明板级支持包、BIOS 中的英特尔 TCC Mode 和英特尔 TCC Tools 如何作为一个进程协同工作。

加速和自动化系统调优

数据流优化器

  • 使用命令行工具自动进行实时平台配置调优。
  • 通过优化功耗和计算性能,解决 CPU、内存和 PCIe 端点之间的特定工作负载延迟问题。
  • 专注于对 I/O 和处理器结构调优以增强两个处理器子系统之间的数据传输。该工具识别实体之间的各种控制点,这些控制点可以进行调优以满足要求,并指示 BIOS 将特定值写入这些控制点的寄存器。这可以在不更改应用程序代码的情况下进行实时调优。

要使用该工具,您需要了解数据如何流经计算模块(即通过哪些路径或流)、端点之间交换的有效负载的大小以及此类数据交换的最大可容忍延迟。

 

了解更多

Allocate Cache for Real-Time Applications

Cache Configurator

  • Uses a command-line tool to discover and manage cache memory resources to add, modify, or delete buffers at varying levels in the cache and memory hierarchy
  • Divides the remaining cache resources among various components (such as CPU, GPU, or I/O) without the need to learn the low-level details of the cache architecture

Learn More

Example Output

The following buffer will be created:




BUFFER 1

LATENCY(ns): 100

CACHE LEVEL: 2
  
  CPU  CORE: 3

BUFFER SIZE(bytes): 262144

Allocate Buffers Effectively across Platforms

Cache Allocation Library

APIs contained in this library create buffers that meet specified latency requirements.

To use the library, you need to know latency and size of the dataset that your application processes, as well as the hot spots in your application’s code that are the most latency sensitive.

Benefits include:

  • Malloc replacement for reliable low latency
  • Target cache misses and other sources of memory access latency
  • Simple, familiar API signature
  • Abstracts the complexity of cache architecture
  • No code changes needed to achieve the same latency on supported Intel® processors

Learn More

Example Function

To create a buffer, specify its size and maximum tolerable latency for access:

/* The example parameters specify a 64-byte buffer and 20-nanosecond latency requirement. */

void *mem = tcc_buffer_malloc(64, 20);

检查实时工作负载的系统准备情况

实时就绪检查器

使用此诊断工具检查实时 BIOS 和操作系统配置准备情况。

  • 验证系统是否具有受支持的处理器、BIOS 和操作系统
  • 检查可能影响实时性能的功能,例如英特尔® 睿频加速技术、增强型 Intel SpeedStep® 技术和处理器节能状态
  • 报告 CPU 和 GPU 频率
  • 在 UEFI BIOS 或操作系统级别运行

了解更多

Instrument Your Code to Analyze Performance

Measurement Library

Use this lightweight library for instrumenting user space applications to collect latency measurements.

  • Measures worst-case execution time (WCET) and other latency statistics in processor clock cycles and time units
  • Enables minimal runtime overhead and high measurement precision
    • Each measurement adds no more than 610 ns overhead
    • Accurately measures intervals starting from 60 ns*
  • Tracks deadline violations
  • Stores latency values in a shared memory ring buffer to be processed by an external application
  • Uses the Instrumentation and Tracing Technology API (ITT API) to support task visualization and system-wide analysis in tools such as Intel® VTune™ Profiler, which does low-level application performance analysis
  • Take advantage of samples to get started, which demonstrate methods for measurement data analysis including latency histograms and deadline monitoring

Based on specific configurations and workloads.

Learn More

Example Functions

Use this function at the beginning of the code block you want to analyze:

/* Get the start time of the measured code block from the processor time stamp counter (TSC). The name is a pointer to __itt_string_handle to identify the measurement. */

__itt_task_begin(domain, __itt_null, __itt_null, name);

Use this function at the end of the code block:

/* Get the end time from the TSC and calculate the difference between the start and end times to derive the latency of one iteration. */

__itt_task_end(domain)

在网络、I/O 和计算中启用时间同步

时间感知 GPIO 和以太网时间戳示例

时间感知 GPIO 示例应用程序解释了在 GPIO 引脚上使用硬件辅助时间同步的基础知识,及其相对于普通软件控制的 GPIO 的优势。 

以太网时间戳示例应用程序显示了系统和网络控制器时钟之间硬件辅助交叉时间戳记的准确性,这允许应用程序将精确的时间同步扩展到计算节点之外的网络上的其他设备。

了解更多

 

示例输出

比较软件控制的 GPIO 与时间感知 GPIO 的输出周期抖动。软件 GPIO 数据以蓝色表示。TGPIO 数据以橙色表示。与 TGPIO 相比,软件 GPIO 会导致更高的抖动。

使用 RTC 演示的优化模式与非优化模式

在非优化模式下,RTC 演示执行如下:

  • 在 BIOS 中不使用英特尔 TCC 模式,因此该平台未针对实时任务进行优化
  • 使用标准 AF_PACKET 通过网络发送和接收数据,但网络流量与英特尔 TCC 数据包竞争
  • 不使用虚拟通道,因此通过 PCI 发送的数据(视频、音频和 USB 数据)与英特尔 TCC 数据竞争
  • 使用动态随机存取内存和在同一内核上处理的数据从缓存中驱逐英特尔 TCC 数据并增加访问数据的时间

在优化模式下,RTC 演示执行如下:

  • 使用在 BIOS 中设置为 ON 的英特尔 TCC 模式,以便优化平台以运行实时任务
  • 使用 AF_XDP 数据包,针对数据包处理时间进行了优化,允许数据包更快地传输到内存
  • 使用虚拟通道将网络数据传递给内存和处理器,因此不影响英特尔 TCC 数据处理
  • 使用缓存伪锁定功能以可预测的访问时间将数据保存在缓存中

社区

英特尔 TCC Tools 论坛中获取专家建议。