使用IME扩展线程数的关系

K1的CPU分为两个Cluster,Cluster0中实现了AI的相关指令(IME扩展,vmadot指令等)

https://developer.spacemit.com/documentation?token=AJXZwPidOiPqIjk17bgc2R1QnQh

使用这个文档中的cpufp项目测试K1上的IME扩展的性能

./cpufp --thread_pool=[0-7]这个命令使用K1的8个核心运行,但实际上由于程序中包含IME扩展指令,这部分指令必须由Cluster0的CPU运行,最终只有核心0~3在跑程序,无法利用到8核的性能

Cluster0 (核心0-3)包含AI加速单元,支持IME扩展指令,而Cluster1 (核心4-7)为通用计算核心,没有专用AI处理能力。IME扩展指令为‌Cluster0专属指令集,在Cluster1执行系统会自动规避核心。所以在测试AI性能的时候只能跑前4核。

请问Cluster1自动规避这个过程是硬件自动完成的吗,还是由OS Kernel做的?

这个是bianbu OS的 linux kernel完成的

可以参考arch/riscv/kernel/traps.c · Bianbu Linux/linux-6.6 - Gitee.com