ASM的效率比C高,C比C++高,C++比JAVA高,软件每增加一个环节,就会增加一部分的消耗。好比IC布线,自动布线永远没有人工布线效率高,但是现代的电路,动不动就几亿甚至过百亿的晶体管,人工完成的工作量好比天方夜谭。但是硬件处理软件的部分工作,这就是一个相对比较容易解决的问题,即解决了工作量问题,也解决了资源的问题。如果效率的提高带来系统的精简就好比用3平方毫米的芯片面积去换取外部128M闪存甚至来得更便宜。整体解决方案的优势,比单片成本更敏感。

我们的机会在哪里?

西方科学的先进性在于量化。从日常用品到芯片,方方面面都有数据量化的痕迹。近代科学,的确是西方发达国家给奠定了基础。不过中国有句老话,30年河东30年河西。西方的科学制定的整个科学架构也因为时代的变革而濒临岌岌可危的边缘,原因是如果有新的技术挑战他们几十年前前打造的世界秩序。这就是为何老美倾全力打击我们华为的原因。

另外,任何事物都有好的一面也必然有坏的一面。画地为牢,也是西方体系的一恶,何为画地为牢?向下兼容就是其一。因此各种硬件软件设计的时候都得优先考虑向下兼容,甚至微软为了一个游戏的内存泄漏的bug去更改其内核代码规避闪退。

职业经理人,是西方科技公司发展的一大绊脚石,同时,那些等级森严的公司规矩也是西方社会的一恶。不求有功但求无过是大部分职业经理人的心态,因此规规矩矩,缺乏创新就是他们的一个常态。笔者曾经请教过一个美国IBM出来的投资人,为啥现在牙膏厂/微软那些都没有什么让人耳目一新的产品?答曰:因为创始人不干了,职业经理人上了啊。

不破不立,破而后立!

路在脚下,如何实现?国产OS和芯片弯道超车的思路

硬件EDA工具最大的工作量,就是LAYOUT,几亿几十亿晶体管的layout,人工是无法完成的。(谁都知道,人工走线远比自动布线效果好)

软件上面,CPU做得最多的就是MEMCPY(也就是内存的数据搬运)。大量运算的,都是针对性DSP的事情,而实时性要求很高的又不是通用CPU能完成的,FPGA更合适。下图是针对某一个常用的安卓的APK进行反编译统计指令使用频度的一个表格。mov+ldr+str已经40%左右的指令使用频度了*。这里面还不包含MMU的数据搬运量。

*反编译和数据统计由DongYinfromPsychologySchool,FacultyofLifeScience,UniversityofBristol完成。

软硬件结合方面,工作量最多大的就是代码的编译以及优化,谁都知道,越远离机器思维的语言人类越容易掌握,但是运行效率却越慢。软件人员基本都知道,ASM效率最高。