运行态自动适配

上层业务代码如果要根据不同的芯片类型设置不同的参数,或者走不同的代码逻辑路径,可以通过实时查询芯片类型来判断,这样代码实现了自动适配芯片类型。与编译宏控制方法的区别是,这类代码和编译无关,不同芯片架构都可以编译。

处理步骤

简单通用的方法是实时查询CPU的类型,根据查询结果来判断。如,Linux系统可以通过lscpu命令来实现:

执行命令: lscpu | grep Archit | awk '{print $2}'

编程语言有类似系统调用system()函数,通过这类函数执行上述shell命令,根据执行结果判断代码分支执行路径。

 // 自动识别芯片类型,伪代码
strCmdLine = "lscpu | grep Archit | awk '{print $2}'";
strExeResult = system(strCmdLine);
 
if ("aarch64" == strExeResult)    //如果是鲲鹏芯片业务代码放在这里
{
    ……
}
if ("x86_64" == strExeResult)    //如果是x86芯片业务代码放在这里
{
    ……
}

除了lscpu命令以外还有很多其他方法可以判断底层芯片类型,根据业务情况自行选择。