Flow 与同步指令
每个条目给出完整 32 位固定/可变布局、c220 后端实际接受的文本形式、立即数约束和架构周期模型。
没有“c220 汇编器接受”标记的条目不能把目录占位符直接复制进源码。
目录速览
| ID |
解码名 |
助记符 |
格式 |
作用 |
状态 |
| 63 |
JUMP |
JUMP |
F-PC |
PC 相对无条件跳转。 |
c220 汇编器接受 |
| 64 |
JUMPC |
JUMPC |
F-PC |
根据隐式条件状态执行 PC 相对跳转。 |
c220 汇编器接受 |
| 65 |
JUMPR |
JUMPR |
F-REG |
跳转到标量寄存器给出的地址。 |
c220 汇编器接受 |
| 66 |
PRELOAD |
PRELOAD |
F-SPECIAL |
控制流/指令预取提示。 |
c220 汇编器接受 |
| 67 |
DCCI |
DCCI |
F-SPECIAL |
数据缓存维护/失效操作。 |
c220 汇编器接受 |
| 68 |
CALL |
CALL |
F-PC |
PC 相对调用并设置链接寄存器。 |
c220 汇编器接受 |
| 69 |
CALLR |
CALLR |
F-REG |
寄存器间接调用并设置链接寄存器。 |
c220 汇编器接受 |
| 70 |
BAR_SET |
BAR_SET |
F-SYNC |
设置屏障状态。 |
仅机器格式;无 c220 公共语法 |
| 71 |
BAR_WAIT |
BAR_WAIT |
F-SYNC |
等待屏障状态。 |
仅机器格式;无 c220 公共语法 |
| 72 |
RET |
RET |
F-NONE |
从 X31/链接寄存器返回。 |
c220 汇编器接受 |
| 73 |
TRAP |
TRAP |
F-SPECIAL |
触发陷阱。 |
c220 汇编器接受 |
| 74 |
LOOP |
LOOP |
F-LOOP |
建立硬件循环。 |
c220 汇编器接受 |
| 75 |
SET_FLAG |
SET_FLAG |
F-SYNC |
向另一执行流水线发布事件标志。 |
c220 汇编器接受 |
| 76 |
WAIT_FLAG |
WAIT_FLAG |
F-SYNC |
等待另一执行流水线的事件标志。 |
c220 汇编器接受 |
| 77 |
BAR |
BAR |
F-SYNC |
屏障编码类;具体后缀、参与范围和可见性域需按目标生成序列确认。 |
c220 汇编器接受 |
| 78 |
NOP_PIPE |
NOP_PIPE |
F-SPECIAL |
指定流水线的空操作。 |
仅机器格式;无 c220 公共语法 |
| 79 |
ENDLOOP |
ENDLOOP |
F-NONE |
结束硬件循环体。 |
c220 汇编器接受 |
| 80 |
NOP |
NOP |
F-NONE |
空操作。 |
c220 汇编器接受 |
| 81 |
END |
END |
F-NONE |
结束当前 AI Core 内核。 |
c220 汇编器接受 |
| 82 |
BREAK |
BREAK |
F-NONE |
按当前执行上下文中断循环或内核控制流程。 |
c220 汇编器接受 |
| 83 |
ADRP |
ADRP |
F-SPECIAL |
构造 PC 相对页地址。 |
c220 汇编器接受 |
| 84 |
DSB |
DSB |
F-SPECIAL |
数据同步屏障。 |
c220 汇编器接受 |
| 85 |
HSET_FLAG |
HSET_FLAG |
F-SYNC |
层次化/硬件事件置位。 |
仅机器格式;无 c220 公共语法 |
| 86 |
HWAIT_FLAG |
HWAIT_FLAG |
F-SYNC |
层次化/硬件事件等待。 |
仅机器格式;无 c220 公共语法 |
| 87 |
JUMPCMP |
JUMPCMP |
F-CMP |
比较标量操作数并条件跳转。 |
c220 汇编器接受 |
| 89 |
WAIT_FLAG_DEV |
WAIT_FLAG_DEV |
F-SYNC |
等待设备侧事件标志。 |
仅机器格式;无 c220 公共语法 |
| 90 |
WAIT_FLAG_DEVI |
WAIT_FLAG_DEV |
F-SYNC |
使用立即数形式等待设备侧事件标志。 |
c220 汇编器接受 |
| 91 |
SET_CROSS_CORE |
SET_CROSS_CORE |
F-SYNC |
设置跨核同步事件。 |
仅机器格式;无 c220 公共语法 |
逐指令说明
ID 63 — JUMP
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-PC |
| 参数角色 |
target=PC 相对目标;机器位移按指令字计数 |
| 作用 |
PC 相对无条件跳转。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
010....0000.....................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:21]=0000(fixed); [20:16]=PC-relative target; [15:0]=pc_displacement
- 解码条件:
(word & 0xe1e00000) == 0x40000000。
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
#imm |
JUMP #0 |
0x40000000 |
汇编器级最小示例:
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
pc_displacement |
-32768..32767 |
16 位;符号扩展 |
scale=4;alignment=4 |
有符号指令字位移;标签字节位移除以 4 后重定位 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU 控制执行→IFU 目标更新 |
| 延迟/公式 |
\(T=1+R_{\mathrm{redirect}}\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
目标/链接状态更新后 |
| 动态停顿 |
前端重定向、取指队列刷新 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 64 — JUMPC
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-PC |
| 参数角色 |
target=PC 相对目标;机器位移按指令字计数 |
| 作用 |
根据隐式条件状态执行 PC 相对跳转。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
010....0001000..................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:18]=0001000(fixed); [17:16]=PC-relative target; [15:0]=pc_displacement
- 解码条件:
(word & 0xe1fc0000) == 0x40200000。
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
#imm |
JUMPC #0 |
0x40200000 |
汇编器级最小示例:
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
pc_displacement |
-32768..32767 |
16 位;符号扩展 |
scale=4;alignment=4 |
有符号指令字位移;标签字节位移除以 4 后重定位 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU 比较/条件→IFU 预测校正 |
| 延迟/公式 |
\(T=1+R_{\mathrm{mispredict}}\) 预测正确时 R=0 |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
条件解析并完成必要校正后 |
| 动态停顿 |
寄存器相关、预测错误、I-cache |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 65 — JUMPR
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-REG |
| 参数角色 |
Xn=间接跳转/调用目标 |
| 作用 |
跳转到标量寄存器给出的地址。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
010....0001001..................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:18]=0001001(fixed); [17]=subop/control; [16:12]=target register; [11:0]=control
- 解码条件:
(word & 0xe1fc0000) == 0x40240000。
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 |
JUMPR X0 |
0x40240000 |
汇编器级最小示例:
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
Scalar 读寄存器→CCU→IFU 目标更新 |
| 延迟/公式 |
\(T=1+R_{\mathrm{redirect}}\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
间接目标和链接状态更新后 |
| 动态停顿 |
源寄存器 RAW、前端重定向 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 66 — PRELOAD
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-SPECIAL |
| 参数角色 |
Xn=预取地址;Xm=预取描述/控制 |
| 作用 |
控制流/指令预取提示。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
010....0001010..................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:18]=0001010(fixed); [17]=preload control; [16:12]=address; [11:7]=descriptor; [6:0]=control
- 解码条件:
(word & 0xe1fc0000) == 0x40280000。
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 |
PRELOAD X0, X1 |
0x40280080 |
汇编器级最小示例:
.text
.a64
PRELOAD X0, X1
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU→IFU preload/取指提示 |
| 延迟/公式 |
\(T_{\mathrm{issue}}=1\) 预取效果异步 |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
提示被接受后 |
| 动态停顿 |
前端队列、I-cache/BIU |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 67 — DCCI
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-SPECIAL |
| 参数角色 |
Xn=缓存地址;mode=缓存维护模式 |
| 作用 |
数据缓存维护/失效操作。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
010....0001011..................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:18]=0001011(fixed); [17]=mode; [16:12]=address; [11:0]=control
- 解码条件:
(word & 0xe1fc0000) == 0x402c0000。
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 |
DCCI X0, #0 |
0x402c0000 |
汇编器级最小示例:
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
mode |
0..1 |
1 位;零扩展/枚举 |
scale=1;alignment=1 |
缓存维护操作模式 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU→Scalar LSU→D-cache/STB/BIU |
| 延迟/公式 |
\(T=1+W_{\mathrm{dcache\,clean/invalidate}}\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
指定维护动作完成后 |
| 动态停顿 |
dirty line、STB、miss/refill、BIU |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 68 — CALL
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-PC |
| 参数角色 |
target=PC 相对目标;机器位移按指令字计数 |
| 作用 |
PC 相对调用并设置链接寄存器。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
010....0010000..................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:18]=0010000(fixed); [17:16]=PC-relative target; [15:0]=pc_displacement
- 解码条件:
(word & 0xe1fc0000) == 0x40400000。
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
#imm |
CALL #0 |
0x40400000 |
汇编器级最小示例:
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
pc_displacement |
-32768..32767 |
16 位;符号扩展 |
scale=4;alignment=4 |
有符号指令字位移;标签字节位移除以 4 后重定位 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU 控制执行→IFU 目标更新 |
| 延迟/公式 |
\(T=1+R_{\mathrm{redirect}}\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
目标/链接状态更新后 |
| 动态停顿 |
前端重定向、取指队列刷新 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 69 — CALLR
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-REG |
| 参数角色 |
Xn=间接跳转/调用目标 |
| 作用 |
寄存器间接调用并设置链接寄存器。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
010....0010001..................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:18]=0010001(fixed); [17]=subop/control; [16:12]=target register; [11:0]=control
- 解码条件:
(word & 0xe1fc0000) == 0x40440000。
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 |
CALLR X0 |
0x40440000 |
汇编器级最小示例:
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
Scalar 读寄存器→CCU→IFU 目标更新 |
| 延迟/公式 |
\(T=1+R_{\mathrm{redirect}}\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
间接目标和链接状态更新后 |
| 动态停顿 |
源寄存器 RAW、前端重定向 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 70 — BAR_SET
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-SYNC |
| 参数角色 |
src/dst=执行域;event=事件槽;屏障形式可无 event |
| 作用 |
设置屏障状态。 |
| 文本语法状态 |
仅机器格式;无 c220 公共语法 |
32 位编码布局
- 位 31→0 模式:
010....0010011..................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:18]=0010011(fixed); [17:16]=src/dst pipe; [15:0]=event/control
- 解码条件:
(word & 0xe1fc0000) == 0x404c0000。
公共文本形式
当前 c220 后端没有接受该目录项的完整文本形式。OP、<dtype>、<mode> 等占位符不是汇编语法;目录样例字只用于机器格式识别,不能作为可运行内核。
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
解码→Flow issue(无匹配处理器) |
| 延迟/公式 |
\(\mathrm{N/A}\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
不能作为有效 架构模型 时序指令使用 |
| 动态停顿 |
发射失败/错误路径 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 71 — BAR_WAIT
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-SYNC |
| 参数角色 |
src/dst=执行域;event=事件槽;屏障形式可无 event |
| 作用 |
等待屏障状态。 |
| 文本语法状态 |
仅机器格式;无 c220 公共语法 |
32 位编码布局
- 位 31→0 模式:
010....0010100..................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:18]=0010100(fixed); [17:16]=src/dst pipe; [15:0]=event/control
- 解码条件:
(word & 0xe1fc0000) == 0x40500000。
公共文本形式
当前 c220 后端没有接受该目录项的完整文本形式。OP、<dtype>、<mode> 等占位符不是汇编语法;目录样例字只用于机器格式识别,不能作为可运行内核。
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
解码→Flow issue(无匹配处理器) |
| 延迟/公式 |
\(\mathrm{N/A}\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
不能作为有效 架构模型 时序指令使用 |
| 动态停顿 |
发射失败/错误路径 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 72 — RET
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-NONE |
| 参数角色 |
无显式操作数;读写 PC、链接或内核控制状态 |
| 作用 |
从 X31/链接寄存器返回。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
010....0011....11111............(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:21]=0011(fixed); [20:17]=implicit/control; [16:12]=11111(fixed); [11:0]=implicit/control
- 解码条件:
(word & 0xe1e1f000) == 0x4061f000。
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
(无显式操作数) |
RET |
0x4061f000 |
汇编器级最小示例:
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
Scalar 读寄存器→CCU→IFU 目标更新 |
| 延迟/公式 |
\(T=1+R_{\mathrm{redirect}}\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
间接目标和链接状态更新后 |
| 动态停顿 |
源寄存器 RAW、前端重定向 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 73 — TRAP
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-SPECIAL |
| 参数角色 |
无显式操作数;触发陷阱 |
| 作用 |
触发陷阱。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
010....0011....11110............(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:21]=0011(fixed); [20:17]=instruction-specific payload; [16:12]=11110(fixed); [11:0]=instruction-specific payload
- 解码条件:
(word & 0xe1e1f000) == 0x4061e000。
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
(无显式操作数) |
TRAP |
0x4061e000 |
汇编器级最小示例:
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU Flow 控制路径 |
| 延迟/公式 |
\(T=1\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
本拍控制动作完成后 |
| 动态停顿 |
仅受 Flow 发射口占用 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 74 — LOOP
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-LOOP |
| 参数角色 |
target=循环边界/位移;循环计数为隐式状态 |
| 作用 |
建立硬件循环。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
010....0100.....................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:21]=0100(fixed); [20:8]=PC-relative boundary; [7:0]=pc_displacement
- 解码条件:
(word & 0xe1e00000) == 0x40800000。
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
#imm |
LOOP #0 |
0x40800000 |
汇编器级最小示例:
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
pc_displacement |
0..255 |
8 位;零扩展/枚举 |
scale=4;alignment=4 |
无符号指令字位移;标签按 4 字节对齐 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU→IFU loop buffer/循环状态 |
| 延迟/公式 |
\(T=1+W_{\mathrm{loopbuf}}\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
循环状态更新后 |
| 动态停顿 |
loop buffer 可用性、前端重定向 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 75 — SET_FLAG
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Scalar(pipe 0) |
| 格式类 |
F-SYNC |
| 参数角色 |
src/dst=执行域;event=事件槽;屏障形式可无 event |
| 作用 |
向另一执行流水线发布事件标志。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
010....0101.....................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:21]=0101(fixed); [20:19]=src/dst pipe; [18]=event; [17:16]=src/dst pipe; [15:2]=event/control; [1:0]=event
- 解码条件:
(word & 0xe1e00000) == 0x40a00000。
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
S.V |
#imm |
SET_FLAG.S.V #2 |
0x40a00082 |
汇编器级最小示例:
.text
.a64
SET_FLAG.S.V #2
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
event |
0..7 |
3 位;零扩展/枚举 |
scale=1;alignment=1 |
字面字段值 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU→事件表→目标 pipe token |
| 延迟/公式 |
\(T=1+W_{\mathrm{event\,table}}\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
token 成功写入后 |
| 动态停顿 |
事件表 almost-full、目标事件槽 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 76 — WAIT_FLAG
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Scalar(pipe 0) |
| 格式类 |
F-SYNC |
| 参数角色 |
src/dst=执行域;event=事件槽;屏障形式可无 event |
| 作用 |
等待另一执行流水线的事件标志。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
010....0110.....................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:21]=0110(fixed); [20:19]=src/dst pipe; [18]=event; [17:16]=src/dst pipe; [15:2]=event/control; [1:0]=event
- 解码条件:
(word & 0xe1e00000) == 0x40c00000。
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
S.V |
#imm |
WAIT_FLAG.S.V #2 |
0x40c00082 |
汇编器级最小示例:
.text
.a64
WAIT_FLAG.S.V #2
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
event |
0..7 |
3 位;零扩展/枚举 |
scale=1;alignment=1 |
字面字段值 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU→事件表匹配→消费 token |
| 延迟/公式 |
\(T=1+W_{\mathrm{matching\,token}}\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
匹配 token 被消费后 |
| 动态停顿 |
源 pipe 尚未完成、事件 ID/内存 ID 不匹配 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 77 — BAR
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Scalar(pipe 0) |
| 格式类 |
F-SYNC |
| 参数角色 |
src/dst=执行域;event=事件槽;屏障形式可无 event |
| 作用 |
屏障编码类;具体后缀、参与范围和可见性域需按目标生成序列确认。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
010....0111.....................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:21]=0111(fixed); [20:16]=src/dst pipe; [15:0]=event/control
- 解码条件:
(word & 0xe1e00000) == 0x40e00000。
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
S |
(无显式操作数) |
BAR.S |
0x40e00000 |
dav-c220-cube, dav-c220-vec |
V |
(无显式操作数) |
BAR.V |
0x40e00400 |
汇编器级最小示例:
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU→所选 pipe barrier 表 |
| 延迟/公式 |
\(T=1+W_{\mathrm{selected\,pipe\,retire}}\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
关联 connect-id 之前的工作退休后 |
| 动态停顿 |
目标 issue queue、未退休 uop;Scalar BAR.S 在本模型按 NOP |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 78 — NOP_PIPE
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Scalar(pipe 0) |
| 格式类 |
F-SPECIAL |
| 参数角色 |
指令专用控制、缓存或地址参数 |
| 作用 |
指定流水线的空操作。 |
| 文本语法状态 |
仅机器格式;无 c220 公共语法 |
32 位编码布局
- 位 31→0 模式:
010....1000.....................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:21]=1000(fixed); [20:0]=instruction-specific payload
- 解码条件:
(word & 0xe1e00000) == 0x41000000。
公共文本形式
当前 c220 后端没有接受该目录项的完整文本形式。OP、<dtype>、<mode> 等占位符不是汇编语法;目录样例字只用于机器格式识别,不能作为可运行内核。
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU→pipe 等待分派路径 |
| 延迟/公式 |
\(T=1+W_{\mathrm{selected\,pipe}}\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
所选 pipe 条件满足后 |
| 动态停顿 |
目标 pipe busy/事件条件 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 79 — ENDLOOP
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-NONE |
| 参数角色 |
无显式操作数;读写 PC、链接或内核控制状态 |
| 作用 |
结束硬件循环体。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
010....1001.....................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:21]=1001(fixed); [20:0]=implicit/control
- 解码条件:
(word & 0xe1e00000) == 0x41200000。
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
(无显式操作数) |
ENDLOOP |
0x41200000 |
汇编器级最小示例:
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU→IFU loop buffer/循环状态 |
| 延迟/公式 |
\(T=1+W_{\mathrm{loopbuf}}\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
循环状态更新后 |
| 动态停顿 |
loop buffer 可用性、前端重定向 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 80 — NOP
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-NONE |
| 参数角色 |
无显式操作数;读写 PC、链接或内核控制状态 |
| 作用 |
空操作。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
010....1010.....................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:21]=1010(fixed); [20:0]=implicit/control
- 解码条件:
(word & 0xe1e00000) == 0x41400000。
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
(无显式操作数) |
NOP |
0x41400000 |
汇编器级最小示例:
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU Flow NOP |
| 延迟/公式 |
\(T=1\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
当拍完成 |
| 动态停顿 |
仅受 Flow 发射口占用 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 81 — END
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-NONE |
| 参数角色 |
无显式操作数;读写 PC、链接或内核控制状态 |
| 作用 |
结束当前 AI Core 内核。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
010....1011.....................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:21]=1011(fixed); [20:0]=implicit/control
- 解码条件:
(word & 0xe1e00000) == 0x41600000。
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
(无显式操作数) |
END |
0x41600000 |
汇编器级最小示例:
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU END→全单元完成检查 |
| 延迟/公式 |
\(T=1+W_{\mathrm{early\,end/drain}}\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
要求的队列和执行单元排空后 |
| 动态停顿 |
Vector/Cube/MTE/Fixpipe/存储未完成 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 82 — BREAK
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-NONE |
| 参数角色 |
无显式操作数;读写 PC、链接或内核控制状态 |
| 作用 |
按当前执行上下文中断循环或内核控制流程。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
010....1100.....................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:21]=1100(fixed); [20:0]=implicit/control
- 解码条件:
(word & 0xe1e00000) == 0x41800000。
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
(无显式操作数) |
BREAK |
0x41800000 |
汇编器级最小示例:
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU Flow 控制路径 |
| 延迟/公式 |
\(T=1\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
本拍控制动作完成后 |
| 动态停顿 |
仅受 Flow 发射口占用 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 83 — ADRP
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-SPECIAL |
| 参数角色 |
Xd=目标页地址;page_displacement=PC 相对页位移 |
| 作用 |
构造 PC 相对页地址。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
010....1101.....................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:21]=1101(fixed); [20:16]=Xd; [15:0]=page_displacement
- 解码条件:
(word & 0xe1e00000) == 0x41a00000。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x001f0000 |
16,17,18,19,20 |
r0->word[16]; r1->word[17]; r2->word[18]; r3->word[19]; r4->word[20] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
Xn, #imm |
ADRP X0, #0 |
0x41a00000 |
汇编器级最小示例:
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
page_displacement |
-32768..32767 |
16 位;符号扩展 |
scale=4096;alignment=4096 |
PC 低 12 位清零后加有符号页位移 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU PC 相对地址生成→Scalar 写回 |
| 延迟/公式 |
\(T=1\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
地址结果写回后 |
| 动态停顿 |
目标寄存器 WAW |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 84 — DSB
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-SPECIAL |
| 参数角色 |
指令专用控制、缓存或地址参数 |
| 作用 |
数据同步屏障。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
010....1110.....................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:21]=1110(fixed); [20:18]=instruction-specific payload; [17:16]=mode; [15:0]=instruction-specific payload
- 解码条件:
(word & 0xe1e00000) == 0x41c00000。
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
#imm |
DSB #0 |
0x41c00000 |
汇编器级最小示例:
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
mode |
0..3 |
2 位;零扩展/枚举 |
scale=1;alignment=1 |
字面字段值 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU Flow 控制路径 |
| 延迟/公式 |
\(T=1\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
本拍控制动作完成后 |
| 动态停顿 |
仅受 Flow 发射口占用 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 85 — HSET_FLAG
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Scalar(pipe 0) |
| 格式类 |
F-SYNC |
| 参数角色 |
src/dst=执行域;event=事件槽;屏障形式可无 event |
| 作用 |
层次化/硬件事件置位。 |
| 文本语法状态 |
仅机器格式;无 c220 公共语法 |
32 位编码布局
- 位 31→0 模式:
010....1111...............0.....(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:21]=1111(fixed); [20:16]=src/dst pipe; [15:6]=event/control; [5]=0(fixed); [4:0]=event/control
- 解码条件:
(word & 0xe1e00020) == 0x41e00000。
公共文本形式
当前 c220 后端没有接受该目录项的完整文本形式。OP、<dtype>、<mode> 等占位符不是汇编语法;目录样例字只用于机器格式识别,不能作为可运行内核。
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU→事件表→目标 pipe token |
| 延迟/公式 |
\(T=1+W_{\mathrm{event\,table}}\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
token 成功写入后 |
| 动态停顿 |
事件表 almost-full、目标事件槽 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 86 — HWAIT_FLAG
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Scalar(pipe 0) |
| 格式类 |
F-SYNC |
| 参数角色 |
src/dst=执行域;event=事件槽;屏障形式可无 event |
| 作用 |
层次化/硬件事件等待。 |
| 文本语法状态 |
仅机器格式;无 c220 公共语法 |
32 位编码布局
- 位 31→0 模式:
010....1111...............1.....(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:21]=1111(fixed); [20:16]=src/dst pipe; [15:6]=event/control; [5]=1(fixed); [4:0]=event/control
- 解码条件:
(word & 0xe1e00020) == 0x41e00020。
公共文本形式
当前 c220 后端没有接受该目录项的完整文本形式。OP、<dtype>、<mode> 等占位符不是汇编语法;目录样例字只用于机器格式识别,不能作为可运行内核。
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU→事件表匹配→消费 token |
| 延迟/公式 |
\(T=1+W_{\mathrm{matching\,token}}\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
匹配 token 被消费后 |
| 动态停顿 |
源 pipe 尚未完成、事件 ID/内存 ID 不匹配 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 87 — JUMPCMP
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-CMP |
| 参数角色 |
Xn/Xm=比较源;cond/dtype=比较条件与数据类型;target=PC 相对目标 |
| 作用 |
比较标量操作数并条件跳转。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
01001...........................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:27]=01001(fixed); [26:25]=flow class; [24:21]=Xm; [20:16]=compare control; [15]=Xm; [14:10]=compare control; [9:5]=Xn; [4:0]=pc_displacement
- 解码条件:
(word & 0xf8000000) == 0x48000000。
X 寄存器操作数位域
下表通过逐个改变该 X 操作数的 5 个编号位得到;word bits 是机器字中的精确承载位。
| 操作数序号 |
样例 token |
编码掩码 |
word bits |
输入位→机器位 |
| 0 |
X0 |
0x000003e0 |
5,6,7,8,9 |
r0->word[5]; r1->word[6]; r2->word[7]; r3->word[8]; r4->word[9] |
| 1 |
X1 |
0x01e08000 |
15,21,22,23,24 |
r0->word[15]; r1->word[21]; r2->word[22]; r3->word[23]; r4->word[24] |
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
EQ.s64 |
Xn, Xn, #imm |
JUMPCMP.EQ.s64 X0, X1, #0 |
0x48028000 |
汇编器级最小示例:
.text
.a64
JUMPCMP.EQ.s64 X0, X1, #0
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
pc_displacement |
-16..15 |
5 位;符号扩展 |
scale=4;alignment=4 |
公共字面量形式中的有符号指令字位移 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU 比较/条件→IFU 预测校正 |
| 延迟/公式 |
\(T=1+R_{\mathrm{mispredict}}\) 预测正确时 R=0 |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
条件解析并完成必要校正后 |
| 动态停顿 |
寄存器相关、预测错误、I-cache |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 89 — WAIT_FLAG_DEV
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-SYNC |
| 参数角色 |
src/dst=执行域;event=事件槽;屏障形式可无 event |
| 作用 |
等待设备侧事件标志。 |
| 文本语法状态 |
仅机器格式;无 c220 公共语法 |
32 位编码布局
- 位 31→0 模式:
010....1111001..................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:18]=1111001(fixed); [17:16]=src/dst pipe; [15:0]=event/control
- 解码条件:
(word & 0xe1fc0000) == 0x41e40000。
公共文本形式
当前 c220 后端没有接受该目录项的完整文本形式。OP、<dtype>、<mode> 等占位符不是汇编语法;目录样例字只用于机器格式识别,不能作为可运行内核。
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU→设备 flag 接口 |
| 延迟/公式 |
\(T=1+W_{\mathrm{device\,flag}}\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
设备 flag 匹配后 |
| 动态停顿 |
设备侧事件到达时间 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 90 — WAIT_FLAG_DEV(WAIT_FLAG_DEVI)
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Flow(pipe 11) |
| 格式类 |
F-SYNC |
| 参数角色 |
event=设备侧事件槽编号 |
| 作用 |
使用立即数形式等待设备侧事件标志。 |
| 文本语法状态 |
c220 汇编器接受 |
32 位编码布局
- 位 31→0 模式:
010....1111011..................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:18]=1111011(fixed); [17:16]=src/dst pipe; [15:8]=event/control; [7:0]=event
- 解码条件:
(word & 0xe1fc0000) == 0x41ec0000。
c220 接受的后缀与操作数组合
| CPU |
后缀 |
操作数形状 |
可复制语法 |
编码 |
dav-c220-cube, dav-c220-vec |
(无后缀) |
#imm |
WAIT_FLAG_DEV #0 |
0x41ec0000 |
汇编器级最小示例:
.text
.a64
WAIT_FLAG_DEV #0
立即数规则
| 操作数 |
范围 |
位宽/扩展 |
缩放/对齐 |
解释 |
event |
0..255 |
8 位;零扩展/枚举 |
scale=1;alignment=1 |
字面字段值 |
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU→设备 flag 接口 |
| 延迟/公式 |
\(T=1+W_{\mathrm{device\,flag}}\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
设备 flag 匹配后 |
| 动态停顿 |
设备侧事件到达时间 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。
ID 91 — SET_CROSS_CORE
| 项目 |
内容 |
| 指令域/执行位置 |
flow / Scalar(pipe 0) |
| 格式类 |
F-SYNC |
| 参数角色 |
src/dst=执行域;event=事件槽;屏障形式可无 event |
| 作用 |
设置跨核同步事件。 |
| 文本语法状态 |
仅机器格式;无 c220 公共语法 |
32 位编码布局
- 位 31→0 模式:
010....111110...................(0/1 为固定值,. 为该解码项的可变位)。
- 完整分段:
[31:29]=010(fixed); [28:25]=flow class; [24:19]=111110(fixed); [18:16]=src/dst pipe; [15:0]=event/control
- 解码条件:
(word & 0xe1f80000) == 0x41f00000。
公共文本形式
当前 c220 后端没有接受该目录项的完整文本形式。OP、<dtype>、<mode> 等占位符不是汇编语法;目录样例字只用于机器格式识别,不能作为可运行内核。
周期与冲突
| 项目 |
架构周期模型 |
| 路径 |
CCU→事件表→目标 pipe token |
| 延迟/公式 |
\(T=1+W_{\mathrm{event\,table}}\) |
| 发射间隔 |
条件满足时可在一次 Flow 发射机会完成;等待/重定向会形成前端反压 |
| uop 展开 |
无数据 uop;事件/屏障类生成或消费一个控制 token:—/—/— |
| 退休 |
token 成功写入后 |
| 动态停顿 |
事件表 almost-full、目标事件槽 |
这些数值是架构周期模型,不是 910B 芯片的实测吞吐率。设备结果状态:待目标设备执行。
数值异常、掩码、描述字和访存副作用分别见数值语义、MASK/VA 与访存和配置字。