1. ARM SVE向量存储指令概述
在ARM架构的可扩展向量扩展(SVE)指令集中,ST1B和ST1D是两类核心的向量存储指令,它们构成了高性能计算场景下数据搬运的基础。作为第二代SVE指令集(SVE2)和矩阵扩展(SME)的重要组成部分,这些指令通过SIMD并行机制显著提升了数据处理效率。
ST1B指令专为字节(8-bit)数据存储设计,而ST1D则处理双字(64-bit)数据存储。它们共同的特点是支持谓词(predication)控制,这意味着只有被谓词寄存器标记为"活跃"的元素才会被实际写入内存,这种特性可以避免不必要的内存操作,在稀疏数据处理时尤其有用。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. ST1B指令详解
2.1 基本存储模式
ST1B指令的核心功能是将向量寄存器中的字节数据存储到内存中。根据寻址方式的不同,它主要分为以下几种变体:
- 标量基址+标量索引(scalar plus scalar)
- 标量基址+向量索引(scalar plus vector)
- 向量基址+立即数偏移(vector plus immediate)
以最常见的标量基址+标量索引模式为例,其基本操作伪代码如下:
asm复制base = Xn // 基址寄存器
index = Xm // 索引寄存器
for i = 0 to VL-1
if Pg[i] == 1 // 谓词控制
mem[base + index + i] = Zt[i].B
2.2 连续寄存器存储
ST1B的一个强大特性是支持从多个连续向量寄存器一次性存储数据。这在处理跨越多寄存器的长数组时特别有用:
asm复制ST1B { Zt1.B, Zt2.B }, Pg, [Xn, Xm] // 存储两个连续寄存器
ST1B { Zt1.B-Zt4.B }, Pg, [Xn, Xm] // 存储四个连续寄存器(SVE2p1新增)
关键参数说明:
- Pg:谓词寄存器,控制哪些元素需要存储
- Xn:基址寄存器(可以是SP栈指针)
- Xm:索引寄存器(自动按元素大小缩放)
- Zt1-Zt4:连续的向量寄存器组
2.3 编码格式解析
以两寄存器版本的ST1B为例,其指令编码如下:
code复制31-29 | 28-23 |
