谈一下RISC-V
来源:内容由半导体行业观察(ID:icbank)转自知乎,作者:夏晶晶,谢谢。
最近忙着玩手工活,就懒得写东西了……
但最近碰到很多事还是忍不住想插个嘴………
即使是如此寒意的秋天,芯片的创业都还有热点在,从AI到DPU到GPGPU到ARM CPU,今年火热的居然是RISC-V CPU
其实认真想想也没错,当下最典型的特征不就是~~~穷~~~嘛,没有比RISC-V创业更便宜的了吧。
然后呢,今年就总是有人问我,“我有个朋友在做RISC-V的项目,你觉得做出来进数据中心靠谱不?”
其实我理解,如果换一个问法,就是RISC-V能否重复ARM,做通用处理器然后进入数据中心的故事?
我这个人最喜欢和稀泥,“能,也不能”。
其实我很多时候并不是中庸,而是倾向于在可能达成目标的路径上团结更多的人。如果方向上不是死路,我认为力出一孔往往比寻找快捷路径的成功概率要高。
技术往往没有绝对的对错,所有没有比在一个大公司达成技术方向的一致性更困难的了,把公司换成社会或国家也成立。
所以我更倾向于,如果没有办法达成技术民主意义的一致性,那就尽可能在事物得失和取舍上比赞成者或反对者看深一层或者两层。在确定性的技术决策的背后,通过推动或修改其深层下逻辑的关系,利用其更深层的潮水的变化改变其得失和可能性,让既定决策的目标变成更大的可能性和更多人一起努力的目标。
上面讲得其实都是废话。
今天我打算讲一下我看RISC-V的第一层,第二层则先埋着……
我算是完整经历过ARM从嵌入式走入数据中心server cpu的全流程,嗯,我不知道倚天710进入阿里云到底有多少台,但鲲鹏在华为云已经是数十万台了,要再算上天翼、电信云则更多了,然而这些数量,并不是睡一觉睁开眼就发生了。
问题就是,假设这是ARM过去成功(就算第成功的第一步吧)的历史,这能否复制到RISC-V上?
一、先做同理心分析……
我从2003年研二进实验室就开始了做ARM SOC,核是ARM946(后来是ARM926),V7指令,在当年看来,哇,这CPU真是太牛逼了,虽然和远在天上的IBM、intel相比不算什么,但那可是在人间触手可及的真•高性能CPU了,完善的各类指令,还有JAVA加速,惊叹课本中MMU在现实是这么做的虚实地址,系统部件五脏俱全,差不多能跑个完备的操作系统了。
这其实和今天我们看RISC-V的状态差不多的。
但2002之后整整10年,我都专注在嵌入式处理器上,真正开始做通用的ARM server cpu,是在2012年才开始。
因为到2012的时候发生了一件大事,ARM V8发布了,很多人理解它只仅仅理解为一套指令,是完全不对的。
ARM一次性完整地(注意这个完整性说法)把64b、虚拟化、SMP扩展、ACPI、server级RAS和SECURITY的框架发布了,其中有很多特性很不完备,是的,留白的,但ARM作为生态的唯一主导者做出的最大贡献,就是先把一个人该有的骨架全搭好了,如下图。
而RISC-V的主线,源自Patterson教授对DSA的预期,并无一个宏观视角下对server领域的全局主线。以GC为最小基本面,各领域随意延展,放飞自我,RISC-V的发展其实是如下图的样子,不过也许这本身就是Patterson教授对初心?
二、比较玄乎的东西
这个世界的发展很奇特,没有人能预料到突然俄乌战争就爆发了(当然对某些人可能是预期的)。
ARM从v8发布开始,就伴随了非常多的机缘巧合的事和人,这些事情,怎么看都是不可能重复发生的。
就像一个傻小子在悬崖边纵身一跳,挂到树上然后遇到临死的高人传授一身功力和绝世武功。你说要再来一遍………
回头看,有些事情真的就像梦幻一般。
ARM在生态上的强权和领先的认识力。
恰到好处的几个人,建立了恰到好处的生态组织,并且建立了各家愿意遵从的标准(可能还有intel的助力)。
各具有实力但又不够独大的诸方参与者,屈从于共同的敌人和利益目标而主动愿意相互合作。
相当多还不能说的国际友人,明里暗里出于对全球化技术共产主义的追求而提供的各种帮助。
还有那些苦intel旧矣的敌后地下党员……
这些要素在RISC-V当下,一个都没看到。
特别想提的是第一点,大家肯定都不喜欢独裁,所以过去十年ARM招的怨念那是一个大,ISA的演进几乎R-G一个人说了算,其余众人都只能提案,但如果今天再看,你会突然回过味来,如果独裁者恰好是群体中最聪明的那一个,那么很可能集权是效率最大化且避免腐朽的制度。而反之,像RISC-V当前,民主制,但各家利益和目标各不相同,有图名的、有图利的,有图大棋有图城池的,甚至还有故意捣乱的……
这就是民主啊!大人。
不过话说回来,谁的人生不都是一出戏嘛。谁又能假定风起云涌的今天,RISC-V明天就有一遇风云便化龙的际遇呢?
三、罗马不是一天建成的。
指令集不是、虚拟化不是、RAS不是、security不是………
很多人误以为RISC-V已经有虚拟化扩展这个ISA extension好像就支持虚拟化了,实际上完全不是。2012年ARM v8就支持虚拟化了,可直到今天,我们做下一代ARM Server CPU还在吵哪些feature是必须加的?哪些可以放弃?一句话说吧,虚拟化是由大约一百多个细节的feature堆砌组成的。
讲虚拟化的feature不容易懂,举个浮点计算的例子,最简单的,浮点计算遵从IEEE754标准,我猜任意一个RISC-V的同学都会跳出来说,“compatible !”,很遗憾,我做ARM到现在还没能做完备,IEEE有FP80这种FP64的扩展浮点,并被x86指令集的X87指令提供出来,过去有相当数量高精度浮点计算会使用它,嗯,你说,我可以不支持啊。当然没问题,但是通用处理器的通用两个字本身就是无数的细分市场聚合的,你这个缺,那个缺,那那个也放弃,最终就是个DSA啦(也是Patterson希望的吧)。
这么说吧,都是RISC指令集,同样的性能,为啥RISC-V能比ARM小?
且不说,risc-v因为目标碎片化原因无法在最新工艺上做好DTCO。
嗯,如果RISC-V真正把指令完备性、虚拟化、安全、RAS等等细节都补齐,小不了。而且当你加了这么多特性之后,算算付出的设计、验证的代价,也许,还不如买一个更便宜。
上面都是第一层逻辑。
但如果真有一天,我们达成一致,一定、必须要在数据中心把RISC-V扶成主流。
就需要启动隐藏的第二层或者第三层逻辑:
放弃虚拟化、硬件的RAS、安全……
想一想,计算机体系结构发展,从大 、到小 、到微机……
下一步是nano machine吧
微信扫码关注该文公众号作者