blob: 618b44bad74e325090ee9c86b15f3110b50ab84c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
# XuanTie - C908X Series
## 一 简介
### 1. 内核
C908X 是基于RISC-V 指令架构的64 位高性能多核心处理器,主要面向市场日益增强的图像、视觉处理
领域,例如智慧视觉、车载视觉、行车记录仪、智能交互等。其他应用领域还包括扫地机器人、无人机、自
动化驾驶、增强现实、医疗图像、机器人工业视觉、移动互联网等产品。
C908X 采用同构多核架构,支持多cluster,每个cluster 支持1~4 个核心。每个C908X 核心采用自主设计
的微体系结构,并重点针对性能进行优化,采用按序双发射、多模式分支预测和多通道数据预取等高性能
技术。此外,C908X 核心支持实时检测并关断内部空闲功能模块,降低处理器动态功耗。
### 2.特点
#### 2.1. C908X 处理器体系结构的主要特点
• 同构多核架构,支持多cluster,每个cluster 支持1~4 个C908X 核心;
• 支持1 个AXI4.0 Master 接口,128/256 比特的总线宽度;
• 支持1 个可配置的AXI4.0 低延时外设Master 接口(Low Latency Port, LLP),128 比特的总线宽度;
• 支持1 个可配的AXI4.0 设备一致性接口(Device Coherence Port, DCP),128 比特的总线宽度;
• 一级指令/数据缓存分别支持16KB/32KB/64KB,缓存行SIZE 为64B;可配置ECC/奇偶校验机制;
• 二级高缓128KB/256KB/512KB/1MB/1.5MB/2MB/3MB/4MB,缓存行SIZE 为64B;可配置ECC 校验机制;
• 一级缓存支持MESI 一致性协议,二级缓存支持MOESI 一致性协议;
• 支持私有中断控制器CLINT 和公有中断控制器PLIC;支持多cluster 中断分发;
• 支持RISC-V 性能计数器和计时器;
• 支持Sv39 和Sv48 内存管理,支持SVNAPOT 和SVPBMT 标准扩展;
• 支持8/16/32/64 表项PMP,支持ePMP;
• 支持XuanTie TEE 扩展;
• 支持各个核心独立下电以及cluster 下电;
• 支持RISC-V 调试框架和RISC-V Trace,支持多核多cluster 调试;
#### 2.2. C908X 核心的主要特点
• RISC-V 64GCB[V] 指令架构;
• User Mode 支持RV64 指令集;
• 支持小端模式;
• 9 级流水架构;
• 按序双发射,按序取指、发射、执行和退休;
• 两级TLB 内存管理单元,实现虚实地址转换与内存管理;
• 指令高缓和数据高缓大小可配置,支持16KB/32KB/64KB,缓存行为64B;
• 指令高缓可配置奇偶校验,数据高缓可配置ECC 或奇偶校验;
• 指令预取功能,硬件自动检测并动态启动;
• 指令高缓路预测的低功耗访问技术;
• 支持2KB/4KB/8KB 的多算法分支预测器;
• 支持256 表项的分支目标缓存器(BTB);
• 支持8 层的硬件返回地址堆栈;
• 支持256 表项的间接跳转分支预测器;
• 支持循环终止预测;
• 支持指令融合技术;
• 双发射按序执行Load、Store 指令;
• 读、写内存分别支持8 路、12 路并发的总线访问;
• 支持写合并;
• 支持8 通道数据预取,支持固定stride 和规律性不定stride 数据预取;
#### 2.3. 矢量计算单元的主要特点
• 遵循RISC-V V 矢量扩展;
• 在4 核、2GHz 最大配置下,算力可达2048 Gops (@int8)/ 1024 GFlops (@FP16);
• 矢量执行单元支持FP16/BFP16/FP32 浮点和INT8/INT16/INT32/INT64 整型的矢量运算;
• 支持512/1024/4096 可配置的矢量寄存器位宽VLEN;
• 支持512/1024/4096 位矢量数据存储访问位宽;
• 支持segment load、store 指令;
• 性能优化的非对齐内存访问;
### 3.BSP支持情况
- 当前BSP支持下述内核:
```asciiarmor
c908x c908x-cp c908x-cp-xt
```
- 当前BSP默认设置的内核是c908x,该架构支持[F][D][V]扩展。
- 当使用其他内核架构时需要修改,rtconfig.py文件中的`MCPU`字段。
- 当需要使用SMP多核时,请使用`scons --menuconfig`使能SMP功能并配置CPU个数。
### 4.运行QEMU
- BSP根目录下存在`qemu.bat`脚本,生成可执行文件后可点击该脚本直接启动QEMU.
- Linux用户可以直接使用`qemu-system-riscv64`命令启动QEMU.
```shell
qemu-system-riscv64 -machine xiaohui -smp cpus=2 -nographic -kernel rtthread.elf -cpu c908x
```
## 二 工具
- 编译器: https://www.xrvm.cn/community/download?id=4433353576298909696
- 模拟器: https://www.xrvm.cn/community/download?id=4397435198627713024
注:若上述链接中的编译器与模拟器不能使用,可以使用下述CDK中的编译器与模拟器
- SDK:https://www.xrvm.cn/community/download?id=4397799570420076544
## 三 调试方法
**下述调试方法以E906举例,本BSP操作方式一致**,搭建完成RT-Thread开发环境,在BSP根目录使用env工具在当前目录打开env。

使用前执行一次**menuconfig**命令,更新rtconfig.h配置,然后在当前目录执行**scons -j12**命令编译生成可可执行文件。
<img src="figures/2.scons.png" alt="env" style="zoom: 95%;" />
下述是使用vscode调试的展示。
<img src="figures/3.vscode.png" alt="env" style="zoom: 63%;" />
一起为RISC-V加油!
|