剖析硬件中的 AI 引擎 - 2022.1 简体中文

Versal ACAP AI 引擎编程环境 用户指南 (UG1076)

Document ID
UG1076
Release Date
2022-05-25
Version
2022.1 简体中文

AI 引擎事件可提供有关特定时刻的系统信息。与时间戳、类型和一系列数据值关联的事件被称为有效载荷。有效载荷的解读取决于事件类型。时间戳支持事件排序、计算因果关系和对一系列事件执行验证器的实现。

为便于事件建模,AI 引擎阵列的关键模块包括处理器、DMA、锁定模块、存储器和 I/O 串流。每个模块均可视作为事件生成器/响应器。每个模块均可接收事件和响应事件。可生成新事件作为响应。事件基于事件生成器来分类。在事件定义中并不会显式提及时间戳。每起事件均以有效载荷来描述,有效载荷即多个与该事件关联的值。每个 AI 引擎、存储器、DMA 或锁定均可按二维索引 <col, row> 进行寻址,二维索引即 AI 引擎阵列中的列索引和行索引。下表显示了部分 AI 引擎事件。

下表列出了由 AI 引擎生成的事件及其对应的 ID。

表 1. AI 引擎事件
事件编号 事件名称 注解
22 Group Core Stall 从事件编号 23 到 31 范围内的任意或所有事件均可触发此事件
23 Memory Stall 如果由于存储器冲突导致核停滞,则会生成此类事件
24 Stream Stall 如果由于输入处无数据或者由于来自核的串流输出上存在反压而导致核停滞,则会生成此类事件
25 Cascade Stall 如果由于输入处无数据或者由于来自核的串流输出上存在反压而导致核停滞,则会生成此类事件
26 Lock Stall 如果由于当前正在获取锁定而导致核停滞,则会生成此类事件
28 Active 当核状态从 disabled(禁用)更改为 active(活动)时所生成的事件
32 Group Core Program Flow 从事件编号 33 到 45 范围内的任意或所有事件均可触发此事件
37 Instr Vector 当 ME 核执行“vector”(矢量)指令时所生成的事件
38 Instr Load 当 ME 核执行“load”(加载)指令时所生成的事件
39 Instr Store 当 ME 核执行“store”(存储)指令时所生成的事件
40 Instr Stream Get 当 ME 核执行“read from stream”(读取串流)指令时所生成的事件
41 Instr Stream Put 当 ME 核执行“write to stream”(写入串流)指令时所生成的事件
42 Instr Cascade Get 当 ME 核执行“read from cascade stream”(读取级联串流)指令时所生成的事件
43 Instr Cascade Put 当 ME 核执行“write to cascade stream”(写入级联串流)指令时所生成的事件
50 FP Overflow 当浮点上溢异常标志位发生置位时所生成的事件
51 FP Underflow 当浮点下溢异常标志位发生置位时所生成的事件
52 FP Invalid 当浮点无效异常标志位发生置位时所生成的事件
53 FP Div by Zero 当浮点除以零异常标志位发生置位时所生成的事件

下表列出了由 AI 引擎存储器模块生成的事件及其对应的 ID。

表 2. 存储器模块事件
事件编号 事件名称 注解
20 Group DMA Activity 从事件编号 21 到 40 范围内的任意或所有事件均可触发此事件
25 DMA S2MM 0 finished packet 当 S2MM 通道 0 完成 DMA 包的传输时所生成的事件
26 DMA S2MM 1 finished packet 当 S2MM 通道 1 完成 DMA 包的传输时所生成的事件
27 DMA MM2S 0 finished packet 当 MM2S 通道 0 完成 DMA 包的传输时所生成的事件
28 DMA MM2S 0 finished packet 当 MM2S 通道 1 完成 DMA 包的传输时所生成的事件
33 DMA S2MM 0 stalled lock acquire 当 S2MM 通道 0 在锁定获取状态下发生停滞时所生成的事件
34 DMA S2MM 1 stalled lock acquire 当 S2MM 通道 1 在锁定获取状态下发生停滞时所生成的事件
35 DMA MM2S 0 stalled lock acquire 当 MM2S 通道 0 在锁定获取状态下发生停滞时所生成的事件
36 DMA MM2S 1 stalled lock acquire 当 MM2S 通道 1 在锁定获取状态下发生停滞时所生成的事件
43 Group Lock 从事件编号 44 到 75 范围内的任意或所有事件均可触发此事件
76 Group Memory Conflict 从事件编号 77 到 84 范围内的任意或所有事件均可触发此事件
86 Group Errors 从事件编号 87 到 100 范围内的任意或所有事件均可触发此事件

下表列出了由 AI 引擎接口生成的事件及其对应的 ID。

表 3. AI 引擎接口事件
事件编号 事件名称 注解
74 Port_Idle_0 当指定 PLIO 端口处于 Idle(空闲)状态时所生成的事件。

通过监控 AI Engine Tile Stream Switch(AI 引擎拼块串流交换机)的任意主端口或从端口均可查看 Port Idle(端口空闲)状况。Stream_Switch_Event_Port_Selection_0 寄存器位 5:0 必须加以配置。如果已配置的 Port ID(端口 ID)处于 idle(空闲)状态,则将触发此事件。

75 Port_Running_0 当指定 PLIO 端口处于 Running(运行)状态时所生成的事件。

通过监控 AI Engine Tile Stream Switch(AI 引擎拼块串流交换机)的任意主端口或从端口均可查看 Port running(端口运行)状况。Stream_Switch_Event_Port_Selection_0 寄存器位 5:0 必须加以配置。如果已配置的 Port ID(端口 ID)处于 running(运行)状态,则将触发此事件。

76 Port_Stalled_0 当指定 PLIO 端口处于 Stalled(停滞)状态时所生成的事件。

通过监控 AI Engine Tile Stream Switch(AI 引擎拼块串流交换机)的任意主端口或从端口均可查看 Port stalled(端口停滞)状况。Stream_Switch_Event_Port_Selection_0 寄存器位 5:0 必须加以配置。如果已配置的 Port ID(端口 ID)处于 stalled(停滞)状态,则将触发此事件。

77 Port_TLAST_0 当指定 PLIO 端口正在发射 TLAST 信号时所生成的事件。

通过监控 AI Engine Tile Stream Switch(AI 引擎拼块串流交换机)的任意主端口或从端口均可查看 Port TLAST(端口 TLAST)状况。Stream_Switch_Event_Port_Selection_0 寄存器位 5:0 必须加以配置。如果已配置的 Port ID(端口 ID)处于 TLAST 状态,则将触发此事件。