1.1 通用整数寄存器 RISC-V 架构提供32个通用寄存器x0-x31,其中x0 有些特殊,x0 寄存器被设置为硬件连线的常数0,读恒为0,写无效,这个寄存器在一些地方很有作用,因为程序运行中常数0的使用频率非常高,所以专门用一个寄存器来存放常数0,并没有浪费寄存器数量,并且使得编译器工作更加简便,这一点也是RISC-V架构优雅性的体现,比如后面讲到的伪指令
目录 收起 寄存器 通用寄存器 PC寄存器 RISC-V 汇编 汇编指令 寄存器 通用寄存器 32个通用寄存器,x0 ~ x31代表。 x0 是 零值寄存器:读出来的值永远为 0 ,写入的值将会被丢弃。 1个返回地址寄存器:x1/ra 4 个指标寄存器: x2/sp x3/gp x4/tp x8/fp/s0:说明 fp 和 s0 是一个寄存器;如果用来作 ...
另外C930 在 AI 方面支持也不错,支持Vector 1.0扩展,能处理256位向量寄存器,支持各种数据类型,包括FP16/BF16/FP32/FP64/INT8/INT16/INT32/INT64,还挺全乎。 支持Matrix 指令扩展,能达到 8 TOPS,这个指标看还是偏低的,还达不到 Windows AI PC 的阈值。 支持这些 AI 相关的扩展,也说明C930有一定能力跑 AI...
{w}表示截取rs1寄存器的低32位作为源操作数,在位移后进行符号扩展,再写入rd寄存器 算术左移与逻辑左移都会丢弃最高位,作用类似,因此,RV指令集中没有设置算术左移指令。 位操作指令 位操作指令的种类有:and、or、xor、not: and/andi:寄存器与寄存器/立即数按位与 or/ori:寄存器与寄存器/立即数按位或 xor/xor...
由于官方的例程切换时暂未对FPU部分上下文处理,所以一旦有多个牵涉到浮点寄存器操作的线程,就可能导致FPU上下文不一致。 .align 2 .global eclic_msip_handler eclic_msip_handler: addi sp, sp,-RT_CONTEXT_SIZE STORE x1,1* REGBYTES(sp)/* RA */ ...
接收3个64-bit浮点寄存器,输出一个64-bit浮点寄存器。每个64-bit(输入)寄存器可以pack 4个fp16,...
Instruction Buffer(指令缓存):IFU取出的指令会放在Instruction Buffer中,供后续的解码器来解码以及寄存器重命名,这个Buffer主要是匹配取指令速度和解码速度之间的不匹配。 2. 解码(Decode),寄存器重命名(Register Renaming),派发(Dispatch) 解码(Decode):解码宽度为6,可同时解码6个微操作(uOPs),还会有指令融合。
x8 s0 / fp Saved / frame pointer / 保存 / 帧指针 Callee x9 s1 Saved register / 保存寄存器 Callee x10-x11 a0-a1 Function arguments / return values / 函数参数 / 返回值 Caller x12-x17 a2-a7 Function arguments / 函数参数 Caller x18-x27 s2-s11 Saved registers / 保存寄存器 Callee x28-x31...
向量长度寄存器vl 向量类型寄存器vtype 其他的控制寄存器:vstart,vrm,vxsat Vector type register vtype 向量布局 向量各个字段 vsew[2:0]:用于编码向量的标准元素宽度(SEW) vlmul[1:0]:用于编码向量寄存器长度multiplier(LMUL=2vlmul=1-8), 当vlmul为2时,表示一条指令可以同时操作两个向量寄存器 ...