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 是一个寄存器;如果用来作 ...
至于另一个 FPU控制 寄存器 fcsr,只是一些异常标志和舍入模式,暂未放进栈里 Stack Init 把浮点寄存器初始值均设为0 rt_uint8_t*rt_hw_stack_init(void*tentry, void*parameter, rt_uint8_t*stack_addr, void*texit) { struct rt_hw_stack_frame *frame; rt_uint8_t*stk; int i; stk = stack_ad...
另外C930 在 AI 方面支持也不错,支持Vector 1.0扩展,能处理256位向量寄存器,支持各种数据类型,包括FP16/BF16/FP32/FP64/INT8/INT16/INT32/INT64,还挺全乎。 支持Matrix 指令扩展,能达到 8 TOPS,这个指标看还是偏低的,还达不到 Windows AI PC 的阈值。 支持这些 AI 相关的扩展,也说明C930有一定能力跑 AI...
x8-x9,x18-x27寄存器:别名s0-s11,其中s0可用作栈帧指针(FP) x10-x17寄存器:别名a0-a7,在函数调用中传递参数和返回值 系统寄存器 用于系统控制和状态的寄存器,对处理器进行不同的功能配置。其指令编码的Bit[31:20]为csr字段,其中,[11:10]表示读写属性,[9:8]表示允许访问该系统寄存器的处理器模式,[7:0]用...
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...
当RLEN设定为512bit且操作数类型为FP32时,单个寄存器便能轻松存储16x16规模的矩阵数据。在硬件实现过程中,可以根据实际需求和资源情况灵活选择RLEN的大小,并通过指令执行吞吐量的优化,来达到不同的算力需求。此外,MME还提供了专门的矩阵配置指令,使得软件能够灵活地设定实际参与运算的矩阵规模,从而有效地支持Tail...
出于芯片兼容性的考虑,OpenPPL RISC-V 在 fp16 精度的推理中并没有使用该自定义的半精度浮点扩展(也没有显式地使用浮点寄存器),而是用 rvv 中的指令进行代替。 在全志 D1 上运行 OpenPPL 首先需要在 occ.t-head.cn 中下载所需的编译工具链并解压,可以选择 riscv64-linux-x86_64-20210512.tar.gz。 △ ...
RISC-V架构的整数通用寄存器组,包含32个(I架构)或者16个(E架构)通用整数寄存器,其中整数寄存器0被预留为常数0,其他的31个(I架构)或者15个(E架构)为普通的通用整数寄存器。 如果使用了浮点模块(F或者D),则需要另外一个独立的浮点寄存器组,包含32个通用浮点寄存器。如果仅使用F模块的浮点指令子集,则每个通用浮点寄...