E203 CSR寄存器

    RiscV架构则定义了一些控制和状态寄存器(CSR),用于配置或记录一些运行的状态。CSR寄存器是处理器内核内部的寄存器,使用专有的12位地址编码空间,对一个hart,可以配置4k的CSR寄存器。

   蜂鸟203支持以下的CSR寄存器:

类型 CSR地址 读写属性 名称 全称
riscv标准csr 0x001 MRW fflags 浮点累积异常(Floating accrued Exception)
0x002 MRW frm 浮点动态舍入模式(floating-point dynamic rounding mode)
0x003 MRW fcsr 浮点控制和状态寄存器(floating-point control and status register)
0x300 MRW mstatus 机器模式状态寄存器(machine status register)
0x301 MRW misa 机器模式指令集架构寄存器(machine ISA register)
0x304 MRW mie 机器模式中断使能寄存器(machine interrupt enable register)
0x305 MRW mtvec 机器模式异常入口基地址寄存器(machine trap-vector base-address register)
0x340 MRW mscratch 机器模式擦写寄存器(machine srcatch register)
0x341 MRW mepc 机器模式异常pc寄存器(machine exception program counter)
0x342 MRW mcause 机器模式异常原因寄存器(machine cause register)
0x343 MRW mtval(mbadaddr) 机器模式异常值寄存器(machine trap value register)
0x344 MRW mip 机器模式中断等待寄存器(machine interrupt pending register)
0xb00 MRW mcycle 周期计数器的低32位(lower 32bits of cycle counter)
0xb80 MRW mcycleh 周期计数器的高32位(upper 32bits of cycle counter)
0xb02 MRW minstret 退休指令计数器的低32位(lower 32bits of instruction-retired counter)
0xb82 MRW minstreth 退休指令计数器的高32位(upper 32bits of instruction-retired counter)
0xf11 MRW mvendorid 机器模式供应商编号寄存器(machine vendor ID register),readonly, 供应商编号,如果为0,表示此寄存器未实现或不是一个商业核
0xf12 MRW marchid 机器模式架构编号寄存器(machine architecture ID register),readonly,微架构编号,如果为0,表示未实现该寄存器
0xf13 MRO mimpid 机器模式硬件实现编号寄存器(machine implementation ID register),readonly,硬件实现编号,如果为0,表示未实现该寄存器
0xf14 MRO mhartid hart编号寄存器(hart ID register),readonly,hart的编号。多hart系统中,起码有一个hart编号为0
N/A MRO mtime 机器模式计时器寄存器(machine-mode timer register)
N/A MRW mtimecmp 机器模式计数器比较寄存器(machine-mode timer compare register)
N/A MRW msip 机器模式软件中断等待寄存器(machine-mode software interrupt pending register)
e203自定义 0xbff MRW mcounterstop 自定义寄存器用于停止mtime, mcycle, mcycleh,minstret,minstreth对应的计数器


常用的CSR寄存器详细介绍

misa

misa寄存器用于指示当前处理器所支持的架构特性。

最高两位表示当前处理器支持的架构位数,值为1表示当前为32位架构(RV32),值为2表示当前为RV64架构,值为3表示当前为128位架构(RV128)。

低26位表示当前支持的扩展指令集模块,如果支持某模块,则对应的位为1。比如E203,支持IMAC,则低26位为:


31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 x x x x 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1
bits 扩展指令集 描述
0 A Atomic extension
1 B Tentatively reserved for Bit-Manipulation extension
2 C Compressed extension
3 D Double-precision floating-point extension
4 E RV32E base ISA
5 F Single-precision floating-point extension
6 G Additional standard extensions present
7 H Hypervisor extension
8 I RV32I/64I/128I base ISA
9 J Tentatively reserved for Dynamically Translated Languages extension
10 K Reserved
11 L Tentatively reserved for Decimal Floating-Point extension
12 M Integer Multiply/Divide extension
13 N User-level interrupts supported
14 O Reserved
15 P Tentatively reserved for Packed-SIMD extension
16 Q Quad-precision floating-point extension
17 R Reserved
18 S Supervisor mode implemented
19 T Tentatively reserved for Transactional Memory extension
20 U User mode implemented
21 V Tentatively reserved for Vector extension
22 W Reserved
23 X Non-standard extensions present
24 Y Reserved
25 Z Reserved


fflags

fflags 为浮点控制状态寄存器(fcsr)中的异常标志位域的别名。

详见https://www.cnblogs.com/mikewolf2002/p/9878603.html

frm

frm寄存器为浮点控制状态寄存器中浮点舍入模式域的别名。

详见https://www.cnblogs.com/mikewolf2002/p/9878603.html

fcsr

risc-v架构规定,如果支持单精度浮点指令或者双精度浮点指令,则需要增加一个浮点控制状态寄存器。该寄存器包含了浮点异常标志位域和浮点舍入模式域。

详见https://www.cnblogs.com/mikewolf2002/p/9878603.html

mstatus

mstatus是机器模式下的状态寄存器。我们仅关注SD,XS,FS,MPP,MPIE,MIE。

to do

mtvec


to do

mepc


to do

mcause


to do

mtval(mbadaddr)


to do

mie



to do

mip


to do

mscratch


to do


mcycle和mcycleh


to do


minstret和minstreth



to do

mtime/mtimecmp/msip



to do

counterstop


猜你喜欢

转载自www.cnblogs.com/mikewolf2002/p/11314583.html