1. ARM Revere-AMU架构概述
Revere-AMU是ARM公司设计的一种高性能计算架构,主要面向需要低延迟、高吞吐量的硬件加速场景。这个架构的核心创新点在于其独特的缓存管理和事务处理机制,能够显著提升系统整体性能。
在现代计算系统中,缓存和事务管理是两大关键性能瓶颈。传统架构中,数据需要在不同层级的缓存之间来回移动,造成不必要的延迟。而Revere-AMU通过创新的缓存预取技术,允许数据直接"存放"在靠近使用者的缓存中,大幅减少了数据移动的开销。
提示:Revere-AMU特别适合需要频繁进行设备间通信的场景,如网络数据包处理、存储加速、AI推理等应用。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 缓存预取机制详解
2.1 缓存预取的基本原理
缓存预取(Cache Stashing)是Revere-AMU的核心优化技术之一。它允许主设备(如CPU或硬件加速器)指示特定数据范围应该预加载到系统中靠近接收端的缓存中,而不是传统的从内存中读取数据的方式。
这种机制的工作原理是:
- 发送方在发送消息时,附带缓存预取控制信息
- 接收方的缓存控制器解析这些信息
- 数据被直接预取到接收方附近的缓存层级
- 接收方处理数据时,可以直接从本地缓存获取,无需等待内存访问
2.2 缓存预取的控制参数
Revere-AMU提供了精细的缓存预取控制,主要参数包括:
| 参数名称 | 作用范围 | 描述 |
|---|---|---|
| STASH_ENABLE | 会话级 | 启用/禁用整个会话的缓存预取功能 |
| STASH_DEST | 会话级 | 指定预取目标缓存的位置标识 |
| STASH_CTL | 会话/消息级 | 控制预取的具体区域和行为 |
缓存预取可以应用于三种数据:
- Revere消息本身
- 带外缓冲表(Out-of-band buffer table)
- 带外缓冲区(Out-of-band buffers)
2.3 预取目标指定
STASH_DEST字段用于指定数据应该预取到哪个缓存节点。这个32位字段的具体含义取决于系统采用的互连协议:
2.3.1 AMBA 5 AXI系统中的预取目标
在AXI系统中,STASH_DEST字段映射到AWSTASH信号族:
| 位域 | 信号 | 描述 |
|---|---|---|
| [17] | AWSTASHLPIDEN | 逻辑处理器ID是否有效 |
| [16:12] | AWSTASHLPID[4:0] | 逻辑处理器标识符 |
| [11] | AWSTASHNIDEN | 节点标识符是否有效 |
| [10:0] | AWSTASHNID[10:0] | 节点标识符 |
2.3.2 AMBA 5 CHI系统中的预取目标
在CHI系统中,映射关系略有不同:
| 位域 | 字段 | 描述 |
|---|---|---|
| [17] | StashLPIDValid | 逻辑处理器ID是否有效 |
| [16:12] | StashLPID | 逻辑处理器ID |
| [11] | StashNIDValid | 节点ID是否有效 |
| [10:0] | StashNID | 节点ID |
值得注意的是,在CHI协议中,将StashLPIDValid和StashNIDValid都设置为0是有效的,这表示允许Home节点将数据预取到当前缓存数据的RN节点上。
2.4 预取区域控制
STASH_CTL字段用于精确控制哪些数据区域需要被预取。它支持定义两个独立的预取区域,这在处理类似网络数据包(需要同时预取包头和包尾)的场景中
