高性能稀疏CNN计算核心Phantom与Phantom-2D架构解析
立即解锁
发布时间: 2025-08-31 00:09:44 阅读量: 4 订阅数: 9 AIGC 

# 高性能稀疏CNN计算核心Phantom与Phantom - 2D架构解析
## 1 Phantom核心组件与处理流程
### 1.1 计算引擎(Compute Engine)
计算引擎是Phantom核心的重要组成部分,包含多个处理单元(PE),每个PE又有多个线程。以PE0为例,有th2,0、th1,0、th0,0等线程,还配备了配置位用于控制计算过程。在不同的计算周期中,计算引擎会对输入数据进行处理,例如在第一个周期、第二个周期和第三个周期,会进行数据的映射和计算操作。在第三个周期,其利用率为66%,这是因为输入处于边界,LAM块没有更多数据可供前瞻。
### 1.2 输出缓冲区(Output Buffer)
输出缓冲区是Phantom核心的最后一个模块,负责缓冲计算引擎的输出,并使用L2加法器对数据进行累加,以生成最终输出。它采用m个先进先出(FIFO)缓冲区系统,m等于计算引擎中乘法器线程的总数(这里为9)。以图中的示例来说,F1 - F9这9个FIFO接收来自计算引擎中L1加法器的数据。括号内的1(浅灰色)和0(深灰色)代表由TDS块设置的标签位。累加操作分两个阶段进行,相同颜色的FIFO会进行累加,如(F1 + F4 + F7)、(F2 + F5 + F8)和(F3 + F6 + F9)。输出根据关联的标签分为有效输出和部分输出,如果累加的所有值的标签都为1,则输出为有效输出,否则为部分输出。具体的累加计算示例如下表所示:
| 周期 | 计算式 | 输出结果 |
| --- | --- | --- |
| 1 | (a1wa1+a2wa2) (1) + (b1wb1)(1) + (c0wc0+c1wc1)(1) | O0(有效) |
| 1 | (0) (0) + (c0wb0 + c1wb1)(1) + (d0wc0)(1) | O1(部分) |
| 1 | (c1wa1) (1) + (0)(0) + (0)(0) | O2(部分) |
| 2 | (d2wa2) (1) + (e1wb1)(1) + (f0wc0)(1) | O3(有效) |
| 2 | (b1wa1+b2wa2) (1) + O1(部分) | O1(有效) |
| 2 | (0)(0) + (f0wb0)(1) + (g0wc0)(1) | O4(部分) |
| 2 | O2(部分) + (d0wb0)(1) + (e1wc1)(1) | O2(有效) |
| 2 | (0)(0) + (0)(0) + (0)(0) | O5(部分) |
| 3 | (0)(1) + (0)(1) + (0)(1) | 输出耗尽 |
| 3 | (e1wa1 + e2wa2)(1) + O4(部分) | O4(有效) |
| 3 | (0)(1) + (0)(1) + (0)(1) | 输出耗尽 |
| 3 | (f2wa2)(1) + (g0wb0)(1) + (h0wc0 + h1wc1)(1) + O5(部分) | O5(有效) |
| 3 | (0)(1) + (0)(1) + (0)(1) | 输出耗尽 |
### 1.3 输出编码(Output Encoding)
输出编码主要用于生成输出稀疏掩码。与权重不同,输出激活的稀疏性是动态的,需要实时生成稀疏掩码。确定输出稀疏掩码的过程如下:
1. **第一步**:对各个LAM输出进行全零检查,将其缩减为单个位(LAMxr),这会生成ReLU之前输出的稀疏掩码。LAM值取自测试示例。
2. **第二步**:在ReLU之后,将负输出及其对应的稀疏掩码位置转换为零。最终的稀疏掩码直接存储,而输出会先进行移位以省略零数据项,然后再存储。其流程可以用以下mermaid流程图表示:
```mermai
```
0
0
复制全文
相关推荐










