平头哥玄铁 E906 编译与使用

1、E906 概述

与玄铁 E902 一样, E906 核的 RTL 代码也是开源的,开源仓库地址:https://github.com/T-head-Semi/opene906

玄铁 E906 是一款完全可综合的中端 MCU 级处理器,兼容 RV32IMA[F][D]C[P] 指令集,提供可观的整型性能提升以及高能效的浮点性能。

平头哥玄铁 E906 编译与使用_第1张图片

平头哥玄铁 E906 编译与使用_第2张图片

性能

在这里插入图片描述

网上能找到的信息就这么多,目前也暂时没了解哪个芯片用 E906 的。

2、通用寄存器

寄存器 ABI 名称 描述
x0 zero 零值
x1 ra 返回地址
x2 sp 堆栈指针
x3 gp 全局指针
x4 tp 线程指针
x5 t0 临时/备用链接寄存器
x6-7 t1-2 临时寄存器
x8 s0/fp 保留寄存器/帧指针
x9 s1 保留寄存器
x10-11 a0-a1 函数参数/返回值
x12-17 a2-a7 函数参数
x18-27 s2-s11 保留寄存器
x28-31 t3-t6 临时寄存器

3、编译运行

  1. SDK 下载 https://www.xrvm.cn/community/download?id=658699855023046656

  2. 编译

$ cd SmartL_E906-R2S2-V1.7.10/projects/examples/hello_world
$ make
  1. 运行
    与 E902 一样,在 qemu 上运行,qemu 安装可参考前文。
$ qemu-system-riscv32 -M smartl -cpu e906 -kernel out/smartl_e906_evb.elf -nographic -m 128M
Hello World!
Hello_World runs successfully!

4、E906 与 E902 比较

虽然 E902 和 E906 是两个面向不同市场的产品,这里也做一个简单的比较,可以进一步加深印象。

相同点

  1. 总线接口一样,都采用 AMBA3 AHB-Lite 32 bit 总线协议

差异点

  1. 支持的指令集不同
  • E902 为 RV32EMC 指令集,包括标准的整型指令集(E), 乘除法指令集(M)和 压缩指令(C)
  • E906 为 RV32IMAFC[P] 指令集,包括标准的整型指令集(I), 乘除法指令集(M), 不可中断指令(Atomic)标准扩充(A), 单精度浮点标准扩充(F),压缩指令(C)和单指令多资料流(SIMD)运算标准扩充(P)。
  1. 寄存器数量
    | 芯片架构 | 寄存器数量 |
    | ------- | ------- |
    | E902 | 16 |
    | E906 | 32 |

  2. 流水线数量不同
    | 芯片架构 | 流水线数量 |
    | ------- | ------- |
    | E902 | 2 |
    | E906 | 5 |

  3. 支持中断源数量不同:
    | 芯片架构 | 中断源数量 |
    | ------- | ------- |
    | E902 | 64 |
    | E906 | 128 |

  4. cache 配置不同
    | 芯片架构 | cache 配置 |
    | ------- | ------- |
    | E902 | 只支持指令 cache,2KiB/4KiB/8KiB 可配 |
    | E906 | 支持指令cache 和数据 cache 16KB |

你可能感兴趣的:(risc-v)