什么是RISC-V?
提到CPU,
大家首先就会想到"卡脖子"事件。
X86和ARM的IP授权虽然方便,但是不自主和不可控,
一被限制就可能导致国内一夜间"无芯"可用。
今天我们就来聊聊一个解决芯片卡脖子的有效方式--开源RISC-V芯片。
聊芯片前我们先聊聊什么是指令集?
要想了解CPU,那不可避免的要了解指令集。
我们平常说的X86、ARM芯片,都是指的芯片的指令集架构。
指令集是软件和硬件之间的接口,简单来说指令集就是软件与硬件之间沟通的"翻译官",是芯片产业中不可或缺的基础部分。
使用不同的指令集,代表着不同的CPU。目前市面上的CPU分类主要分有两大阵营,一个是Intel、AMD为首的复杂指令集(CISC)CPU,另一个是以IBM、ARM、RISC-V为首的精简指令集(RISC)CPU。
不同品牌的CPU,其产品的架构也不相同,例如,Intel、AMD的CPU是X86架构的,而IBM公司的CPU是PowerPC架构,ARM公司是ARM架构。同时,不同的芯片厂商按照指令集的设计情况分为精简指令集和复杂指令集。
那么不同的指令集有啥不同的?
不同的指令集决定着CPU的处理方式。从指令集角度来看,CPU的效率主要通过两种思路来提升:要不通过降低每个程序所需的指令数来提升效率,要不通过降低每条指令所需的时间周期数来提升效率。
CISC更偏重前者,而RISC更侧重后者。目前来看,CISC指令集较为复杂,提供了丰富的指令,能够减少程序员的编程工作量。
然而,随着计算机科学的发展,人们发现这种复杂性会导致处理器的性能和能效下降。因此,RISC应运而生,它采用了一种更简单、更高效的设计理念,通过优化指令集,提高处理器的性能和能效,成为21世纪以来所有新兴领域的绝对主流。
说了这么多,大家可能云里雾里,下面我们通过让大家了解下举例来说明下不同指令集的工作原理:
拿做饭来说,要完成做饭这个动作。
精简指令集需要定义做饭中的每个动作,需要包含拿钱、拿篮子、买菜、买面、烧水、和面、炒菜等指令。程序要完成做饭这个指令,需要下达这些指令来合成做饭这个动作,否则程序不知道该怎么做。对于CPU来说,每条指令都很简单
复杂指令集则不需要知道这么多指令,只需要下达做饭这个指令即可,很简单。下单完做饭指令,程序会直接完成全部的动作。但是对于CPU来说,每条指令都很复杂。
那么为啥我们不都用复杂指令集呢?一条命令就可以轻松完成一整套动作?因为,有一些时候,人们只想完成"和面"这一个步骤,我只想"和面",那么在复杂指令集中则没有这个指令,你必须来一套这样的动作,这也导致复杂指令集的CPU在一些专用的领域的性能和能效下降。
所以不同指令集的的指令是不可以通用的,即使是相同阵营的指令集,每家的指令也是不同的。例如英特尔可能用"111"表示做饭,AMD则可能用"666"表示买菜。因此,CPU和指令集不同,导致相关产业生态不同。
RISC-V的诞生
聊完指令集,我们了解到,不同的架构反映了设计者对同一功能的不同实现思路。在之前,X86、ARM芯片架构一直是用户采用最多的两种芯片架构。
但是X86被英特尔和AMD封闭使用、ARM要收取高昂的授权费用……
因此,20世纪80年代初,加州大学伯克利分校的David Patterson、斯坦福大学的John L. Hennessy等学者开始尝