1、E906 概述
与玄铁 E902 一样, E906 核的 RTL 代码也是开源的,开源仓库地址:https://github.com/T-head-Semi/opene906
玄铁 E906 是一款完全可综合的中端 MCU 级处理器,兼容 RV32IMA[F][D]C[P] 指令集,提供可观的整型性能提升以及高能效的浮点性能。
性能
网上能找到的信息就这么多,目前也暂时没了解哪个芯片用 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、编译运行
-
SDK 下载 https://www.xrvm.cn/community/download?id=658699855023046656
-
编译
$ cd SmartL_E906-R2S2-V1.7.10/projects/examples/hello_world
$ make
- 运行
与 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 是两个面向不同市场的产品,这里也做一个简单的比较,可以进一步加深印象。
相同点
- 总线接口一样,都采用 AMBA3 AHB-Lite 32 bit 总线协议
差异点
- 支持的指令集不同
- E902 为 RV32EMC 指令集,包括标准的整型指令集(E), 乘除法指令集(M)和 压缩指令(C)
- E906 为 RV32IMAFC[P] 指令集,包括标准的整型指令集(I), 乘除法指令集(M), 不可中断指令(Atomic)标准扩充(A), 单精度浮点标准扩充(F),压缩指令(C)和单指令多资料流(SIMD)运算标准扩充(P)。
-
寄存器数量
| 芯片架构 | 寄存器数量 |
| ------- | ------- |
| E902 | 16 |
| E906 | 32 | -
流水线数量不同
| 芯片架构 | 流水线数量 |
| ------- | ------- |
| E902 | 2 |
| E906 | 5 | -
支持中断源数量不同:
| 芯片架构 | 中断源数量 |
| ------- | ------- |
| E902 | 64 |
| E906 | 128 | -
cache 配置不同
| 芯片架构 | cache 配置 |
| ------- | ------- |
| E902 | 只支持指令 cache,2KiB/4KiB/8KiB 可配 |
| E906 | 支持指令cache 和数据 cache 16KB |