chipsel语言_RISC-V开源项目为什么选用chisel这种新的高层次建模语言,而不是SystemVerilog?...

为什么用chisel而不用其他语言自然是因为人家觉得好用,能进伯克利的学生的脑子绝对不傻而且绝对比其他一流大学接地气,去看看人家孵化出多少硅谷项目(Spark,Unix/BSD)就知道了。

人家chisel没打算取代verilog或者sv之类的任何,而只是希望在这个基础之上做一个高层次的构建语言,所以chisel叫做Hardware construction language,和HLS毛关系没有(但是你也可以在chisel的基础上构建HLS,这是另一码事)。

聊到chisel你们也别老是想到什么scala,java什么的。chisel是基于scala的,那是因为scala是一种元语言和函数式编程语言,而且很适合做DSL,也就是领域特定语言。这几个特点加起来让scala成为了一种很合适做这件事的语言。

那么chisel要做什么事?

请允许我举一个非常不恰当的栗子,我们以设计一个CPU为例吧。

你本科熬了几年图书馆,挤破了头进入国内某微电子学院做了研究生,老师进来和你说我有个很好的想法,能够有效的改进指令效率或者多核性能或者功耗。

老师说你做个5级流水线CPU把,还要把cache、总线、外设之类也做了(没缓存搞什么多核?)。好吧,我承认你很聪明,不出几个月你把CPU写的差不多了,然后cache、总线、外设这些大头还远着呢。又过了几个月你天天啃《量化研究方法》,然后终于把cache实现了。然后你写了个GPIO,又挂了个SRAM,好吧,你终于实现了一个小的CPU了。为了降低难度,你用了学术界最爱的MIPS体系结构,用了最土的wishbone总线。然后你开始了撸软件了,因为用了MIPS,你的难度已然降低了很多,而且你不用考虑编译器的问题了,你又吭哧了好几个月,写了个巨土的bootloader,终于把程序加载了。尽管后面可能还要在FPGA上跑起来,要发顶作的同学还要去申请经费流个片,这估计又要好久好久。但到目前为止你终于可以开始评估下你的设计的好坏了。

你跑了一堆benchmark,得出了一些结果,然后你才开始把导师的idea应用到你的设计中。然后,然后,你就硕士毕业了,放心吧,你的这个摊子,你的学弟们会接锅的。

这里尽管很多东西不那么真实,但是不得不说大学教授的很多项目,都是好几届学生慢慢做才做下来的,而且做归做,评估归评估。做完了哪里不好还得继续改进,因为有了架构,离实现到最后变成芯片还远着呢。更何况,评估一个设计好坏这件事本身或许难度更大。

以上的故事暴露了一个问题,对于改进硬件架构这件事,反馈环实在太长了。

所以扯了半天,我其实就想说一句话,硬件设计太耗时,verilog写的蛋疼,需求要是变一点,那些个接口就得跟着变。要是速度上不去了,我要是想换个架构,又要花好久。sv或许好一些,但你真的爱她吗?

所以当Berkeley的Krste教授和他的学生们决定要去做一些研究的时候(比如下一代数据中心的CPU架构、后摩尔定律时代的CPU架构或是AI加速处理器的时候),他们当然希望反馈环足够短啊!尽早评估、快速迭代对一个研究者来说太重要了啊。

差不多在统一时间,Berkeley的Joseph Whitworth教授也正好开始了Chisel的研究和开发工作,那他们自然就要决定联合起来做些有趣的事情。当他们决定做他们的第五代RISC CPU指令集的时候,他们需要设计一个真实的CPU来评估他们设计指令集过程中的每一个选择。所以他们从头用Chisel写了CPU,因为chisel面向对象的一些属性,他们能用很少的时间就把设计做好并且评估,chisel只要几十秒就可以生成verilog或者C++model,然后直接扔进仿真器里去跑benchmark。

就这样他们没用多少年就做了一个全新的开源指令集RISC-V,这个指令集有多好呢?我说你肯定不信,我引用一段最近David Ditzel采访里的话。Dave在Sun参与过SPARC ISA的设计,后面创立了全美达(Transmeta)曾经让Intel也胆战心惊。他最近成立了一家新的公司做RISC-V的高性能CPU。以下是采访内容:RISC-V wasnt even on the shopping list of alternatives, but the more Esperantos engineers looked at it, the more they realized it was more than a toy or just a teaching tool. “We assumed that RISC-V would probably lose 30% to 40% in compiler efficiency [versus Arm or MIPS or SPARC] because it’s so simple,” says Ditzel. “But our compiler guys benchmarked it, and darned if it wasnt within 1%.”

“RISC-V最开始甚至不在我们可考虑范围之内,但是我们Esperanto的工程师越深入的了解它,就越发现RISC-V不仅仅是个玩具或者教学用的工具。我们还假定说RISC-V在编译器效率上相比Arm/MIPS/SPARC会损失30%到40%左右,因为它实在是太简单了。但我们的编译器工程师对他进行了评测,发现只损失了可恨的不到1%。”Ditzel如是说

基于这几个事实我得出的推论就是,当我能够更快的评估我的硬件时,我就能更快的改进它,也就是能比别人更早的靠近不断变化中的有效边界。

其实人家berkeley的团队已经用chisel生成的代码做了好多次tape-out了,孵化出的SiFive公司做的hifive1 board在crowdsupply上卖的不错。明年初他们做的可以跑linux的U54 4核处理器就要流片回来了。

当我们看待一件新事物的时候,千万不要用他现有的状态去预测它的未来。你一定得想想,Chisel未来会发展成什么样,当然这就是另外一个故事了。

冷静的看待chisel的话,我认为这是就是未来或者是未来路上的一站,原因是它能提高生产力,当然也有很多其他类似的方法和途径。谁也看不清未来是怎样的,但是你要明白,当未来到来的时候,要想领先别人,你现在就得去做些什么对自己未来有利的事情。

所以,当你和我抱怨chisel是scala写的,我不会scala的时候,看我的大白眼!

为什么用chisel而不用其他语言自然是因为人家觉得好用,能进伯克利的学生的脑子绝对不傻而且绝对比其他一流大学接地气,去看看人家孵化出多少硅谷项目(Spark,Unix/BSD)就知道了。 人家chisel没打算取代verilog或者sv之类的任何,而只是希望在这个基础之上做一个高层次的构建语言,所以chisel叫做Hardware construction language,和HLS毛关系没有(但是你也可以在chisel的基础上构建HLS,这是另一码事)。 聊到chisel你们也别老是想到什么scala,java什么的。chisel是基于scala的,那是因为scala是一种元语言和函数式编程语言,而且很适合做DSL,也就是领域特定语言。这几个特点加起来让scala成为了一种很合适做这件事的语言。 那么chisel要做什么事? 请允许我举一个非常不恰当的栗子,我们以设计一个CPU为例吧。 你本科熬了几年图书馆,挤破了头进入国内某微电子学院做了研究生,老师进来和你说我有个很好的想法,能够有效的改进指令效率或者多核性能或者功耗。 老师说你做个5级流水线CPU把,还要把cache、总线、外设之类也做了(没缓存搞什么多核?)。好吧,我承认你很聪明,不出几个月你把CPU写的差不多了,然后cache、总线、外设这些大头还远着呢。又过了几个月你天天啃《量化研究方法》,然后终于把cache实现了。然后你写了个GPIO,又挂了个SRAM,好吧,你终于实现了一个小的CPU了。为了降低难度,你用了学术界最爱的MIPS体系结构,用了最土的wishbone总线。然后你开始了撸软件了,因为用了MIPS,你的难度已然降低了很多,而且你不用考虑编译器的问题了,你又吭哧了好几个月,写了个巨土的bootloader,终于把程序加载了。尽管后面可能还要在FPGA上跑起来,要发顶作的同学还要去申请经费流个片,这估计又要好久好久。但到目前为止你终于可以开始评估下你的设计的好坏了。 你跑了一堆benchmark,得出了一些结果,然后你才开始把导师的idea应用到你的设计中。然后,然后,你就硕士毕业了,放心吧,你的这个摊子,你的学弟们会接锅的。 这里尽管很多东西不那么真实,但是不得不说大学教授的很多项目,都是好几届学生慢慢做才做下来的,而且做归做,评估归评估。做完了哪里不好还得继续改进,因为有了架构,离实现到最后变成芯片还远着呢。更何况,评估一个设计好坏这件事本身或许难度更大。 以上的故事暴露了一个问题,对于改进硬件架构这件事,反馈环实在太长了。 所以扯了半天,我其实就想说一句话,硬件设计太耗时,verilog写的蛋疼,需求要是变一点,那些个接口就得跟着变。要是速度上不去了,我要是想换个架构,又要花好久。sv或许好一些,但你真的爱她吗? 所以当Berkeley的Krste教授和他的学生们决定要去做一些研究的时候(比如下一代数据中心的CPU架构、后摩尔定律时代的CPU架构或是AI加速处理器的时候),他们当然希望反馈环足够短啊!尽早评估、快速迭代对一个研究者来说太重要了啊。 差不多在统一时间,Berkeley的Joseph Whitworth教授也正好开始了Chisel的研究和开发工作,那他们自然就要决定联合起来做些有趣的事情。当他们决定做他们的第五代RISC CPU指令集的时候,他们需要设计一个真实的CPU来评估他们设计指令集过程中的每一个选择。所以他们从头用Chisel写了CPU,因为chisel面向对象的一些属性,他们能用很少的时间就把设计做好并且评估,chisel只要几十秒就可以生成verilog或者C++model,然后直接扔进仿真器里去跑benchmark。 就这样他们没用多少年就做了一个全新的开源指令集RISC-V,这个指令集有多好呢?我说你肯定不信,我引用一段最近David Ditzel采访里的话。Dave在Sun参与过SPARC ISA的设计,后面创立了全美达(Transmeta)曾经让Intel也胆战心惊。他最近成立了一家新的公司做RISC-V的高性能CPU。以下是采访内容:RISC-V wasnt even on the shopping list of alternatives, but the more Esperantos engineers looked at it, the more they realized it was more than a toy or just a teaching tool. “We assumed that RISC-V would probably lose 30% to 40% in compiler efficiency [versus Arm or MIPS or SPARC] because it’s so simple,” says Ditzel. “But our compiler guys benchmarked it, and darned if it wasnt within 1%.” “RISC-V最开始甚至不在我们可考虑范围之内,但是我们Esperanto的工程师越深入的了解它,就越发现RISC-V不仅仅是个玩具或者教学用的工具。我们还假定说RISC-V在编译器效率上相比Arm/MIPS/SPARC会损失30%到40%左右,因为它实在是太简单了。但我们的编译器工程师对他进行了评测,发现只损失了可恨的不到1%。”Ditzel如是说 基于这几个事实我得出的推论就是,当我能够更快的评估我的硬件时,我就能更快的改进它,也就是能比别人更早的靠近不断变化中的有效边界。 其实人家berkeley的团队已经用chisel生成的代码做了好多次tape-out了,孵化出的SiFive公司做的hifive1 board在crowdsupply上卖的不错。明年初他们做的可以跑linux的U54 4核处理器就要流片回来了。 当我们看待一件新事物的时候,千万不要用他现有的状态去预测它的未来。你一定得想想,Chisel未来会发展成什么样,当然这就是另外一个故事了。 冷静的看待chisel的话,我认为这是就是未来或者是未来路上的一站,原因是它能提高生产力,当然也有很多其他类似的方法和途径。谁也看不清未来是怎样的,但是你要明白,当未来到来的时候,要想领先别人,你现在就得去做些什么对自己未来有利的事情。 所以,当你和我抱怨chisel是scala写的,我不会scala的时候,看我的大白眼!
经验分享 程序员 微信小程序 职场和发展