现在,国内企业有ARMv8 CPU的IP在手。一旦ARMv9 CPU真的被“断供”了,我建议采用以下的应急的方法。
提高原有程序在在ARMv8上的运行速度
这个方法就是优化。具体来说,就是提高原有的手机程序在ARMv8上的运行速度,使手机用户感觉宛如在ARMv9上运行一样。
那么,要提高多少速度?整体来说,至少要提高一倍。
怎么优化?具体来说,就是改写一些对速度影响较大的程序段,即处于瓶颈处的程序段、
这样的优化,除了提高运行速度,还可以降低手机的功耗。手机用户的感受也可以得到改善,觉得软件的运行更“顺溜”了。
但是,优化一个程序段,所花费的时间,要比原先程序段的编程,要长得多。因此,优化工作,往往需要由一个团队来进行,而且,从事优化的工程师需要精挑细选。
程序这样的优化,提速效果的极限有多大?根据我的工作经验,可能比一般工程师的预计要更好一些。总的来说,待优化的程序段的性质、CPU的特性、以及优化工程师的“手艺”,与优化结果的加速比都有关系。
我来举一个优化结果比较理想的例子:一个C/C++非常常用的函数,优化后的加速比分别为3(第一类输入参数下)和5(第二类输入参数下)。对整个应用程序的加速效果为1.10~1.15(即,整个应用程序快了10%至15%)。
提高优化的效果——在ARMv8上增加几条机器指令
以下是我个人的研究结果。
如果在ARMv8 CPU上增加几条某种机器指令,在很多场合下,对提高优化的加速比很有帮助。模拟的结果表明,对于计算密集型的程序段,或复杂且有多重循环的场合,有了这几条机器指令后,加速的效果尤为明显。
由于扩充了指令集,就带来了CPU的软件兼容性的问题。但实验结果表明,只要采用一些合适的技术手段。兼容性问题可以避开。
增加机器指令,可利用附加的FPGA等。
自主研制手机CPU势在必行——不过,RISC-V合适吗?
自主研制中国自己的手机用CPU势在必行,这一点看来没什么异议。但是,历史的经验表明,并不是什么样的CPU都合适于手机的,例如,当年Intel的ATOM CPU在手机上似乎就不太成功。
实际上,从以往的手机CPU的发展历程来看,它是手机市场用户(对速度的)需求的推动下,一轮接着一轮地快速面世的(例如ARMv4,ARMv5,ARMv6,ARMv7,ARMv8,……)。
我没有研究过当前热度很高的RISC-V CPU,不知它能不能适合手机CPU的这种快速演化的需求。如果不能满足“快速演化”的需求,那“贸然”选取一款RISC-V CPU,而没有下一轮的RISC-V CPU“备着”,那岂不是“自我断供”吗?
借鉴以往·的ARM CPU的设计,来设计下一轮的手机CPU,也是一个提高设计成功率的策略。考虑到ARMv7与 ARMv4,ARMv5和ARMv6的兼容关系,而ARMv8是新设计的CPU,具体来说,就是从ARMv7和ARMv8出发,自主设计(不妨暂且称之为)ARMv9,……。当然,在知识产权问题上,需要非常小心地处理。这样一来,“断供”ARM,反而成了手机CPU设计上“弯道超车”的时机。
这里想要特别提出:ARMv8是在ARMv7基础上作了一系列的取舍后设计而成的。但是,我个人以为,这些取舍总体来说,并不很高明。这给了“弯道超车”更多的机会。
手机CPU的设计,往往需要设计工程师具有不同于一般程序员的一些专门技能,建立一支高素质、人员稳定的设计团队,很有必要。在设计过程中,工程师需要做大量的实验,并根据实验的结果,作出设计上的取舍。而这些实验和实验结果,也将成为下一轮手机CPU设计的技术基础。
以上属抛砖引玉,仅供诸位参考。
文:Simon3721,电脑工程师,2019年9月13日于加州