ZHCU881C May   2020  – December 2023

 

  1.   1
  2.   请先阅读
    1.     关于本手册
    2.     相关文档
    3.     商标
  3. 2引言
    1. 2.1 C7000 数字信号处理器 CPU 架构概述
    2. 2.2 C7000 分离式数据路径和功能单元
  4. 3C7000 C/C++ 编译器选项
    1. 3.1 概述
    2. 3.2 为性能选择编译器选项
    3. 3.3 了解编译器优化
      1. 3.3.1 软件流水线
      2. 3.3.2 矢量化和矢量谓词
      3. 3.3.3 自动使用流引擎和流地址生成器
      4. 3.3.4 循环折叠和循环合并
      5. 3.3.5 自动内联
      6. 3.3.6 if 转换
  5. 4基本代码优化
    1. 4.1  迭代计数器和限制的有符号类型
    2. 4.2  浮点除法
    3. 4.3  循环携带依赖和 restrict (限制)关键字
      1. 4.3.1 循环携带依赖
      2. 4.3.2 restrict (限制)关键字
      3. 4.3.3 运行时别名消歧
    4. 4.4  函数调用和内联
    5. 4.5  MUST_ITERATE 和 PROB_ITERATE Pragma 与属性
    6. 4.6  if 语句和嵌套的 if 语句
    7. 4.7  内在函数
    8. 4.8  矢量类型
    9. 4.9  待使用和避免的 C++ 特性
    10. 4.10 流引擎
    11. 4.11 流地址生成器
    12. 4.12 优化库
    13. 4.13 存储器优化
  6. 5了解汇编注释块
    1. 5.1 软件流水线处理阶段
    2. 5.2 软件流水线信息注释块
      1. 5.2.1 循环和迭代计数信息
      2. 5.2.2 依赖和资源限制
      3. 5.2.3 启动间隔 (ii) 和迭代
      4. 5.2.4 常量扩展
      5. 5.2.5 使用的资源和寄存器表
      6. 5.2.6 阶段折叠
      7. 5.2.7 存储器组冲突
      8. 5.2.8 循环持续时间公式
    3. 5.3 单个调度迭代注释块
    4. 5.4 识别流水线故障和性能问题
      1. 5.4.1 阻止循环进行软件流水线作业的问题
      2. 5.4.2 软件流水线故障消息
      3. 5.4.3 性能问题
  7. 6修订历史记录

C7000 数字信号处理器 CPU 架构概述

C7000 CPU DSP 架构是德州仪器 (TI) 最新的高性能数字信号处理器 (DSP)。其配备在某些德州仪器 (TI) Keystone 3 器件中。这种超长指令字 (VLIW) DSP 因其宽矢量指令和多个功能单元而拥有显著的数学处理能力。本优化指南可以帮助开发人员实现 C7000 DSP 的最高性能。

当集成到更大的 TI 器件(例如一些 Keystone 3 器件)时,C7000 往往与矩阵乘法加速器 (MMA) 搭配使用,这样,可显著提高某些机器学习网络的性能。我们建议使用 TI 深度学习库,已对其进行经优以便使用矩阵乘法加速器。TI 深度学习库是 Processor(处理器) SDK 的一部分。

C7000 DSP 拥有矢量 (SIMD) 指令,根据数据类型和 C7000 CPU 版本,该指令能够在单条指令中执行多达 64 个操作。C7000 DSP 内核上几乎所有的计算指令都是完全流水线作业,这意味着在每个时钟周期均可启动独立指令。矢量指令与流水线行为的组合允许您在每个周期中进行大量的计算。C7000 DSP 内核具备定点和浮点矢量指令。

每个 C7000 DSP 内核都有若干功能单元。在每个时钟周期中,每个功能单元可以执行一条独立指令。在本指南中,重点介绍第一代 C7000 DSP 内核(C7100 和 C7120)。由于 C7100 和 C7120 DSP 内核有 13 个功能单元,因此每个时钟周期可执行 13 条指令。在现实中,一些功能单元专门用于执行某些类型的指令,因此出于这样或那样的原因,通常在每个周期中并非所有的 13 个功能单元都在执行指令。

有关 C7000 指令集的更多信息,请参阅 C71x DSP CPU、指令集和矩阵乘法加速器技术参考手册 (SPRUIP0)。