Scalar 指令
每个条目给出完整 32 位固定/可变布局、c220 后端实际接受的文本形式、立即数约束和架构周期模型。
没有“c220 汇编器接受”标记的条目不能把目录占位符直接复制进源码。
目录速览
| ID |
解码名 |
助记符 |
格式 |
作用 |
状态 |
| 0 |
ADD |
ADD |
S-RRR |
标量加法。 |
c220 汇编器接受 |
| 1 |
SUB |
SUB |
S-RRR |
标量减法。 |
c220 汇编器接受 |
| 2 |
MUL |
MUL |
S-RRR |
标量乘法。 |
c220 汇编器接受 |
| 3 |
MADD |
MADD |
S-RRR |
标量乘加;累加源和目标绑定由具体格式与后缀定义。 |
c220 汇编器接受 |
| 4 |
DIV |
DIV |
S-RRR |
标量除法。 |
c220 汇编器接受 |
| 5 |
REM |
REM |
S-RRR |
标量余数。 |
c220 汇编器接受 |
| 6 |
MAX |
MAX |
S-RRR |
选择两个标量中的较大值。 |
c220 汇编器接受 |
| 7 |
MIN |
MIN |
S-RRR |
选择两个标量中的较小值。 |
c220 汇编器接受 |
| 8 |
SEL |
SEL |
S-RRR |
按隐式条件状态在两个标量源之间选择。 |
c220 汇编器接受 |
| 9 |
AND |
AND |
S-RRR |
逐位与。 |
c220 汇编器接受 |
| 10 |
OR |
OR |
S-RRR |
逐位或。 |
c220 汇编器接受 |
| 11 |
XOR |
XOR |
S-RRR |
逐位异或。 |
c220 汇编器接受 |
| 12 |
CMP |
CMP |
S-CMP-RR |
比较两个标量并更新条件状态。 |
c220 汇编器接受 |
| 13 |
CMPN |
CMPN |
S-CMP-RR |
执行带否定或反向条件的标量比较,谓词方向由 cond 编码选择。 |
仅机器格式;无 c220 公共语法 |
| 14 |
LD_XD_XN |
LD |
S-LDST-R |
从所示地址空间加载到标量寄存器。 |
c220 汇编器接受 |
| 15 |
ST_XD_XN |
ST |
S-LDST-R |
把标量寄存器写入所示地址空间。 |
c220 汇编器接受 |
| 16 |
LD_DDR |
LD_DDR |
S-LDST-R |
从所示地址空间加载到标量寄存器。 |
c220 汇编器接受 |
| 17 |
ST_DDR |
ST_DDR |
S-LDST-R |
把标量寄存器写入所示地址空间。 |
c220 汇编器接受 |
| 18 |
DC_PRELOAD_XN_XM |
DC_PRELOAD |
S-LDST-R |
按基址和寄存器偏移发出数据缓存预加载提示。 |
c220 汇编器接受 |
| 19 |
LD4_XD_XN |
LD4 |
S-LDST-R |
四路/四单元加载;寄存器偏移和步长由该格式的控制字段指定。 |
仅机器格式;无 c220 公共语法 |
| 20 |
ST4_XD_XN |
ST4 |
S-LDST-R |
四路/四单元存储;寄存器偏移和步长由该格式的控制字段指定。 |
仅机器格式;无 c220 公共语法 |
| 21 |
SQRT |
SQRT |
S-RR |
标量平方根。 |
c220 汇编器接受 |
| 22 |
NEG |
NEG |
S-RR |
标量取负。 |
c220 汇编器接受 |
| 23 |
ABS |
ABS |
S-RR |
标量绝对值。 |
c220 汇编器接受 |
| 24 |
NOT |
NOT |
S-RR |
逐位取反。 |
c220 汇编器接受 |
| 25 |
SHL |
SHL |
S-RR |
标量逻辑左移。 |
仅机器格式;无 c220 公共语法 |
| 26 |
SHR |
SHR |
S-RR |
标量右移;有符号后缀决定算术/逻辑扩展。 |
c220 汇编器接受 |
| 27 |
SBCNT |
SBCNT |
S-RR |
对标量源执行置位计数类位操作。 |
c220 汇编器接受 |
| 28 |
SFF |
SFF |
S-RR |
在标量源中查找首个置位位置。 |
c220 汇编器接受 |
| 29 |
SBITSET |
SBITSET |
S-RR |
执行标量位设置操作。 |
c220 汇编器接受 |
| 30 |
CLZ |
CLZ |
S-RR |
统计前导零。 |
c220 汇编器接受 |
| 31 |
SFLBITS |
SFLBITS |
S-RR |
执行由该格式控制字段指定的标量位域或位重排操作。 |
c220 汇编器接受 |
| 32 |
CONV |
CONV |
S-RR |
标量数据类型转换;后缀编码源/目标类型与舍入模式。 |
c220 汇编器接受 |
| 33 |
MOV_XD_XN |
MOV |
S-RR |
移动或构造标量/控制值。 |
c220 汇编器接受 |
| 34 |
MOV_XD_SPR |
MOV |
S-SPR |
移动或构造标量/控制值。 |
c220 汇编器接受 |
| 35 |
MOV_SPR_XN |
MOV |
S-SPR |
移动或构造标量/控制值。 |
c220 汇编器接受 |
| 36 |
SIGNEXT |
SIGNEXT |
S-RR |
符号扩展。 |
c220 汇编器接受 |
| 37 |
ZEROEXT |
ZEROEXT |
S-RR |
零扩展。 |
c220 汇编器接受 |
| 38 |
INSERT_XD_XN |
INSERT |
S-BIT |
把源寄存器位域插入目标寄存器。 |
c220 汇编器接受 |
| 39 |
INSERT_XD |
INSERT |
S-BIT |
把立即数/位域插入目标寄存器。 |
c220 汇编器接受 |
| 40 |
LD_XD_XN_IMM |
LD |
S-LDST-I |
从所示地址空间加载到标量寄存器。 |
c220 汇编器接受 |
| 41 |
ST_XD_XN_IMM |
ST |
S-LDST-I |
把标量寄存器写入所示地址空间。 |
c220 汇编器接受 |
| 42 |
LD4_XD_XN_IMM |
LD4 |
S-LDST-I |
四路/四单元加载;立即数和控制字段指定偏移与步长。 |
仅机器格式;无 c220 公共语法 |
| 43 |
ST4_XD_XN_IMM |
ST4 |
S-LDST-I |
四路/四单元存储;立即数和控制字段指定偏移与步长。 |
仅机器格式;无 c220 公共语法 |
| 44 |
MOV_XD_IMM |
MOV |
S-RI |
移动或构造标量/控制值。 |
c220 汇编器接受 |
| 45 |
MOVK |
MOVK |
S-RI |
把立即数字段写入目标寄存器的指定半字位置。 |
c220 汇编器接受 |
| 46 |
ADD_IMM |
ADD |
S-RRI |
标量加法的立即数形式。 |
c220 汇编器接受 |
| 47 |
MUL_IMM |
MUL |
S-RRI |
标量乘法的立即数形式。 |
c220 汇编器接受 |
| 48 |
SUB_IMM |
SUB |
S-RRI |
标量减法的立即数形式。 |
c220 汇编器接受 |
| 49 |
DC_PRELOAD_XN_IMM |
DC_PRELOAD |
S-LDST-I |
按基址和立即数偏移发出数据缓存预加载提示。 |
c220 汇编器接受 |
| 50 |
CMP_IMM |
CMP |
S-CMP-RI |
标量比较的立即数形式,并更新条件状态。 |
c220 汇编器接受 |
| 51 |
LDP_XI_XJ_XN |
LDP |
S-PAIR |
成对加载两个标量寄存器。 |
c220 汇编器接受 |
| 52 |
STP_XI_XJ_XN |
STP |
S-PAIR |
成对存储两个标量寄存器。 |
c220 汇编器接受 |
| 53 |
UNDEF53 |
— |
R |
内部/保留解码槽位,不定义公共语义。 |
保留/内部 |
| 54 |
UNDEF54 |
— |
R |
内部/保留解码槽位,不定义公共语义。 |
保留/内部 |
| 55 |
STI_XN_XM |
STI |
S-SPECIAL |
使用寄存器索引执行专用存储。 |
仅机器格式;无 c220 公共语法 |
| 56 |
STI_XN_IMM |
STI |
S-SPECIAL |
使用立即数索引执行专用存储。 |
仅机器格式;无 c220 公共语法 |
| 57 |
ST_ATOMIC_XN_XM |
ST_ATOMIC |
S-LDST-R |
原子存储,控制量来自寄存器。 |
c220 汇编器接受 |
| 58 |
ST_ATOMIC_XN_IMM |
ST_ATOMIC |
S-LDST-I |
原子存储,控制量来自立即数。 |
c220 汇编器接受 |
| 59 |
ST_DEV_XD_XN_IMM12 |
ST_DEV |
S-LDST-I |
向设备地址空间存储。 |
c220 汇编器接受 |
| 60 |
LD_DEV_XD_XN_IMM12 |
LD_DEV |
S-LDST-I |
从设备地址空间加载。 |
c220 汇编器接受 |
| 61 |
MOVX8_XD_IMM |
MOVX8 |
S-RI |
构造/移动扩展的 8 位立即数字段。 |
c220 汇编器接受 |
| 62 |
MOV_SPR_IMM |
MOV |
S-SPR |
把立即数写入特殊寄存器。 |
仅机器格式;无 c220 公共语法 |
逐指令说明
ID 0 — ADD
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RRR |
| 参数角色 |
Xd=目标;Xn/Xm=源;dtype=标量解释方式 |
| 作用 |
标量加法。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000000....................0001(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000000(fixed); [23:22]=dtype; [21:17]=Xd; [16:12]=Xn; [11:7]=Xm; [6:4]=subop/control; [3:0]=0001(fixed)
- 解码条件:
(word & 0xff00000f) == 0x00000001。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
| 2 |
X2 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
f32 |
Xn, Xn, Xn |
ADD.f32 X0, X1, X2 |
0x00801101 |
dav-c220-cube, dav-c220-vec |
s64 |
Xn, Xn, Xn |
ADD.s64 X0, X1, X2 |
0x00001101 |
汇编器级最小示例:
.text
.a64
ADD.f32 X0, X1, X2
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L_{\mathrm{f32}}=5,\quad L_{\mathrm{other}}=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/f32=5; 其他=1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 1 — SUB
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RRR |
| 参数角色 |
Xd=目标;Xn/Xm=源;dtype=标量解释方式 |
| 作用 |
标量减法。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000000....................0010(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000000(fixed); [23:22]=dtype; [21:17]=Xd; [16:12]=Xn; [11:7]=Xm; [6:4]=subop/control; [3:0]=0010(fixed)
- 解码条件:
(word & 0xff00000f) == 0x00000002。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
| 2 |
X2 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
s64 |
Xn, Xn, Xn |
SUB.s64 X0, X1, X2 |
0x00001102 |
汇编器级最小示例:
.text
.a64
SUB.s64 X0, X1, X2
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L_{\mathrm{f32}}=5,\quad L_{\mathrm{other}}=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/f32=5; 其他=1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 2 — MUL
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RRR |
| 参数角色 |
Xd=目标;Xn/Xm=源;dtype=标量解释方式 |
| 作用 |
标量乘法。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000000....................0011(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000000(fixed); [23:22]=dtype; [21:17]=Xd; [16:12]=Xn; [11:7]=Xm; [6:4]=subop/control; [3:0]=0011(fixed)
- 解码条件:
(word & 0xff00000f) == 0x00000003。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
| 2 |
X2 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
s64 |
Xn, Xn, Xn |
MUL.s64 X0, X1, X2 |
0x00001103 |
汇编器级最小示例:
.text
.a64
MUL.s64 X0, X1, X2
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L_{\mathrm{s64}}=2,\quad L_{\mathrm{f32}}=5,\quad L_{\mathrm{other}}=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/s64=2; f32=5; 其他=1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 3 — MADD
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RRR |
| 参数角色 |
Xd=目标;Xn/Xm=源;dtype=标量解释方式 |
| 作用 |
标量乘加;累加源和目标绑定由具体格式与后缀定义。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000000....................0100(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000000(fixed); [23:22]=dtype; [21:17]=Xd; [16:12]=Xn; [11:7]=Xm; [6:4]=subop/control; [3:0]=0100(fixed)
- 解码条件:
(word & 0xff00000f) == 0x00000004。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
| 2 |
X2 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
s64 |
Xn, Xn, Xn |
MADD.s64 X0, X1, X2 |
0x00001104 |
汇编器级最小示例:
.text
.a64
MADD.s64 X0, X1, X2
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L_{\mathrm{s64}}=3,\quad L_{\mathrm{f32}}=5,\quad L_{\mathrm{other}}=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/s64=3; f32=5; 其他=1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 4 — DIV
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RRR |
| 参数角色 |
Xd=目标;Xn/Xm=源;dtype=标量解释方式 |
| 作用 |
标量除法。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000000....................0101(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000000(fixed); [23:22]=dtype; [21:17]=Xd; [16:12]=Xn; [11:7]=Xm; [6:4]=subop/control; [3:0]=0101(fixed)
- 解码条件:
(word & 0xff00000f) == 0x00000005。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
| 2 |
X2 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
s64 |
Xn, Xn, Xn |
DIV.s64 X0, X1, X2 |
0x00001105 |
dav-c220-cube, dav-c220-vec |
u64 |
Xn, Xn, Xn |
DIV.u64 X0, X1, X2 |
0x00401105 |
汇编器级最小示例:
.text
.a64
DIV.s64 X0, X1, X2
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar 多周期 EX→可变延迟队列→notify/退休 |
| 延迟/公式 |
\(L_{\mathrm{f32}}=14,\quad L_{\mathrm{other}}=20\) 登记到可变延迟队列并 notify_after(L) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/f32=14; 其他=20/— |
| 退休 |
多周期执行计时到期且目标写回/scoreboard 条件满足 |
| 动态停顿 |
I1 slot、源 RAW、目标 WAW、同类多周期执行冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 5 — REM
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RRR |
| 参数角色 |
Xd=目标;Xn/Xm=源;dtype=标量解释方式 |
| 作用 |
标量余数。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000000....................0110(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000000(fixed); [23:22]=dtype; [21:17]=Xd; [16:12]=Xn; [11:7]=Xm; [6:4]=subop/control; [3:0]=0110(fixed)
- 解码条件:
(word & 0xff00000f) == 0x00000006。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
| 2 |
X2 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
s64 |
Xn, Xn, Xn |
REM.s64 X0, X1, X2 |
0x00001106 |
dav-c220-cube, dav-c220-vec |
u64 |
Xn, Xn, Xn |
REM.u64 X0, X1, X2 |
0x00401106 |
汇编器级最小示例:
.text
.a64
REM.s64 X0, X1, X2
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar 多周期 EX→可变延迟队列→notify/退休 |
| 延迟/公式 |
\(L_{\mathrm{f32}}=14,\quad L_{\mathrm{other}}=20\) 登记到可变延迟队列并 notify_after(L) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/f32=14; 其他=20/— |
| 退休 |
多周期执行计时到期且目标写回/scoreboard 条件满足 |
| 动态停顿 |
I1 slot、源 RAW、目标 WAW、同类多周期执行冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 6 — MAX
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RRR |
| 参数角色 |
Xd=目标;Xn/Xm=源;dtype=标量解释方式 |
| 作用 |
选择两个标量中的较大值。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000000....................0111(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000000(fixed); [23:22]=dtype; [21:17]=Xd; [16:12]=Xn; [11:7]=Xm; [6:4]=subop/control; [3:0]=0111(fixed)
- 解码条件:
(word & 0xff00000f) == 0x00000007。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
| 2 |
X2 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
f32 |
Xn, Xn, Xn |
MAX.f32 X0, X1, X2 |
0x00801107 |
dav-c220-cube, dav-c220-vec |
s64 |
Xn, Xn, Xn |
MAX.s64 X0, X1, X2 |
0x00001107 |
汇编器级最小示例:
.text
.a64
MAX.f32 X0, X1, X2
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 7 — MIN
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RRR |
| 参数角色 |
Xd=目标;Xn/Xm=源;dtype=标量解释方式 |
| 作用 |
选择两个标量中的较小值。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000000....................1000(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000000(fixed); [23:22]=dtype; [21:17]=Xd; [16:12]=Xn; [11:7]=Xm; [6:4]=subop/control; [3:0]=1000(fixed)
- 解码条件:
(word & 0xff00000f) == 0x00000008。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
| 2 |
X2 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
f32 |
Xn, Xn, Xn |
MIN.f32 X0, X1, X2 |
0x00801108 |
dav-c220-cube, dav-c220-vec |
s64 |
Xn, Xn, Xn |
MIN.s64 X0, X1, X2 |
0x00001108 |
汇编器级最小示例:
.text
.a64
MIN.f32 X0, X1, X2
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 8 — SEL
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RRR |
| 参数角色 |
Xd=目标;Xn/Xm=源;dtype=标量解释方式 |
| 作用 |
按隐式条件状态在两个标量源之间选择。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000000....................1001(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000000(fixed); [23:22]=dtype; [21:17]=Xd; [16:12]=Xn; [11:7]=Xm; [6:4]=subop/control; [3:0]=1001(fixed)
- 解码条件:
(word & 0xff00000f) == 0x00000009。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
| 2 |
X2 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
b64 |
Xn, Xn, Xn |
SEL.b64 X0, X1, X2 |
0x00c01109 |
汇编器级最小示例:
.text
.a64
SEL.b64 X0, X1, X2
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 9 — AND
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RRR |
| 参数角色 |
Xd=目标;Xn/Xm=源;dtype=标量解释方式 |
| 作用 |
逐位与。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000000....................1010(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000000(fixed); [23:22]=dtype; [21:17]=Xd; [16:12]=Xn; [11:7]=Xm; [6:4]=subop/control; [3:0]=1010(fixed)
- 解码条件:
(word & 0xff00000f) == 0x0000000a。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
| 2 |
X2 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
b64 |
Xn, Xn, Xn |
AND.b64 X0, X1, X2 |
0x00c0110a |
汇编器级最小示例:
.text
.a64
AND.b64 X0, X1, X2
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 10 — OR
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RRR |
| 参数角色 |
Xd=目标;Xn/Xm=源;dtype=标量解释方式 |
| 作用 |
逐位或。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000000....................1011(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000000(fixed); [23:22]=dtype; [21:17]=Xd; [16:12]=Xn; [11:7]=Xm; [6:4]=subop/control; [3:0]=1011(fixed)
- 解码条件:
(word & 0xff00000f) == 0x0000000b。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
| 2 |
X2 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
b64 |
Xn, Xn, Xn |
OR.b64 X0, X1, X2 |
0x00c0110b |
汇编器级最小示例:
.text
.a64
OR.b64 X0, X1, X2
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 11 — XOR
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RRR |
| 参数角色 |
Xd=目标;Xn/Xm=源;dtype=标量解释方式 |
| 作用 |
逐位异或。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000000....................1100(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000000(fixed); [23:22]=dtype; [21:17]=Xd; [16:12]=Xn; [11:7]=Xm; [6:4]=subop/control; [3:0]=1100(fixed)
- 解码条件:
(word & 0xff00000f) == 0x0000000c。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
| 2 |
X2 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
b64 |
Xn, Xn, Xn |
XOR.b64 X0, X1, X2 |
0x00c0110c |
汇编器级最小示例:
.text
.a64
XOR.b64 X0, X1, X2
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 12 — CMP
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-CMP-RR |
| 参数角色 |
Xn/Xm=比较源;cond=谓词;结果写入标量条件状态 |
| 作用 |
比较两个标量并更新条件状态。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000000....................1110(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000000(fixed); [23:22]=dtype; [21:17]=compare control; [16:12]=Xn; [11:7]=Xm; [6:4]=condition; [3:0]=1110(fixed)
- 解码条件:
(word & 0xff00000f) == 0x0000000e。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
| 1 |
X1 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
EQ.s64 |
Xn, Xn |
CMP.EQ.s64 X0, X1 |
0x0000008e |
汇编器级最小示例:
.text
.a64
CMP.EQ.s64 X0, X1
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 13 — CMPN
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-CMP-RR |
| 参数角色 |
Xn/Xm=比较源;cond=谓词;结果写入标量条件状态 |
| 作用 |
执行带否定或反向条件的标量比较,谓词方向由 cond 编码选择。 |
| 文本语法状态 |
仅机器格式;无 c220 公共语法 |
32 位编码布局
- 位 31→0 模式:
00000000....................1111(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000000(fixed); [23:22]=dtype; [21:17]=compare control; [16:12]=Xn; [11:7]=Xm; [6:4]=condition; [3:0]=1111(fixed)
- 解码条件:
(word & 0xff00000f) == 0x0000000f。
公共文本形式
当前 c220 后端没有接受该目录项的完整文本形式。OP、<dtype>、<mode> 等占位符不是汇编语法;目录样例字只用于机器格式识别,不能作为可运行内核。
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 14 — LD(LD_XD_XN)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-LDST-R |
| 参数角色 |
data=加载目标/存储源;base=基址;offset=寄存器偏移 |
| 作用 |
从所示地址空间加载到标量寄存器。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000001.................000....(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000001(fixed); [23:22]=dtype; [21:17]=data; [16:12]=base; [11:7]=offset; [6:4]=000(fixed); [3]=address_mode; [2:0]=space/control
- 解码条件:
(word & 0xff000070) == 0x01000000。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
| 2 |
X2 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
b64 |
Xn, [Xn], Xn |
LD.b64 X0, [X1], X2 |
0x01c01100 |
dav-c220-cube, dav-c220-vec |
b64 |
Xn, [Xn], Xn, #imm |
LD.b64 X0, [X1], X2, #0 |
0x01c01100 |
dav-c220-cube, dav-c220-vec |
b8 |
Xn, [Xn], Xn |
LD.b8 X0, [X1], X2 |
0x01001100 |
dav-c220-cube, dav-c220-vec |
b8 |
Xn, [Xn], Xn, #imm |
LD.b8 X0, [X1], X2, #0 |
0x01001100 |
汇编器级最小示例:
.text
.a64
LD.b64 X0, [X1], X2
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
address_mode |
0..1 |
1 位;零扩展/枚举 |
scale=1;alignment=1 |
可选地址/控制模式 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar LSU/AGU→UB 或 D-cache→BIU(需要时)→load retire |
| 延迟/公式 |
\(T=T_{\mathrm{issue}}+T_{\mathrm{AGU}}+T_{\mathrm{hit/refill}}+T_{\mathrm{response}}+S_{\mathrm{queue}}\) 不能用登记 latency=1 代替 |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:由 UB/D-cache hit、MSHR/refill/BIU 响应决定/—/— |
| 退休 |
LSU/D-cache 返回,或预取请求达到模型定义的完成点 |
| 动态停顿 |
RAW/WAW、LD queue、STB forwarding、D-cache miss/MSHR、BIU outstanding、UB bank |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 15 — ST(ST_XD_XN)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-LDST-R |
| 参数角色 |
data=加载目标/存储源;base=基址;offset=寄存器偏移 |
| 作用 |
把标量寄存器写入所示地址空间。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000001.................010....(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000001(fixed); [23:22]=dtype; [21:17]=data; [16:12]=base; [11:7]=offset; [6:4]=010(fixed); [3]=address_mode; [2:0]=space/control
- 解码条件:
(word & 0xff000070) == 0x01000020。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
| 2 |
X2 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
b64 |
Xn, [Xn], Xn |
ST.b64 X0, [X1], X2 |
0x01c01120 |
dav-c220-cube, dav-c220-vec |
b64 |
Xn, [Xn], Xn, #imm |
ST.b64 X0, [X1], X2, #0 |
0x01c01120 |
dav-c220-cube, dav-c220-vec |
b8 |
Xn, [Xn], Xn |
ST.b8 X0, [X1], X2 |
0x01001120 |
dav-c220-cube, dav-c220-vec |
b8 |
Xn, [Xn], Xn, #imm |
ST.b8 X0, [X1], X2, #0 |
0x01001120 |
汇编器级最小示例:
.text
.a64
ST.b64 X0, [X1], X2
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
address_mode |
0..1 |
1 位;零扩展/枚举 |
scale=1;alignment=1 |
可选地址/控制模式 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar LSU/AGU→STB/DSTB→UB 或 D-cache/BIU→store retire |
| 延迟/公式 |
\(T=T_{\mathrm{issue}}+T_{\mathrm{AGU}}+T_{\mathrm{STB\,accept}}+T_{\mathrm{visibility\,model}}+S_{\mathrm{queue}}\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/—/由 STB/DSTB、D-cache/UB/BIU 接受和完成条件决定 |
| 退休 |
store 达到 STB/目标接口的模型退休点;全局可见性需另由同步保证 |
| 动态停顿 |
STB/DSTB 满、地址相关、cache line 状态、BIU outstanding、UB bank |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 16 — LD_DDR
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-LDST-R |
| 参数角色 |
data=加载目标/存储源;base=基址;offset=寄存器偏移 |
| 作用 |
从所示地址空间加载到标量寄存器。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000001.................001....(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000001(fixed); [23:22]=dtype; [21:17]=data; [16:12]=base; [11:7]=offset; [6:4]=001(fixed); [3]=address_mode; [2:0]=space/control
- 解码条件:
(word & 0xff000070) == 0x01000010。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
| 2 |
X2 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
b16 |
Xn, [Xn], Xn |
LD_DDR.b16 X0, [X1], X2 |
0x01401110 |
dav-c220-cube, dav-c220-vec |
b16 |
Xn, [Xn], Xn, #imm |
LD_DDR.b16 X0, [X1], X2, #0 |
0x01401110 |
汇编器级最小示例:
.text
.a64
LD_DDR.b16 X0, [X1], X2
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
address_mode |
0..1 |
1 位;零扩展/枚举 |
scale=1;alignment=1 |
可选地址/控制模式 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar LSU/AGU→UB 或 D-cache→BIU(需要时)→load retire |
| 延迟/公式 |
\(T=T_{\mathrm{issue}}+T_{\mathrm{AGU}}+T_{\mathrm{hit/refill}}+T_{\mathrm{response}}+S_{\mathrm{queue}}\) 不能用登记 latency=1 代替 |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:由 UB/D-cache hit、MSHR/refill/BIU 响应决定/—/— |
| 退休 |
LSU/D-cache 返回,或预取请求达到模型定义的完成点 |
| 动态停顿 |
RAW/WAW、LD queue、STB forwarding、D-cache miss/MSHR、BIU outstanding、UB bank |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 17 — ST_DDR
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-LDST-R |
| 参数角色 |
data=加载目标/存储源;base=基址;offset=寄存器偏移 |
| 作用 |
把标量寄存器写入所示地址空间。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000001.................011....(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000001(fixed); [23:22]=dtype; [21:17]=data; [16:12]=base; [11:7]=offset; [6:4]=011(fixed); [3]=address_mode; [2:0]=space/control
- 解码条件:
(word & 0xff000070) == 0x01000030。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
| 2 |
X2 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
b16 |
Xn, [Xn], Xn |
ST_DDR.b16 X0, [X1], X2 |
0x01401130 |
dav-c220-cube, dav-c220-vec |
b16 |
Xn, [Xn], Xn, #imm |
ST_DDR.b16 X0, [X1], X2, #0 |
0x01401130 |
汇编器级最小示例:
.text
.a64
ST_DDR.b16 X0, [X1], X2
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
address_mode |
0..1 |
1 位;零扩展/枚举 |
scale=1;alignment=1 |
可选地址/控制模式 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar LSU/AGU→STB/DSTB→UB 或 D-cache/BIU→store retire |
| 延迟/公式 |
\(T=T_{\mathrm{issue}}+T_{\mathrm{AGU}}+T_{\mathrm{STB\,accept}}+T_{\mathrm{visibility\,model}}+S_{\mathrm{queue}}\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/—/由 STB/DSTB、D-cache/UB/BIU 接受和完成条件决定 |
| 退休 |
store 达到 STB/目标接口的模型退休点;全局可见性需另由同步保证 |
| 动态停顿 |
STB/DSTB 满、地址相关、cache line 状态、BIU outstanding、UB bank |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 18 — DC_PRELOAD(DC_PRELOAD_XN_XM)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-LDST-R |
| 参数角色 |
Xn=预取基址;Xm=寄存器偏移 |
| 作用 |
按基址和寄存器偏移发出数据缓存预加载提示。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000001.................101....(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000001(fixed); [23:22]=preload mode; [21:17]=preload control; [16:12]=base; [11:7]=offset; [6:4]=101(fixed); [3:0]=space/control
- 解码条件:
(word & 0xff000070) == 0x01000050。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
| 1 |
X1 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
[Xn], Xn |
DC_PRELOAD [X0], X1 |
0x010000d0 |
汇编器级最小示例:
.text
.a64
DC_PRELOAD [X0], X1
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar LSU/AGU→UB 或 D-cache→BIU(需要时)→load retire |
| 延迟/公式 |
\(T=T_{\mathrm{issue}}+T_{\mathrm{AGU}}+T_{\mathrm{hit/refill}}+T_{\mathrm{response}}+S_{\mathrm{queue}}\) 不能用登记 latency=1 代替 |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:由 UB/D-cache hit、MSHR/refill/BIU 响应决定/—/— |
| 退休 |
LSU/D-cache 返回,或预取请求达到模型定义的完成点 |
| 动态停顿 |
RAW/WAW、LD queue、STB forwarding、D-cache miss/MSHR、BIU outstanding、UB bank |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 19 — LD4(LD4_XD_XN)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-LDST-R |
| 参数角色 |
data=加载目标/存储源;base=基址;offset=寄存器偏移 |
| 作用 |
四路/四单元加载;寄存器偏移和步长由该格式的控制字段指定。 |
| 文本语法状态 |
仅机器格式;无 c220 公共语法 |
32 位编码布局
- 位 31→0 模式:
00000001.................100....(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000001(fixed); [23:22]=dtype; [21:17]=data; [16:12]=base; [11:7]=offset; [6:4]=100(fixed); [3:0]=space/control
- 解码条件:
(word & 0xff000070) == 0x01000040。
公共文本形式
当前 c220 后端没有接受该目录项的完整文本形式。OP、<dtype>、<mode> 等占位符不是汇编语法;目录样例字只用于机器格式识别,不能作为可运行内核。
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar LSU/AGU→UB 或 D-cache→BIU(需要时)→load retire |
| 延迟/公式 |
\(T=T_{\mathrm{issue}}+T_{\mathrm{AGU}}+T_{\mathrm{hit/refill}}+T_{\mathrm{response}}+S_{\mathrm{queue}}\) 不能用登记 latency=1 代替 |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:由 UB/D-cache hit、MSHR/refill/BIU 响应决定/—/— |
| 退休 |
LSU/D-cache 返回,或预取请求达到模型定义的完成点 |
| 动态停顿 |
RAW/WAW、LD queue、STB forwarding、D-cache miss/MSHR、BIU outstanding、UB bank |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 20 — ST4(ST4_XD_XN)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-LDST-R |
| 参数角色 |
data=加载目标/存储源;base=基址;offset=寄存器偏移 |
| 作用 |
四路/四单元存储;寄存器偏移和步长由该格式的控制字段指定。 |
| 文本语法状态 |
仅机器格式;无 c220 公共语法 |
32 位编码布局
- 位 31→0 模式:
00000001.................110....(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000001(fixed); [23:22]=dtype; [21:17]=data; [16:12]=base; [11:7]=offset; [6:4]=110(fixed); [3:0]=space/control
- 解码条件:
(word & 0xff000070) == 0x01000060。
公共文本形式
当前 c220 后端没有接受该目录项的完整文本形式。OP、<dtype>、<mode> 等占位符不是汇编语法;目录样例字只用于机器格式识别,不能作为可运行内核。
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar LSU/AGU→STB/DSTB→UB 或 D-cache/BIU→store retire |
| 延迟/公式 |
\(T=T_{\mathrm{issue}}+T_{\mathrm{AGU}}+T_{\mathrm{STB\,accept}}+T_{\mathrm{visibility\,model}}+S_{\mathrm{queue}}\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/—/由 STB/DSTB、D-cache/UB/BIU 接受和完成条件决定 |
| 退休 |
store 达到 STB/目标接口的模型退休点;全局可见性需另由同步保证 |
| 动态停顿 |
STB/DSTB 满、地址相关、cache line 状态、BIU outstanding、UB bank |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 21 — SQRT
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RR |
| 参数角色 |
Xd=目标;Xn=源;低位可携带转换/子操作 |
| 作用 |
标量平方根。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000010........................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000010(fixed); [23:22]=dtype/conv; [21:17]=Xd; [16:12]=Xn; [11:0]=subop/control
- 解码条件:
(word & 0xff000000) == 0x02000000。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
f32 |
Xn, Xn |
SQRT.f32 X0, X1 |
0x02801000 |
dav-c220-cube, dav-c220-vec |
s64 |
Xn, Xn |
SQRT.s64 X0, X1 |
0x02001000 |
汇编器级最小示例:
.text
.a64
SQRT.f32 X0, X1
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar 多周期 EX→可变延迟队列→notify/退休 |
| 延迟/公式 |
\(L_{\mathrm{f32}}=18,\quad L_{\mathrm{other}}=15\) 登记到可变延迟队列并 notify_after(L) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/f32=18; 其他=15/— |
| 退休 |
多周期执行计时到期且目标写回/scoreboard 条件满足 |
| 动态停顿 |
I1 slot、源 RAW、目标 WAW、同类多周期执行冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 22 — NEG
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RR |
| 参数角色 |
Xd=目标;Xn=源;低位可携带转换/子操作 |
| 作用 |
标量取负。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000010............00001.......(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000010(fixed); [23:22]=dtype/conv; [21:17]=Xd; [16:12]=Xn; [11:7]=00001(fixed); [6:0]=subop/control
- 解码条件:
(word & 0xff000f80) == 0x02000080。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
s64 |
Xn, Xn |
NEG.s64 X0, X1 |
0x02001080 |
汇编器级最小示例:
.text
.a64
NEG.s64 X0, X1
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 23 — ABS
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RR |
| 参数角色 |
Xd=目标;Xn=源;低位可携带转换/子操作 |
| 作用 |
标量绝对值。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000010............00010.......(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000010(fixed); [23:22]=dtype/conv; [21:17]=Xd; [16:12]=Xn; [11:7]=00010(fixed); [6:0]=subop/control
- 解码条件:
(word & 0xff000f80) == 0x02000100。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
f32 |
Xn, Xn |
ABS.f32 X0, X1 |
0x02801100 |
dav-c220-cube, dav-c220-vec |
s64 |
Xn, Xn |
ABS.s64 X0, X1 |
0x02001100 |
汇编器级最小示例:
.text
.a64
ABS.f32 X0, X1
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 24 — NOT
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RR |
| 参数角色 |
Xd=目标;Xn=源;低位可携带转换/子操作 |
| 作用 |
逐位取反。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000010............00011.......(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000010(fixed); [23:22]=dtype/conv; [21:17]=Xd; [16:12]=Xn; [11:7]=00011(fixed); [6:0]=subop/control
- 解码条件:
(word & 0xff000f80) == 0x02000180。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
b64 |
Xn, Xn |
NOT.b64 X0, X1 |
0x02c01180 |
汇编器级最小示例:
.text
.a64
NOT.b64 X0, X1
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 25 — SHL
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RR |
| 参数角色 |
Xd=目标;Xn=源;低位可携带转换/子操作 |
| 作用 |
标量逻辑左移。 |
| 文本语法状态 |
仅机器格式;无 c220 公共语法 |
32 位编码布局
- 位 31→0 模式:
00000010............00100.......(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000010(fixed); [23:22]=dtype/conv; [21:17]=Xd; [16:12]=Xn; [11:7]=00100(fixed); [6:0]=subop/control
- 解码条件:
(word & 0xff000f80) == 0x02000200。
公共文本形式
当前 c220 后端没有接受该目录项的完整文本形式。OP、<dtype>、<mode> 等占位符不是汇编语法;目录样例字只用于机器格式识别,不能作为可运行内核。
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 26 — SHR
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RR |
| 参数角色 |
Xd=目标;Xn=源;低位可携带转换/子操作 |
| 作用 |
标量右移;有符号后缀决定算术/逻辑扩展。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000010............00101.......(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000010(fixed); [23:22]=dtype/conv; [21:17]=Xd; [16:12]=Xn; [11:7]=00101(fixed); [6:0]=subop/control
- 解码条件:
(word & 0xff000f80) == 0x02000280。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
s64 |
Xn, Xn |
SHR.s64 X0, X1 |
0x020012c0 |
dav-c220-cube, dav-c220-vec |
u64 |
Xn, Xn |
SHR.u64 X0, X1 |
0x024012c0 |
汇编器级最小示例:
.text
.a64
SHR.s64 X0, X1
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 27 — SBCNT
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RR |
| 参数角色 |
Xd=目标;Xn=源;低位可携带转换/子操作 |
| 作用 |
对标量源执行置位计数类位操作。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000010............00110.......(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000010(fixed); [23:22]=dtype/conv; [21:17]=Xd; [16:12]=Xn; [11:7]=00110(fixed); [6:0]=subop/control
- 解码条件:
(word & 0xff000f80) == 0x02000300。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
SBCNT0.b64 |
Xn, Xn |
SBCNT0.b64 X0, X1 |
0x02c01300 |
dav-c220-cube, dav-c220-vec |
SBCNT1.b64 |
Xn, Xn |
SBCNT1.b64 X0, X1 |
0x02c01340 |
汇编器级最小示例:
.text
.a64
SBCNT0.b64 X0, X1
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=2\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/2/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 28 — SFF
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RR |
| 参数角色 |
Xd=目标;Xn=源;低位可携带转换/子操作 |
| 作用 |
在标量源中查找首个置位位置。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000010............00111.......(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000010(fixed); [23:22]=dtype/conv; [21:17]=Xd; [16:12]=Xn; [11:7]=00111(fixed); [6:0]=subop/control
- 解码条件:
(word & 0xff000f80) == 0x02000380。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
SFF0.b64 |
Xn, Xn |
SFF0.b64 X0, X1 |
0x02c01380 |
dav-c220-cube, dav-c220-vec |
SFF1.b64 |
Xn, Xn |
SFF1.b64 X0, X1 |
0x02c013c0 |
汇编器级最小示例:
.text
.a64
SFF0.b64 X0, X1
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 29 — SBITSET
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RR |
| 参数角色 |
Xd=目标;Xn=源;低位可携带转换/子操作 |
| 作用 |
执行标量位设置操作。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000010............01000.......(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000010(fixed); [23:22]=dtype/conv; [21:17]=Xd; [16:12]=Xn; [11:7]=01000(fixed); [6:0]=subop/control
- 解码条件:
(word & 0xff000f80) == 0x02000400。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
SBITSET0.b64 |
Xn, Xn |
SBITSET0.b64 X0, X1 |
0x02c01400 |
dav-c220-cube, dav-c220-vec |
SBITSET1.b64 |
Xn, Xn |
SBITSET1.b64 X0, X1 |
0x02c01440 |
汇编器级最小示例:
.text
.a64
SBITSET0.b64 X0, X1
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 30 — CLZ
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RR |
| 参数角色 |
Xd=目标;Xn=源;低位可携带转换/子操作 |
| 作用 |
统计前导零。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000010............01001.......(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000010(fixed); [23:22]=dtype/conv; [21:17]=Xd; [16:12]=Xn; [11:7]=01001(fixed); [6:0]=subop/control
- 解码条件:
(word & 0xff000f80) == 0x02000480。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
b64 |
Xn, Xn |
CLZ.b64 X0, X1 |
0x02c01480 |
汇编器级最小示例:
.text
.a64
CLZ.b64 X0, X1
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 31 — SFLBITS
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RR |
| 参数角色 |
Xd=目标;Xn=源;低位可携带转换/子操作 |
| 作用 |
执行由该格式控制字段指定的标量位域或位重排操作。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000010............01010.......(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000010(fixed); [23:22]=dtype/conv; [21:17]=Xd; [16:12]=Xn; [11:7]=01010(fixed); [6:0]=subop/control
- 解码条件:
(word & 0xff000f80) == 0x02000500。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
s64 |
Xn, Xn |
SFLBITS.s64 X0, X1 |
0x02001500 |
汇编器级最小示例:
.text
.a64
SFLBITS.s64 X0, X1
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 32 — CONV
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RR |
| 参数角色 |
Xd=目标;Xn=源;低位可携带转换/子操作 |
| 作用 |
标量数据类型转换;后缀编码源/目标类型与舍入模式。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000010............01011.......(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000010(fixed); [23:22]=dtype/conv; [21:17]=Xd; [16:12]=Xn; [11:7]=01011(fixed); [6:0]=subop/control
- 解码条件:
(word & 0xff000f80) == 0x02000580。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
f162f32 |
Xn, Xn |
CONV.f162f32 X0, X1 |
0x02001587 |
dav-c220-cube, dav-c220-vec |
f322f16 |
Xn, Xn |
CONV.f322f16 X0, X1 |
0x02001586 |
dav-c220-cube, dav-c220-vec |
f322f16o |
Xn, Xn |
CONV.f322f16o X0, X1 |
0x02001588 |
dav-c220-cube, dav-c220-vec |
f322s32a |
Xn, Xn |
CONV.f322s32a X0, X1 |
0x02001580 |
dav-c220-cube, dav-c220-vec |
f322s32c |
Xn, Xn |
CONV.f322s32c X0, X1 |
0x02001582 |
dav-c220-cube, dav-c220-vec |
f322s32f |
Xn, Xn |
CONV.f322s32f X0, X1 |
0x02001581 |
dav-c220-cube, dav-c220-vec |
f322s32r |
Xn, Xn |
CONV.f322s32r X0, X1 |
0x02001584 |
dav-c220-cube, dav-c220-vec |
f322s32z |
Xn, Xn |
CONV.f322s32z X0, X1 |
0x02001583 |
dav-c220-cube, dav-c220-vec |
s322f32 |
Xn, Xn |
CONV.s322f32 X0, X1 |
0x02001585 |
汇编器级最小示例:
.text
.a64
CONV.f162f32 X0, X1
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=2\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/2/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 33 — MOV(MOV_XD_XN)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RR |
| 参数角色 |
Xd=目标;Xn=源;低位可携带转换/子操作 |
| 作用 |
移动或构造标量/控制值。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000010............10000.......(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000010(fixed); [23:22]=dtype/conv; [21:17]=Xd; [16:12]=Xn; [11:7]=10000(fixed); [6:0]=subop/control
- 解码条件:
(word & 0xff000f80) == 0x02000800。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
Xn, Xn |
MOV X0, X1 |
0x02001800 |
汇编器级最小示例:
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 34 — MOV(MOV_XD_SPR)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-SPR |
| 参数角色 |
X register=通用寄存器;SPR=命名状态;方向由操作数顺序决定 |
| 作用 |
移动或构造标量/控制值。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000010............10001.......(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000010(fixed); [23:22]=direction; [21:17]=X register; [16:12]=SPR index; [11:7]=10001(fixed); [6:0]=control
- 解码条件:
(word & 0xff000f80) == 0x02000880。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
Xn, STATUS |
MOV X0, STATUS |
0x02002880 |
汇编器级最小示例:
.text
.a64
MOV X0, STATUS
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 35 — MOV(MOV_SPR_XN)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-SPR |
| 参数角色 |
SPR=目标特殊寄存器;Xn=写入值 |
| 作用 |
移动或构造标量/控制值。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000010............10010.......(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000010(fixed); [23:22]=direction; [21:17]=SPR index; [16:12]=X register; [11:7]=10010(fixed); [6:0]=control
- 解码条件:
(word & 0xff000f80) == 0x02000900。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
CTRL, Xn |
MOV CTRL, X0 |
0x02060900 |
汇编器级最小示例:
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 36 — SIGNEXT
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RR |
| 参数角色 |
Xd=目标;Xn=源;低位可携带转换/子操作 |
| 作用 |
符号扩展。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000010............10011.......(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000010(fixed); [23:22]=dtype/conv; [21:17]=Xd; [16:12]=Xn; [11:7]=10011(fixed); [6:0]=subop/control
- 解码条件:
(word & 0xff000f80) == 0x02000980。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
s16 |
Xn, Xn |
SIGNEXT.s16 X0, X1 |
0x02401980 |
dav-c220-cube, dav-c220-vec |
s32 |
Xn, Xn |
SIGNEXT.s32 X0, X1 |
0x02801980 |
dav-c220-cube, dav-c220-vec |
s8 |
Xn, Xn |
SIGNEXT.s8 X0, X1 |
0x02001980 |
汇编器级最小示例:
.text
.a64
SIGNEXT.s16 X0, X1
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 37 — ZEROEXT
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RR |
| 参数角色 |
Xd=目标;Xn=源;低位可携带转换/子操作 |
| 作用 |
零扩展。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000010............10100.......(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000010(fixed); [23:22]=dtype/conv; [21:17]=Xd; [16:12]=Xn; [11:7]=10100(fixed); [6:0]=subop/control
- 解码条件:
(word & 0xff000f80) == 0x02000a00。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
u16 |
Xn, Xn |
ZEROEXT.u16 X0, X1 |
0x02401a00 |
dav-c220-cube, dav-c220-vec |
u32 |
Xn, Xn |
ZEROEXT.u32 X0, X1 |
0x02801a00 |
dav-c220-cube, dav-c220-vec |
u8 |
Xn, Xn |
ZEROEXT.u8 X0, X1 |
0x02001a00 |
汇编器级最小示例:
.text
.a64
ZEROEXT.u16 X0, X1
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 38 — INSERT(INSERT_XD_XN)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-BIT |
| 参数角色 |
Xd=目标;Xn=源;bit_offset=目标最低位;width_minus_one=位宽减一 |
| 作用 |
把源寄存器位域插入目标寄存器。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000010............110.........(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000010(fixed); [23:22]=bit_offset; [21:17]=Xd; [16:12]=Xn; [11:9]=110(fixed); [8:5]=bit_offset; [4:0]=width_minus_one
- 解码条件:
(word & 0xff000e00) == 0x02000c00。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
Xn, Xn, #imm, #imm |
INSERT X0, X1, #0, #1 |
0x02001c01 |
汇编器级最小示例:
.text
.a64
INSERT X0, X1, #0, #1
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
bit_offset |
0..63 |
6 位;零扩展/枚举 |
scale=1;alignment=1 |
目标位域最低位 |
width_minus_one |
0..31 |
5 位;零扩展/枚举 |
scale=1;alignment=1 |
插入宽度减一;bit_offset + width_minus_one 不得超过 63 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 39 — INSERT(INSERT_XD)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-BIT |
| 参数角色 |
Xd=目标;immediate8=被插入值;bit_offset=目标最低位;extension_mode=扩展模式 |
| 作用 |
把立即数/位域插入目标寄存器。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000010............1011........(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000010(fixed); [23]=extension_mode; [22]=bit_offset; [21:17]=Xd; [16:12]=bit_offset; [11:8]=1011(fixed); [7:0]=immediate8
- 解码条件:
(word & 0xff000f00) == 0x02000b00。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
Xn, #imm, #imm, #imm |
INSERT X0, #1, #0, #1 |
0x02800b01 |
汇编器级最小示例:
.text
.a64
INSERT X0, #1, #0, #1
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
immediate8 |
0..255 |
8 位;零扩展/枚举 |
scale=1;alignment=1 |
插入目标寄存器的 8 位值 |
bit_offset |
0..63 |
6 位;零扩展/枚举 |
scale=1;alignment=1 |
目标位域最低位 |
extension_mode |
0..1 |
1 位;零扩展/枚举 |
scale=1;alignment=1 |
8 位插入的扩展/控制模式 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 40 — LD(LD_XD_XN_IMM)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-LDST-I |
| 参数角色 |
data=加载目标/存储源;base=基址;offset=有符号立即数 |
| 作用 |
从所示地址空间加载到标量寄存器。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
000.0011........................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=000(fixed); [28]=address_mode; [27:24]=0011(fixed); [23:22]=dtype; [21:17]=data; [16:12]=base; [11:0]=offset
- 解码条件:
(word & 0xef000000) == 0x03000000。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-vec |
b16 |
Xn, [Xn], #imm |
LD.b16 X0, [X1], #0 |
0x03401000 |
dav-c220-vec |
b32 |
Xn, [Xn], #imm |
LD.b32 X0, [X1], #0 |
0x03801000 |
dav-c220-cube, dav-c220-vec |
b64 |
Xn, [Xn], #imm |
LD.b64 X0, [X1], #0 |
0x03c01000 |
dav-c220-cube, dav-c220-vec |
b64 |
Xn, [Xn], #imm, #imm |
LD.b64 X0, [X1], #0, #0 |
0x03c01000 |
dav-c220-cube, dav-c220-vec |
b8 |
Xn, [Xn], #imm |
LD.b8 X0, [X1], #0 |
0x03001000 |
dav-c220-cube, dav-c220-vec |
b8 |
Xn, [Xn], #imm, #imm |
LD.b8 X0, [X1], #0, #0 |
0x03001000 |
汇编器级最小示例:
.text
.a64
LD.b64 X0, [X1], #0
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
offset |
-2048..2047 |
12 位;符号扩展 |
scale=1;alignment=1 |
字面字段值 |
address_mode |
0..1 |
1 位;零扩展/枚举 |
scale=1;alignment=1 |
可选地址/控制模式 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar LSU/AGU→UB 或 D-cache→BIU(需要时)→load retire |
| 延迟/公式 |
\(T=T_{\mathrm{issue}}+T_{\mathrm{AGU}}+T_{\mathrm{hit/refill}}+T_{\mathrm{response}}+S_{\mathrm{queue}}\) 不能用登记 latency=1 代替 |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:由 UB/D-cache hit、MSHR/refill/BIU 响应决定/—/— |
| 退休 |
LSU/D-cache 返回,或预取请求达到模型定义的完成点 |
| 动态停顿 |
RAW/WAW、LD queue、STB forwarding、D-cache miss/MSHR、BIU outstanding、UB bank |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 41 — ST(ST_XD_XN_IMM)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-LDST-I |
| 参数角色 |
data=加载目标/存储源;base=基址;offset=有符号立即数 |
| 作用 |
把标量寄存器写入所示地址空间。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
000.0100........................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=000(fixed); [28]=address_mode; [27:24]=0100(fixed); [23:22]=dtype; [21:17]=data; [16:12]=base; [11:0]=offset
- 解码条件:
(word & 0xef000000) == 0x04000000。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
b64 |
Xn, [Xn], #imm |
ST.b64 X0, [X1], #0 |
0x04c01000 |
dav-c220-cube, dav-c220-vec |
b64 |
Xn, [Xn], #imm, #imm |
ST.b64 X0, [X1], #0, #0 |
0x04c01000 |
dav-c220-cube, dav-c220-vec |
b8 |
Xn, [Xn], #imm |
ST.b8 X0, [X1], #0 |
0x04001000 |
dav-c220-cube, dav-c220-vec |
b8 |
Xn, [Xn], #imm, #imm |
ST.b8 X0, [X1], #0, #0 |
0x04001000 |
汇编器级最小示例:
.text
.a64
ST.b64 X0, [X1], #0
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
offset |
-2048..2047 |
12 位;符号扩展 |
scale=1;alignment=1 |
字面字段值 |
address_mode |
0..1 |
1 位;零扩展/枚举 |
scale=1;alignment=1 |
可选地址/控制模式 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar LSU/AGU→STB/DSTB→UB 或 D-cache/BIU→store retire |
| 延迟/公式 |
\(T=T_{\mathrm{issue}}+T_{\mathrm{AGU}}+T_{\mathrm{STB\,accept}}+T_{\mathrm{visibility\,model}}+S_{\mathrm{queue}}\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/—/由 STB/DSTB、D-cache/UB/BIU 接受和完成条件决定 |
| 退休 |
store 达到 STB/目标接口的模型退休点;全局可见性需另由同步保证 |
| 动态停顿 |
STB/DSTB 满、地址相关、cache line 状态、BIU outstanding、UB bank |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 42 — LD4(LD4_XD_XN_IMM)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-LDST-I |
| 参数角色 |
data=加载目标/存储源;base=基址;offset=有符号立即数 |
| 作用 |
四路/四单元加载;立即数和控制字段指定偏移与步长。 |
| 文本语法状态 |
仅机器格式;无 c220 公共语法 |
32 位编码布局
- 位 31→0 模式:
00000101........................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000101(fixed); [23:22]=dtype; [21:17]=data; [16:12]=base; [11:0]=immediate offset
- 解码条件:
(word & 0xff000000) == 0x05000000。
公共文本形式
当前 c220 后端没有接受该目录项的完整文本形式。OP、<dtype>、<mode> 等占位符不是汇编语法;目录样例字只用于机器格式识别,不能作为可运行内核。
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar LSU/AGU→UB 或 D-cache→BIU(需要时)→load retire |
| 延迟/公式 |
\(T=T_{\mathrm{issue}}+T_{\mathrm{AGU}}+T_{\mathrm{hit/refill}}+T_{\mathrm{response}}+S_{\mathrm{queue}}\) 不能用登记 latency=1 代替 |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:由 UB/D-cache hit、MSHR/refill/BIU 响应决定/—/— |
| 退休 |
LSU/D-cache 返回,或预取请求达到模型定义的完成点 |
| 动态停顿 |
RAW/WAW、LD queue、STB forwarding、D-cache miss/MSHR、BIU outstanding、UB bank |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 43 — ST4(ST4_XD_XN_IMM)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-LDST-I |
| 参数角色 |
data=加载目标/存储源;base=基址;offset=有符号立即数 |
| 作用 |
四路/四单元存储;立即数和控制字段指定偏移与步长。 |
| 文本语法状态 |
仅机器格式;无 c220 公共语法 |
32 位编码布局
- 位 31→0 模式:
00000110........................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000110(fixed); [23:22]=dtype; [21:17]=data; [16:12]=base; [11:0]=immediate offset
- 解码条件:
(word & 0xff000000) == 0x06000000。
公共文本形式
当前 c220 后端没有接受该目录项的完整文本形式。OP、<dtype>、<mode> 等占位符不是汇编语法;目录样例字只用于机器格式识别,不能作为可运行内核。
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar LSU/AGU→STB/DSTB→UB 或 D-cache/BIU→store retire |
| 延迟/公式 |
\(T=T_{\mathrm{issue}}+T_{\mathrm{AGU}}+T_{\mathrm{STB\,accept}}+T_{\mathrm{visibility\,model}}+S_{\mathrm{queue}}\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/—/由 STB/DSTB、D-cache/UB/BIU 接受和完成条件决定 |
| 退休 |
store 达到 STB/目标接口的模型退休点;全局可见性需另由同步保证 |
| 动态停顿 |
STB/DSTB 满、地址相关、cache line 状态、BIU outstanding、UB bank |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 44 — MOV(MOV_XD_IMM)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RI |
| 参数角色 |
Xd=目标;imm=立即数;部分形式另带 halfword 位置 |
| 作用 |
移动或构造标量/控制值。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000111........................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000111(fixed); [23:22]=segment/position; [21:17]=Xd; [16]=immediate/control; [15:0]=immediate
- 解码条件:
(word & 0xff000000) == 0x07000000。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
Xn, #imm |
MOV X0, #0 |
0x07000000 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
Xn, #imm |
MOV X0, #1 |
0x07000001 |
汇编器级最小示例:
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
immediate |
0..65535 |
16 位;零扩展/枚举 |
scale=1;alignment=1 |
字面字段值 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 45 — MOVK
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RI |
| 参数角色 |
Xd=目标;imm=立即数;部分形式另带 halfword 位置 |
| 作用 |
把立即数字段写入目标寄存器的指定半字位置。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000111.......1................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000111(fixed); [23:22]=halfword_position; [21:17]=Xd; [16]=1(fixed); [15:0]=immediate
- 解码条件:
(word & 0xff010000) == 0x07010000。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
Xn, #imm, #imm |
MOVK X0, #0, #0 |
0x07010000 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
Xn, #imm, #imm |
MOVK X0, #1, #1 |
0x07410001 |
汇编器级最小示例:
.text
.a64
MOVK X0, #0, #0
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
immediate |
0..65535 |
16 位;零扩展/枚举 |
scale=1;alignment=1 |
字面字段值 |
halfword_position |
0..3 |
2 位;零扩展/枚举 |
scale=16;alignment=16 |
选择目标位 [16n+15:16n] |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 46 — ADD(ADD_IMM)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RRI |
| 参数角色 |
Xd=目标;Xn=源;imm=立即数 |
| 作用 |
标量加法的立即数形式。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
0000100000......................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:22]=0000100000(fixed); [21:17]=Xd; [16:12]=Xn; [11:0]=immediate
- 解码条件:
(word & 0xffc00000) == 0x08000000。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
s64 |
Xn, Xn, #imm |
ADD.s64 X0, X1, #0 |
0x08001000 |
dav-c220-cube, dav-c220-vec |
s64 |
Xn, Xn, #imm |
ADD.s64 X0, X1, #1 |
0x08001001 |
汇编器级最小示例:
.text
.a64
ADD.s64 X0, X1, #0
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
immediate |
0..4095 |
12 位;零扩展/枚举 |
scale=1;alignment=1 |
字面字段值 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 47 — MUL(MUL_IMM)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RRI |
| 参数角色 |
Xd=目标;Xn=源;imm=立即数 |
| 作用 |
标量乘法的立即数形式。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
0000100001......................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:22]=0000100001(fixed); [21:17]=Xd; [16:12]=Xn; [11:0]=immediate
- 解码条件:
(word & 0xffc00000) == 0x08400000。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
s64 |
Xn, Xn, #imm |
MUL.s64 X0, X1, #0 |
0x08401000 |
dav-c220-cube, dav-c220-vec |
s64 |
Xn, Xn, #imm |
MUL.s64 X0, X1, #1 |
0x08401001 |
汇编器级最小示例:
.text
.a64
MUL.s64 X0, X1, #0
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
immediate |
-2048..2047 |
12 位;符号扩展 |
scale=1;alignment=1 |
字面字段值 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 48 — SUB(SUB_IMM)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RRI |
| 参数角色 |
Xd=目标;Xn=源;imm=立即数 |
| 作用 |
标量减法的立即数形式。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
0000100010......................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:22]=0000100010(fixed); [21:17]=Xd; [16:12]=Xn; [11:0]=immediate
- 解码条件:
(word & 0xffc00000) == 0x08800000。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
s64 |
Xn, Xn, #imm |
SUB.s64 X0, X1, #0 |
0x08801000 |
dav-c220-cube, dav-c220-vec |
s64 |
Xn, Xn, #imm |
SUB.s64 X0, X1, #1 |
0x08801001 |
汇编器级最小示例:
.text
.a64
SUB.s64 X0, X1, #0
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
immediate |
0..4095 |
12 位;零扩展/枚举 |
scale=1;alignment=1 |
字面字段值 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 49 — DC_PRELOAD(DC_PRELOAD_XN_IMM)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-LDST-I |
| 参数角色 |
Xn=预取基址;offset=有符号立即数偏移 |
| 作用 |
按基址和立即数偏移发出数据缓存预加载提示。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
0000100011......................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:22]=0000100011(fixed); [21:17]=preload control; [16:12]=base; [11:0]=offset
- 解码条件:
(word & 0xffc00000) == 0x08c00000。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
[Xn], #imm |
DC_PRELOAD [X0], #0 |
0x08c00000 |
汇编器级最小示例:
.text
.a64
DC_PRELOAD [X0], #0
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
offset |
-2048..2047 |
12 位;符号扩展 |
scale=1;alignment=1 |
相对地址寄存器的有符号字节偏移 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar LSU/AGU→UB 或 D-cache→BIU(需要时)→load retire |
| 延迟/公式 |
\(T=T_{\mathrm{issue}}+T_{\mathrm{AGU}}+T_{\mathrm{hit/refill}}+T_{\mathrm{response}}+S_{\mathrm{queue}}\) 不能用登记 latency=1 代替 |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:由 UB/D-cache hit、MSHR/refill/BIU 响应决定/—/— |
| 退休 |
LSU/D-cache 返回,或预取请求达到模型定义的完成点 |
| 动态停顿 |
RAW/WAW、LD queue、STB forwarding、D-cache miss/MSHR、BIU outstanding、UB bank |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 50 — CMP(CMP_IMM)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-CMP-RI |
| 参数角色 |
Xn=比较源;imm=有符号立即数;cond=谓词 |
| 作用 |
标量比较的立即数形式,并更新条件状态。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
0000101.........................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:25]=0000101(fixed); [24:22]=condition; [21:17]=dtype/control; [16:12]=Xn; [11:0]=immediate
- 解码条件:
(word & 0xfe000000) == 0x0a000000。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
EQ.s64 |
Xn, #imm |
CMP.EQ.s64 X0, #0 |
0x0a000000 |
汇编器级最小示例:
.text
.a64
CMP.EQ.s64 X0, #0
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
immediate |
-2048..2047 |
12 位;符号扩展 |
scale=1;alignment=1 |
字面字段值 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 51 — LDP(LDP_XI_XJ_XN)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-PAIR |
| 参数角色 |
Xi/Xj=成对数据;base=地址;其余控制依具体形式 |
| 作用 |
成对加载两个标量寄存器。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00001001.......................0(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00001001(fixed); [23:22]=dtype; [21:17]=Xi; [16:12]=base; [11:7]=Xj; [6:1]=offset; [0]=0(fixed)
- 解码条件:
(word & 0xff000001) == 0x09000000。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
| 2 |
X2 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
b16 |
Xn, Xn, [Xn], #imm |
LDP.b16 X0, X1, [X2], #0 |
0x09402080 |
dav-c220-cube, dav-c220-vec |
b32 |
Xn, Xn, [Xn], #imm |
LDP.b32 X0, X1, [X2], #0 |
0x09802080 |
dav-c220-cube, dav-c220-vec |
b64 |
Xn, Xn, [Xn], #imm |
LDP.b64 X0, X1, [X2], #0 |
0x09c02080 |
dav-c220-cube, dav-c220-vec |
b8 |
Xn, Xn, [Xn], #imm |
LDP.b8 X0, X1, [X2], #0 |
0x09002080 |
汇编器级最小示例:
.text
.a64
LDP.b16 X0, X1, [X2], #0
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
offset |
-32..31 |
6 位;符号扩展 |
scale=1;alignment=1 |
成对访问的有符号偏移 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar LSU/AGU→UB 或 D-cache→BIU(需要时)→load retire |
| 延迟/公式 |
\(T=T_{\mathrm{issue}}+T_{\mathrm{AGU}}+T_{\mathrm{hit/refill}}+T_{\mathrm{response}}+S_{\mathrm{queue}}\) 不能用登记 latency=1 代替 |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:由 UB/D-cache hit、MSHR/refill/BIU 响应决定/—/— |
| 退休 |
LSU/D-cache 返回,或预取请求达到模型定义的完成点 |
| 动态停顿 |
RAW/WAW、LD queue、STB forwarding、D-cache miss/MSHR、BIU outstanding、UB bank |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 52 — STP(STP_XI_XJ_XN)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-PAIR |
| 参数角色 |
Xi/Xj=成对数据;base=地址;其余控制依具体形式 |
| 作用 |
成对存储两个标量寄存器。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00001001.......................1(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00001001(fixed); [23:22]=dtype; [21:17]=Xi; [16:12]=base; [11:7]=Xj; [6:1]=offset; [0]=1(fixed)
- 解码条件:
(word & 0xff000001) == 0x09000001。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
| 2 |
X2 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
b16 |
Xn, Xn, [Xn], #imm |
STP.b16 X0, X1, [X2], #0 |
0x09402081 |
dav-c220-cube, dav-c220-vec |
b32 |
Xn, Xn, [Xn], #imm |
STP.b32 X0, X1, [X2], #0 |
0x09802081 |
dav-c220-cube, dav-c220-vec |
b64 |
Xn, Xn, [Xn], #imm |
STP.b64 X0, X1, [X2], #0 |
0x09c02081 |
dav-c220-cube, dav-c220-vec |
b8 |
Xn, Xn, [Xn], #imm |
STP.b8 X0, X1, [X2], #0 |
0x09002081 |
汇编器级最小示例:
.text
.a64
STP.b16 X0, X1, [X2], #0
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
offset |
-32..31 |
6 位;符号扩展 |
scale=1;alignment=1 |
成对访问的有符号偏移 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar LSU/AGU→STB/DSTB→UB 或 D-cache/BIU→store retire |
| 延迟/公式 |
\(T=T_{\mathrm{issue}}+T_{\mathrm{AGU}}+T_{\mathrm{STB\,accept}}+T_{\mathrm{visibility\,model}}+S_{\mathrm{queue}}\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/—/由 STB/DSTB、D-cache/UB/BIU 接受和完成条件决定 |
| 退休 |
store 达到 STB/目标接口的模型退休点;全局可见性需另由同步保证 |
| 动态停顿 |
STB/DSTB 满、地址相关、cache line 状态、BIU outstanding、UB bank |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 53 — UNDEF53
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
R |
| 参数角色 |
保留机器码槽;无公共操作数 |
| 作用 |
内部/保留解码槽位,不定义公共语义。 |
| 文本语法状态 |
保留/内部 |
32 位编码布局
- 位 31→0 模式:
000.1100........................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=000(fixed); [28]=reserved/internal payload; [27:24]=1100(fixed); [23:0]=reserved/internal payload
- 解码条件:
(word & 0xef000000) == 0x0c000000。
公共文本形式
当前 c220 后端没有接受该目录项的完整文本形式。OP、<dtype>、<mode> 等占位符不是汇编语法;目录样例字只用于机器格式识别,不能作为可运行内核。
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 54 — UNDEF54
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
R |
| 参数角色 |
保留机器码槽;无公共操作数 |
| 作用 |
内部/保留解码槽位,不定义公共语义。 |
| 文本语法状态 |
保留/内部 |
32 位编码布局
- 位 31→0 模式:
000.1101........................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=000(fixed); [28]=reserved/internal payload; [27:24]=1101(fixed); [23:0]=reserved/internal payload
- 解码条件:
(word & 0xef000000) == 0x0d000000。
公共文本形式
当前 c220 后端没有接受该目录项的完整文本形式。OP、<dtype>、<mode> 等占位符不是汇编语法;目录样例字只用于机器格式识别,不能作为可运行内核。
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 55 — STI(STI_XN_XM)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-SPECIAL |
| 参数角色 |
指令专用标量、地址、立即数或隐式状态 |
| 作用 |
使用寄存器索引执行专用存储。 |
| 文本语法状态 |
仅机器格式;无 c220 公共语法 |
32 位编码布局
- 位 31→0 模式:
00001110........................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00001110(fixed); [23:0]=instruction-specific operands/control
- 解码条件:
(word & 0xff000000) == 0x0e000000。
公共文本形式
当前 c220 后端没有接受该目录项的完整文本形式。OP、<dtype>、<mode> 等占位符不是汇编语法;目录样例字只用于机器格式识别,不能作为可运行内核。
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar LSU/AGU→STB/DSTB→UB 或 D-cache/BIU→store retire |
| 延迟/公式 |
\(T=T_{\mathrm{issue}}+T_{\mathrm{AGU}}+T_{\mathrm{STB\,accept}}+T_{\mathrm{visibility\,model}}+S_{\mathrm{queue}}\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/—/由 STB/DSTB、D-cache/UB/BIU 接受和完成条件决定 |
| 退休 |
store 达到 STB/目标接口的模型退休点;全局可见性需另由同步保证 |
| 动态停顿 |
STB/DSTB 满、地址相关、cache line 状态、BIU outstanding、UB bank |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 56 — STI(STI_XN_IMM)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-SPECIAL |
| 参数角色 |
指令专用标量、地址、立即数或隐式状态 |
| 作用 |
使用立即数索引执行专用存储。 |
| 文本语法状态 |
仅机器格式;无 c220 公共语法 |
32 位编码布局
- 位 31→0 模式:
00001111........................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00001111(fixed); [23:0]=instruction-specific operands/control
- 解码条件:
(word & 0xff000000) == 0x0f000000。
公共文本形式
当前 c220 后端没有接受该目录项的完整文本形式。OP、<dtype>、<mode> 等占位符不是汇编语法;目录样例字只用于机器格式识别,不能作为可运行内核。
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar LSU/AGU→STB/DSTB→UB 或 D-cache/BIU→store retire |
| 延迟/公式 |
\(T=T_{\mathrm{issue}}+T_{\mathrm{AGU}}+T_{\mathrm{STB\,accept}}+T_{\mathrm{visibility\,model}}+S_{\mathrm{queue}}\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/—/由 STB/DSTB、D-cache/UB/BIU 接受和完成条件决定 |
| 退休 |
store 达到 STB/目标接口的模型退休点;全局可见性需另由同步保证 |
| 动态停顿 |
STB/DSTB 满、地址相关、cache line 状态、BIU outstanding、UB bank |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 57 — ST_ATOMIC(ST_ATOMIC_XN_XM)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-LDST-R |
| 参数角色 |
data=加载目标/存储源;base=基址;offset=寄存器偏移 |
| 作用 |
原子存储,控制量来自寄存器。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00000001.................111....(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00000001(fixed); [23:22]=dtype; [21:17]=data; [16:12]=base; [11:7]=offset; [6:4]=111(fixed); [3]=atomic_mode; [2:0]=space/control
- 解码条件:
(word & 0xff000070) == 0x01000070。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
| 2 |
X2 |
0x00000f80 |
7,8,9,10,11 |
r0->word[7]; r1->word[8]; r2->word[9]; r3->word[10]; r4->word[11] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
b16 |
Xn, [Xn], Xn, #imm |
ST_ATOMIC.b16 X0, [X1], X2, #0 |
0x01401170 |
dav-c220-cube, dav-c220-vec |
b32 |
Xn, [Xn], Xn, #imm |
ST_ATOMIC.b32 X0, [X1], X2, #0 |
0x01801170 |
dav-c220-cube, dav-c220-vec |
b64 |
Xn, [Xn], Xn, #imm |
ST_ATOMIC.b64 X0, [X1], X2, #0 |
0x01c01170 |
dav-c220-cube, dav-c220-vec |
b8 |
Xn, [Xn], Xn, #imm |
ST_ATOMIC.b8 X0, [X1], X2, #0 |
0x01001170 |
汇编器级最小示例:
.text
.a64
ST_ATOMIC.b16 X0, [X1], X2, #0
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
atomic_mode |
0..1 |
1 位;零扩展/枚举 |
scale=1;alignment=1 |
原子存储控制模式 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar LSU atomic→D-cache/BIU 原子完成→退休 |
| 延迟/公式 |
\(T=T_{\mathrm{issue}}+T_{\mathrm{atomic\,serialize}}+T_{\mathrm{memory\,response}}+S_{\mathrm{queue}}\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/—/由原子序列化和目标响应决定 |
| 退休 |
原子操作完成通知返回 |
| 动态停顿 |
atomic serialization、STB、cache/BIU、跨核竞争 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 58 — ST_ATOMIC(ST_ATOMIC_XN_IMM)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-LDST-I |
| 参数角色 |
data=加载目标/存储源;base=基址;offset=有符号立即数 |
| 作用 |
原子存储,控制量来自立即数。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
0001011.........................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:25]=0001011(fixed); [24]=atomic_mode; [23:22]=dtype; [21:17]=data; [16:12]=base; [11:0]=offset
- 解码条件:
(word & 0xfe000000) == 0x16000000。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
b16 |
Xn, [Xn], #imm, #imm |
ST_ATOMIC.b16 X0, [X1], #0, #0 |
0x16401000 |
dav-c220-cube, dav-c220-vec |
b32 |
Xn, [Xn], #imm, #imm |
ST_ATOMIC.b32 X0, [X1], #0, #0 |
0x16801000 |
dav-c220-cube, dav-c220-vec |
b64 |
Xn, [Xn], #imm, #imm |
ST_ATOMIC.b64 X0, [X1], #0, #0 |
0x16c01000 |
dav-c220-cube, dav-c220-vec |
b8 |
Xn, [Xn], #imm, #imm |
ST_ATOMIC.b8 X0, [X1], #0, #0 |
0x16001000 |
汇编器级最小示例:
.text
.a64
ST_ATOMIC.b16 X0, [X1], #0, #0
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
offset |
-2048..2047 |
12 位;符号扩展 |
scale=1;alignment=1 |
有符号字节偏移 |
atomic_mode |
0..1 |
1 位;零扩展/枚举 |
scale=1;alignment=1 |
原子存储控制模式 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar LSU atomic→D-cache/BIU 原子完成→退休 |
| 延迟/公式 |
\(T=T_{\mathrm{issue}}+T_{\mathrm{atomic\,serialize}}+T_{\mathrm{memory\,response}}+S_{\mathrm{queue}}\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/—/由原子序列化和目标响应决定 |
| 退休 |
原子操作完成通知返回 |
| 动态停顿 |
atomic serialization、STB、cache/BIU、跨核竞争 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 59 — ST_DEV(ST_DEV_XD_XN_IMM12)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-LDST-I |
| 参数角色 |
data=加载目标/存储源;base=基址;offset=有符号立即数 |
| 作用 |
向设备地址空间存储。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
0001100.........................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:25]=0001100(fixed); [24:22]=dtype; [21:17]=data; [16:12]=base; [11:0]=offset
- 解码条件:
(word & 0xfe000000) == 0x18000000。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
b16 |
Xn, [Xn], #imm |
ST_DEV.b16 X0, [X1], #0 |
0x18401000 |
dav-c220-cube, dav-c220-vec |
b32 |
Xn, [Xn], #imm |
ST_DEV.b32 X0, [X1], #0 |
0x18801000 |
dav-c220-cube, dav-c220-vec |
b64 |
Xn, [Xn], #imm |
ST_DEV.b64 X0, [X1], #0 |
0x18c01000 |
dav-c220-cube, dav-c220-vec |
b8 |
Xn, [Xn], #imm |
ST_DEV.b8 X0, [X1], #0 |
0x18001000 |
汇编器级最小示例:
.text
.a64
ST_DEV.b16 X0, [X1], #0
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
offset |
-2048..2047 |
12 位;符号扩展 |
scale=1;alignment=1 |
字面字段值 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar LSU/AGU→STB/DSTB→UB 或 D-cache/BIU→store retire |
| 延迟/公式 |
\(T=T_{\mathrm{issue}}+T_{\mathrm{AGU}}+T_{\mathrm{STB\,accept}}+T_{\mathrm{visibility\,model}}+S_{\mathrm{queue}}\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/—/由 STB/DSTB、D-cache/UB/BIU 接受和完成条件决定 |
| 退休 |
store 达到 STB/目标接口的模型退休点;全局可见性需另由同步保证 |
| 动态停顿 |
STB/DSTB 满、地址相关、cache line 状态、BIU outstanding、UB bank |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 60 — LD_DEV(LD_DEV_XD_XN_IMM12)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-LDST-I |
| 参数角色 |
data=加载目标/存储源;base=基址;offset=有符号立即数 |
| 作用 |
从设备地址空间加载。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
0001101.........................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:25]=0001101(fixed); [24:22]=dtype; [21:17]=data; [16:12]=base; [11:0]=offset
- 解码条件:
(word & 0xfe000000) == 0x1a000000。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
| 1 |
X1 |
0x0001f000 |
12,13,14,15,16 |
r0->word[12]; r1->word[13]; r2->word[14]; r3->word[15]; r4->word[16] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
b16 |
Xn, [Xn], #imm |
LD_DEV.b16 X0, [X1], #0 |
0x1a401000 |
dav-c220-cube, dav-c220-vec |
b32 |
Xn, [Xn], #imm |
LD_DEV.b32 X0, [X1], #0 |
0x1a801000 |
dav-c220-cube, dav-c220-vec |
b64 |
Xn, [Xn], #imm |
LD_DEV.b64 X0, [X1], #0 |
0x1ac01000 |
dav-c220-cube, dav-c220-vec |
b8 |
Xn, [Xn], #imm |
LD_DEV.b8 X0, [X1], #0 |
0x1a001000 |
汇编器级最小示例:
.text
.a64
LD_DEV.b16 X0, [X1], #0
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
offset |
-2048..2047 |
12 位;符号扩展 |
scale=1;alignment=1 |
字面字段值 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar LSU/AGU→UB 或 D-cache→BIU(需要时)→load retire |
| 延迟/公式 |
\(T=T_{\mathrm{issue}}+T_{\mathrm{AGU}}+T_{\mathrm{hit/refill}}+T_{\mathrm{response}}+S_{\mathrm{queue}}\) 不能用登记 latency=1 代替 |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:由 UB/D-cache hit、MSHR/refill/BIU 响应决定/—/— |
| 退休 |
LSU/D-cache 返回,或预取请求达到模型定义的完成点 |
| 动态停顿 |
RAW/WAW、LD queue、STB forwarding、D-cache miss/MSHR、BIU outstanding、UB bank |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 61 — MOVX8(MOVX8_XD_IMM)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-RI |
| 参数角色 |
Xd=目标;imm=立即数;部分形式另带 halfword 位置 |
| 作用 |
构造/移动扩展的 8 位立即数字段。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
00010000........................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00010000(fixed); [23:22]=segment/position; [21:17]=Xd; [16]=immediate/control; [15:0]=immediate
- 解码条件:
(word & 0xff000000) == 0x10000000。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x003e0000 |
17,18,19,20,21 |
r0->word[17]; r1->word[18]; r2->word[19]; r3->word[20]; r4->word[21] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
Xn, #imm |
MOVX8 X0, #0 |
0x10000000 |
汇编器级最小示例:
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
immediate |
0..65535 |
16 位;零扩展/枚举 |
scale=1;alignment=1 |
字面字段值 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 62 — MOV(MOV_SPR_IMM)
| 项目 |
内容 |
| 指令域/执行位置 |
scalar / Scalar(pipe 0) |
| 格式类 |
S-SPR |
| 参数角色 |
X register=通用寄存器;SPR=命名状态;方向由操作数顺序决定 |
| 作用 |
把立即数写入特殊寄存器。 |
| 文本语法状态 |
仅机器格式;无 c220 公共语法 |
32 位编码布局
- 位 31→0 模式:
00010010........................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:24]=00010010(fixed); [23:22]=direction; [21:17]=X register; [16:7]=SPR index; [6:0]=control
- 解码条件:
(word & 0xff000000) == 0x12000000。
公共文本形式
当前 c220 后端没有接受该目录项的完整文本形式。OP、<dtype>、<mode> 等占位符不是汇编语法;目录样例字只用于机器格式识别,不能作为可运行内核。
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU I1→Scalar EX→固定延迟退休表→寄存器/SPR 写回 |
| 延迟/公式 |
\(L=1\) |
| 发射间隔 |
无 hazard 且 I1 slot 可用时 1;多周期/FPU/访存相关由 scoreboard 限流 |
| uop 展开 |
1 个 Scalar 操作;LD4/ST4/LDP/STP 可在 LSU 内产生多个存储请求:—/1/— |
| 退休 |
固定延迟槽到期且写回条件满足 |
| 动态停顿 |
源 RAW、目标 WAW、SPR hazard、I1 slot/多周期冲突 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。