设计 CHI 的 RTL 实现时,PPA 经验可以理解为:知道资源花在哪里、瓶颈在哪里、哪些协议要求必须保、哪些实现可以折中。 下面按性能、功耗、面积、时序、CHI 特有微架构、工程方法几个维度详细罗列。
一、总体原则
- 协议正确性优先,PPA 其次:CHI 的 ordering、一致性、死锁避免不能为 PPA 让步。
- PPA 在微架构/RTL 阶段决定大半:后端只能收敛,不能翻盘。
- PPA 是 trade-off,不是单目标:VC 多、buffer 深、crossbar 大通常性能好,但面积功耗时序变差。
- CHI 理解决定"必须做什么",PPA 经验决定"用多少资源做"。
- 早期估算:RTL 阶段就要做综合、STA、功耗估算,不能等 freeze。
二、性能 P 经验
1. 通道与虚通道
- REQ/RSP/DAT/SNP 至少分离 VC,避免 head-of-line 阻塞。
- SNP 通常独立 VC 且高优先级,防止监听被 REQ 阻塞导致死锁或长延迟。
- DAT 可按 QoS/来源/目标分 VC,提高带宽利用率。
- VC 越多,仲裁和 buffer 面积功耗越大,不是越多越好。
2. Buffer 与流控
- Buffer 深度按带宽延迟积、credit 往返时间、outstanding 需求决定。
- 太浅:限制 outstanding,带宽上不去;太深:面积功耗大,延迟增加。
- 信用流控要避免 credit 回环太慢,跨时钟域尤其明显。
- 输入 buffer、输出 buffer、中央 buffer 的取舍影响 crossbar 压力和延迟。
3. 仲裁与 QoS
- 仲裁器:round-robin、加权轮询、优先级、年龄优先。
- SNP 响应通常高优先级,但要有防饿死机制。
- QoS 要区分 latency-sensitive 和 bandwidth-sensitive。
- 仲裁组合逻辑容易成关键路径,需流水或预仲裁。
4. 拓扑与路由
- 小端口数:全连接 crossbar 简单低延迟。
- 大端口数:mesh、ring、多级网络,面积更优但跳数延迟增加。
- 路由算法:确定性 vs 自适应;自适应可缓解拥塞但可能乱序和死锁复杂。
- 虚拟网络隔离依赖环,避免协议死锁。
5. 事务与乱序
- TxnID 表管理 outstanding,位宽和表大小影响并发能力。
- 同地址顺序、不同地址乱序,避免全局顺序化。
- Order 域、屏障、DVM 操作要单独处理,可能成为性能瓶颈。
- Retry、P-Credit、WriteNoSnp 等流控机制影响吞吐。
6. 一致性相关性能
- Snoop filter/目录减少广播,但查表延迟和面积大。
- 目录冲突、替换、状态更新可能成瓶颈。
- 数据转发、脏数据写回、Evict 路径影响延迟和带宽。
- HN-F 的合并、拆分、响应匹配能力决定系统吞吐。
7. 拥塞与背压
- 背压传播要快,但不能形成组合环。
- 拥塞时低优先级不能饿死,SNP 不能丢。
- 性能计数器、trace 对调试有用,但占面积。
三、功耗 P 经验
1. 时钟门控
- VC 空闲、buffer 空、通道无事务时门控时钟。
- 细粒度门控省功耗,但门控逻辑增加面积和时序压力。
- 时钟树功耗是大头,NoC 尤其明显。
2. 电源门控与低功耗状态
- NoC 可分电源域,支持部分网络关闭。
- 跨电源域需隔离、保持、异步 FIFO。
- 低功耗状态转换不能破坏 CHI 一致性。
3. 数据门控与操作数隔离
- 数据通路翻转是动态功耗主要来源。
- 宽数据 MUX、crossbar、寄存器使能要优化。
- 操作数隔离减少无效翻转。
4. Memory 与 Buffer 功耗
- SRAM 比 FF 面积小,但访问功耗高;小 buffer 可用 FF。
- Banking 减少单次访问功耗。
- 低功耗模式:light sleep、retention。
5. 动态电压频率调节
- NoC 频率和电压可随流量调节。
- 跨时钟域异步 FIFO 面积功耗要权衡。
- DVFS 切换不能影响 CHI ordering。
6. 协议相关功耗
- Snoop 广播功耗大,目录/snoop filter 可减少。
- 数据转发比写回再读省功耗。
- 压缩、编码可减少翻转,但增加逻辑面积。
四、面积 A 经验
1. 存储资源
- Buffer、TxnID 表、目录、snoop filter 是面积大头。
- SRAM vs 寄存器阵列:深度大用 SRAM,浅小用 FF。
- CAM 面积功耗大,尽量用 hash、分段、FIFO 替代。
2. Crossbar 与互连
- 全连接 crossbar 面积 O(N²),端口多时爆炸。
- 多级网络、ring、mesh 面积更优。
- 宽数据通路是面积主要来源,banking/时分复用可缓解。
3. 仲裁与逻辑
- 优先级仲裁、加权仲裁面积不同。
- 复杂 QoS、年龄、超时逻辑增加面积。
- 流水线寄存器增加面积,但换频率。
4. 表项与位宽
- TxnID 位宽、SrcID/TgtID 位宽、地址位宽、数据位宽直接影响面积。
- 表项数量按最大 outstanding 设计,过大浪费。
- 可配置参数化生成,按产品档位裁剪。
5. 一致性结构
- 目录条目数、snoop filter 容量、状态位宽。
- 共享者列表、owner 跟踪、脏数据管理。
- 小系统可广播,大系统必须目录。
6. DFT 与 ECC
- 扫描链、MBIST、ECC/Parity 增加面积。
- ECC 对数据通路和存储都增加位宽和逻辑。
- 但可靠性要求下不能省。
五、时序/频率经验
1. 关键路径
- 仲裁器、crossbar、CAM、TxnID 分配/释放、信用更新、一致性检查。
- 宽 MUX、大位宽比较、复杂条件容易压关键路径。
- SNP 与 REQ 冲突处理逻辑可能很深。
2. 流水线
- 在 crossbar、仲裁、查表、路由处切流水。
- 流水线级数增加延迟,但提高频率。
- 寄存器切片有利于物理收敛。
3. 物理感知
- 高扇出信号、长线、跨模块路径。
- 模块边界寄存器切片、中继、H 树。
- 时钟域交叉用异步 FIFO,注意延迟和面积。
4. 复位与初始化
- 同步复位 vs 异步复位影响时序和面积。
- 复位树功耗和面积要权衡。
- 低功耗状态恢复不能破坏协议状态。
六、CHI 特有微架构 PPA 经验
- REQ/RSP/DAT/SNP 隔离:协议要求,也影响 VC 数量和面积。
- SNP 路径:独立高优先级,防止死锁;但常开逻辑耗功耗。
- TxnID 管理:分配、跟踪、释放;CAM 面积大,可用 FIFO/hash。
- Ordering 跟踪:同地址顺序、Order 域、屏障;避免全局顺序化。
- 一致性状态:MESI/MOESI、owner、sharer;目录/snoop filter 面积大。
- 数据转发:Cache-to-cache、HN-F 转发;省延迟和带宽,但逻辑复杂。
- 写回与 Evict:脏数据写回路径要足够带宽,否则阻塞。
- P-Credit/Retry:流控机制影响 buffer 和 credit 设计。
- DVM 与屏障:单独通道或高优先级,可能成瓶颈。
- 多芯片/CCIX/CXL:跨片延迟大,需更大 outstanding 和 buffer。
七、工程方法与检查清单
- 参数化设计:端口数、VC 数、buffer 深度、TxnID 位宽可配置。
- 早期 PPA 估算:综合、STA、功耗分析、流量模型。
- 性能建模:排队论、仿真、瓶颈分析。
- 验证与形式化:协议正确性优先,再优化 PPA。
- DFT/ECC:扫描、MBIST、ECC 对 PPA 影响早评估。
- 后端协同:物理感知 RTL,模块边界、时钟、电源规划。
- 检查清单 :
- VC 是否足够隔离 REQ/RSP/DAT/SNP?
- SNP 是否会被阻塞?
- Buffer 深度是否匹配带宽延迟积?
- TxnID 是否会耗尽?
- 仲裁是否公平且防饿死?
- Crossbar 是否成为面积/时序瓶颈?
- 时钟门控是否覆盖空闲 VC/buffer?
- 目录/snoop filter 面积功耗是否可接受?
- 关键路径是否已流水?
- 跨时钟域/电源域是否安全?
八、总结
设计 CHI 的 RTL 时,PPA 经验的核心是:在保证 CHI 协议正确性和死锁避免的前提下,用最合适的 VC 数、buffer 深度、crossbar 规模、目录结构和流水线级数,去平衡带宽、延迟、频率、面积和功耗。
CHI 理解让你不做错,PPA 经验让你做得好、做得省、做得快。