← 返回路线图
6
多核 / 多集群
Stellar 板 + TRACE32可选2–3 周
目标
可选项:把 hypervisor 从单核扩展到多核。先做单集群双核承载一个 VM,再看多集群多 VM。做不完的部分写进论文"未来工作"。
工作内容
- SMP 启动:主核完成全局初始化后放行副核,每核各自完成 EL2 初始化
- 每核数据(per-CPU):当前 VM 指针、调度队列;注意伪共享
- 核间同步:Rust spinlock(注意原子 Ordering 与 WFE/SEV)、核间中断(SGI)
- 2 核 1 VM:同一 VM 的两个 vCPU,共享一套 stage-2 配置
- (有余力)多集群:每集群一个调度域,多 VM 分布
参照文件
tests/2cores1vm —— 双核单 VM 场景
unsupported/Hypervisor —— 多核 MPU 配置参考
注意 / 易踩坑
多核 bug 大多是内存序问题——Rust 原子操作的 Ordering 别全写 SeqCst,也别乱用 Relaxed。先在单核上把逻辑跑对,再开多核。
完成标准
多核可跑:两核协同承载一个或多个 VM,无竞态。