近年来,随着龙芯、申威自主CPU在性能和应用上不断取得突破,原本对中国高度技术封锁的欧美科技公司纷纷到中国寻找代理人,Intel、AMD、IBM、ARM、高通相继在中国成立合资公司,或寻找技术合作伙伴。这其中就涉及“指令集”,它是存储在CPU内部,对CPU运算进行指导和优化的硬程序。
与此同时,中国国产芯片集齐了SW64、LoongISA/MIPS、X86、Power、ARM,加上之前一些单位的一些产品和学术研究,中国的CPU的指令集还要加上IA-64、Sparc、RISC-V,这对中国CPU的发展非常不利。相比之下,印度确立国家级指令集的做法,更有利于一个国家CPU的长远发展。
印度将RISC-V确立为国家指令集
虽然印度在很多方面与中国相距甚远,在“中国能,我也能”的思维方式下闹了不少笑话,但印度的一些做法也值得我们学习和借鉴。
在2011年,印度开始实施处理器战略计划,在全国范围资助2-3个研制处理器的项目。印度理工学院马德拉斯分校(Indian Institute of Technology,Madras)的G. S. Madhusudan与V. Kamakoti教授在该计划支持下启动了SHAKTI处理器项目,目标是研制与IBM PowerPC兼容的处理器。为了获得合法授权,SHAKTI项目组与IBM开展了合作谈判,但始终未能达成一致。值得一提的是,在2014年,中国某公司却获得了IBM Power8的授权,之后,该公司还闹出欠薪事件,最后由当地政府做了接盘侠。
在加州大学伯克利分校推出了RISC-V指令集之后,SHAKTI项目组在2013年毅然放弃PowerPC,全面拥抱RISC-V。并将项目目标调整为研制6款基于RISC-V指令集的开源处理器核,涵盖了32位的单核微控制器、64核64位高性能处理器和安全处理器等多个应用领域。
David Patterson教授带领研制的五代RISC处理器
这里介绍下RISC-V,RISC-V指令集使用BSD License开源协议,是一个彻底开放的指令集。也就是说,全世界任何公司、大学、研究机构与个人都可以开发兼容RISC-V指令集的处理器,都可以融入到基于RISC-V构建的软硬件生态系统,而不需要为指令集付一分钱。相比之下,ARM的指令集授权费用则非常昂贵,一些ARM阵营IC设计公司每年就要支付数千万乃至上亿美元的成本。
在调整项目计划之后,SHAKTI项目又获得印度政府9000万美元的经费支持。在2016年,先进计算发展中心获得印度电子信息技术部4500万美元的资助,目标研制一款基于RISC-V指令集的2GHz四核处理器。此外,印度政府支持的一款神经形态加速器项目也将RISC-V作为计算主核心。
在过去数年中,印度政府资助的处理器相关项目都开始向RISC-V靠拢,RISC-V成为了印度的事实国家指令集。
中国CPU指令集处于群雄割据状态
目前,中国CPU发展可以分为两条路线。
一条是自主路线,以龙芯与申威为代表,申威自定义了SW64指令集,龙芯基于MIPS扩展出来的LoonISA,自主设计CPU的内核,以及内存控制器等IP,并且一直在坚持创建自己的生态系统。
另一条是技术引进路线,购买国外CPU的IP授权,并借助现有的生态系统开拓市场。比如华为和展讯从ARM公司购买IP做集成,依附于AA体系的生态系统;华芯通购买高通的授权开发芯片,依附于AA体系的生态系统;澜起购买Intel的内核外加一个安全模块做安全芯片,依附于Wintel体系;宏芯购买了IBM Power8的授权开发CPU,寄希望于IBM主导的Open power......
可以说,中国已经集齐了全球大部分有一定影响力或曾经有一定影响力的指令集,像ARM、MIPS、PowerPC、SPARC、RISC-V、X86等指令集都可以在中国找到。因而有网友调侃:如果再将已经消逝的PA-RISC、Alpha、IA-64等指令集找回来,就可以召唤神龙了。
虽然指令集繁多看似百花齐放,但实际上却存在很多问题。
一是严重分散了研发力量,导致编译、操作系统等基础软件开发者与爱好者由于精力有限而无法兼顾所有指令集的优化,延缓自主生态的建设。
二是严重影响到计算机专业的本科教学,目前的课程体系并没有制定相关标准,于是很多学校开设的不同课程会让学生使用不同的指令集开展实验,导致学生忙于了解各种指令集汇编语言而疏于了解指令集本身的设计精髓、指令集与处理器/编译/OS之间的联系。
事实上,最理想的状态是国内多家CPU公司以统一指令集设计芯片,大家都围绕这个指令集建设软件生态。这样一来,在硬件上哪家的产品好就用谁的,在软件上也能众人拾柴火焰高,加速生态建设。
其实,国家也想统一指令集。在2012年,工信部曾经试图制定CPU指令集国家标准。然而,更换指令集就意味着过去十多年围绕该指令集所建设的软件生态全部归零,在2012年才力图统一指令集已然太晚了。像印度那样,在没有过去技术积累作为包袱的情况下,才是通过行政力量统一指令集的最佳时机。
中国统一指令集只能依靠商业力量
既然印度可以将RISC-V确立为国家指令集,那么,中国是否可以效法呢?
笔者认为,可行性非常低。主要是因为国内IC设计公司和单位不太可能抛弃现有的技术积累,去更换指令集。
举例来说,龙芯和申威不可能放弃现有的技术成果,毕竟龙芯和申威已经围绕SW64和LoongISA初步构筑了一个生态体系。
华为和展讯也不可能抛弃有丰富软件生态的ARM转向前景不明的RISC-V。毕竟离开了ARM,华为和展讯不仅要面临无CPU内核可用的窘境,还要遭遇没有软件生态的困局,其手机和芯片产品将成为工业废品。
另外,国内学术界基于RISC-V开展的前沿研究依然偏少,国内目前几乎没有在RISC-V开源社区中的贡献者,大部分还是以应用RISC-V为主,从而无法在社区与生态发展中拥有足够的话语权。
标签化RISC-V团队与伯克利的Patterson教授和Asanovic教授
第7届RISC-V研讨会的程序委员会名单
因此,效法印度将RISC-V确立为国家指令集的做法并不适合中国。
就目前来说,通过政府行政力量统一CPU指令集的可能性几乎为零。想要把指令集统一起来,就只能依靠商业力量。类似于美国上世纪90年代X86、Alpha、MIPS、SPARC、Power在几番大战之后,由X86一统江山。中国如果要统一CPU指令集,也要经历这个过程。
ARM最有可能成为中国事实上的国家级指令集
从情感上,我们当然是希望SW64或LoongISA能够成为中国的国家级指令集。
不过,从实践上看,ARM成为事实上的中国国家指令集的可能性更高。
首先,ARM在国内的合作伙伴多达上百家,这些企业会为ARM开发大量应用,并在物联网时代到来之后占据大量市场。
其次,国内部分ARM阵营IC设计公司由非常深厚的政商关系,非常善于宣传营销。能将买IP做集成轻易包装成拥有全部知识产权,进而带上“自主可控”的标签。
比如某公司在核高基的支持下,开发了一款宣称自主可控的32核A57芯片,根据核高基总师魏少军教授的报告,这款芯片将进入特殊市场。又比如某些公司买ARM的IP为基础开发了SSD主控芯片,却宣称“自主可控”、“安全可靠”并荣获各种殊荣,而采用龙芯、申威CPU的SSD主控芯片,却鲜有人知晓。由于ARM由日本控股,主要研发中心在美国,国内一些公司将ARM打扮成“自主可控”的做法无疑是向中国的信息安全体系中埋入特洛伊木马。
最后,国内真正具备自主开发高性能CPU技术的团队非常少,而且由于技术具有迭代演进的特点——每一代新内核,相对应前一代内核的代码替换量最多不会超过20%。而一代内核的研发一般要2-3年。在这种情况下,与其从零开始自主研发,远不如玩买IP做集成或在ARM原始设计上略做修改+营销包装游戏来钱快。
至于高度依赖国外技术,只要足够多的水军就能洗白,而且还能包装成国产骄傲,而代价就是国产处理器继PC之后,再一次跟在洋人身后吃土,在处理器领域再出现一个联想。
在自主研发风险大、成本高、周期长,“短、平、快”能够实现短期获利的情况下,众多商业公司都会选择ARM。像印度选择的RISC-V,在中国市场上,只会在一些小众领域有一席之地,比如把RISC-V内核集成在FPGA里。
(来源:观察者网)