查看: 2306|回复: 1
收起左侧

RISC-V开源项目为什么选用chisel这种新的高层次建模语言

[复制链接]

  离线 

  • TA的每日心情
    奋斗
    2021-3-3 12:32
  • 签到天数: 10 天

    [LV.3]

    发表于 2020-9-9 10:18:58 | 显示全部楼层 |阅读模式

    有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    本帖最后由 皋陶 于 2020-9-9 10:39 编辑

    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 wasn't even on the shopping list of alternatives, but the more Esperanto's 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 wasn't 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的时候,看我的大白眼!
    国内芯片技术交流-RISC-V开源项目为什么选用chisel这种新的高层次建模语言risc-v单片机中文社区(1)






    上一篇:RISC-V火力全开!全开源PicoRio对标销量超3000万件的树莓派
    下一篇:RISC-V 在十年内能否出现具备实用价值的移动和桌面处理器?
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

      离线 

  • TA的每日心情
    拍拍
    2022-6-27 11:09
  • 签到天数: 25 天

    [LV.4]

    发表于 2020-9-13 09:34:05 | 显示全部楼层
    本帖最后由 sky 于 2020-9-13 09:35 编辑

    问:
    UC Berkeley主导的开源项目RISC-V采用了他们自己新发明的chisel语言,这种语言成熟吗?为什么不采用同是高层次语言且已经成熟的SV;chisel以后可以取代SV吗?能完美地实现更层次综合吗?比Xilinx的HLS更强大吗?


    某人答:
    使用chisel还是写rtl,和写verilog本质是一样的,但是他用编程的方式来描述硬件电路,描述能力更强,参数系统也更方便,chisel是基于scala的,语法简洁,而且编程范式支持很好,面向对象,函数式,模板应有尽有,容易提高代码复用能力 好处这么多,写过 chisel的人就再也回不去verilog了 当然也有问题, 首先是scala的学习曲线比较陡,用好chisel,还是得学好scala,有人这么说scala是宇宙第二难学语言,这肯定是夸张了,但是确实不容易

    第二应该说来还不算很完善,chisel3.0还是未能发布,看上去还有一些工作,他们的目标是3.0要进军工业界,而且chisel持续投入,参与的人也不少,完善也就只是时间问题了

    但是我还是很享受写scala,感觉开发效率高很多,关键是,这个项目一定会持续发展,而且他们已经基于chisel做了很多芯片,总的说来,靠得住


    -------------这是记录的分割线

    Chisel3已经支持跨时钟域了,感觉过不了多久就要发布了

    Chisel和scala一样,在未来的一段时间注定是小众,但是技术的门槛并不会一直都那么高,金子总会发亮,好东西总要普及,过不了几年肯定会有相关的书籍出现,再复杂的事情都有人讲简单。这里的原因很简单,因为riscv的参考设计rocket是完全开源的,中国半导体大潮下,肯定会有人前赴后继的冲进来。大胆猜测一下,过不了几年,懂得chisel/rocket的工程师,将会火起来。



    某人答:

    1. chisel并不成熟。chisel在描述硬件的灵活性上不如verilog. 但是相比verilog,chisel提供了oo功能(比generate强多了),更多的primitive(比如arbiter,queue...),简化了interface连接,可以compile成c++ simulator...但是作为一个verilog programmer,scala用起来还是挺别扭的

    2. 为啥不用sv,因为大学研究项目,要装13

    3. chisel不是hls,更像program verilog in scala。 Xilinx都不能实现完美hls,一个大学研究项目更不可能

    4. 取代verilog...还是下辈子吧

    5. 个人认为ucb的这个项目价值更大的还是risc-v指令集,而不是chisel



    某人答:

    UCB说了啊 纯粹是人力不足,而只能用chisel,其实语言从来都不是主要的,毕竟只是工具,重要的是riscv本身

    某人答:

    Verilog存在不支持多重数组,不支持可变接口等严重缺陷,写出来的代码太呆板,可重用性比较差。

    Verilog的Generate功能在面向对象、函数式编程等成熟的编程武器面前完全不堪一击。

    对于复杂的大型数字电路,如CPU、通信基带而言,Chisel的开发效率是Verilog的10倍不止,发展潜力非常大



    某人答:

    新项目不用新语言,还想让那些有无数历史包袱的老项目用新语言


    某人答:

    sv有些工具支持还是不行,最多用一些sv的特性。chisel因为最后转成verilog,所以工具支持没啥问题。

    我感觉唯一chisel不好的就是转出来的代码中间信号名,不能直观看出对应元代码的位置



    某人答:

    EDA厂商不支持,debug起来能痛苦死你。

    全球首家只专注于RISC-V单片机行业应用的中文网站
    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

    RISC-V单片机中文网上一条 /2 下一条



    版权及免责声明|RISC-V单片机中文网 |网站地图

    GMT+8, 2024-11-26 01:23 , Processed in 0.367986 second(s), 51 queries .

    快速回复 返回顶部 返回列表