“今天好多学生在选专业时,听到要做硬件、做芯片,就会有一种恐惧感,我们希望能改变这种状态。”说这话的人是中国科学院计算技术研究所研究员、先进计算机系统研究中心主任包云岗,几年前他所在的中国科学院大学有 35% 的学生不喜欢做芯片,现在不少学生已经开始热衷于做芯片,并已经有学生“带芯毕业”。2020 年 6 月,五位 95 后本科生,带着自己设计的处理器芯片“果壳(NutShell)” ,从中国科学院大学毕业,这在国内非常罕见。图 | 五位 “带芯” 毕业的本科生(来源:受访者)整个芯片从设计到研发,耗时仅仅 4 个月,如此高效率的研发,得益于包云岗团队研发的开源芯片设计平台——SERVE。在 2020 中关村论坛未来青年论坛现场,DeepTech 专访包云岗,并请他重点阐述了 SERVE 开源芯片设计平台的现状。图 | 包云岗(来源:中关村论坛未来青年论坛)SERVE 的诞生,要从 2012 年开始,这是一个摸索着长大的产品。2016 年,负责团队耗时 4 年,终于研发出 SERVE 第一版。同时,包云岗和团队核心成员张科博士、常轶松博士也在继续探索。在明确开源方向后,他们决定把 SERVE,打造成开源芯片设计平台。2019 年,SERVE 发布第三版,并发挥作用至今。图 | 开源芯片设计平台 SERVE(来源:受访者) SERVE 的主要作用,是在芯片设计结束以后,对芯片进行开发验证。由于 SERVE 的研究人员,本身也是高校老师,他们“就地取材”,围绕教学场景针对教学中遇到的需求,寻找技术实现手段。 此前,芯片验证一般得用 FPGA 仿真硬件基础设施,并且芯片上面还得运行软件,因此要想测试芯片是否有问题,就得让它跑起来。跑的过程中遇到问题,就要反馈给设计人员进行修复。包云岗在教学实践中发现,上述做法面临的痛点是,不是每个学生拿到的开发板都很稳定,这样就会导致很多无解类问题。而 SERVE 的作用,正是用于寻找无解类问题。它能通过联网来给芯片做验证,芯片的开发流程也会因此加快。之所以具备该功能,是因为 SERVE 使用了一种新架构——SoC-FPGA,相比亚马逊 F1 FPGA 云平台,SERVE 的密度更高,一个平台上可以集成 32 个 FPGA,并且每个 FPGA 上面还有强大的计算力。这样既有较高的密度,又有较强的计算能力,整个芯片系统可以获得更好的性价比。图 | 用 SERVE 测试芯片 包云岗介绍称,SERVE 在远程教学中,也发挥了重要作用。2020 上半年,学生都在家学习,而 SERVE 让学生们即便不在学校,也照样可以完成硬件实验。截止目前,在疫情期间,128 位该校学生登录 SERVE 近两万次,并借此进行了近两千小时的实验。过去几年,中国科学院大学一直让本科生用 SERVE 去做教学实验,学生对计算机组成原理教学实验平台的满意度,也从 27% 增长到 88%。把芯片设计搬到云上来SERVE 的目标,是要把芯片设计过程搬到云上去。未来,该平台有望实现所有的芯片设计,都能在云上完成。 届时,开发人员只需一个帐号,就能在云平台里面,制作芯片开发的基础组件,并能完成开发和验证等所有过程,从而产出芯片设计版图。版图设计出来后,就可以交给芯片制造厂商去制造。据包云岗介绍,在云上做芯片设计,也是未来的趋势,如果再融入开源要素,还能帮助降低芯片设计和验证的成本。 而降低设计成本,正是降低芯片制造门槛的首要因素。当前芯片的生产要素如 EDA、IP、仿真验证平台等造价都非常昂贵,如果生产要素特别难获取,生产门槛就会非常高。 他举例称,以 14 纳米芯片为例,一般需要几千万甚至上亿元的研发经费。这样的投入,只有少数企业才能承担。如果是创业公司,还没开始创业就要花这么多钱购买设备,那么芯片行业自然难以注入新鲜力量。 说到这里,包云岗说开发 App 的要素都是开源的,三五位工程师下载一些开源组件,很快就能做出一款 App。同样,通过开源和云上设计的方式,也能让芯片设计像开发 App 一样简单。“让天下没有难做的芯片”2019 年 10 月份,《经济学人》杂志有篇文章提到:过去十年开源软件让智能手机实现了大爆发,未来十年新的开源硬件有可能让物联网设备实现类似的爆发。 包云岗介绍称,开源芯片已经是大家比较关注的新趋势。它背后有三大驱动力,第一是当前技术发展的整体趋势,如 2020 年中国半导体行业明显“变热”;第二是人才,和美国相比,近十年在芯片设计领域里面,中国仍有 20 倍人才差距;第三是产业,如果把领域专家的知识实现到芯片里面,就能把芯片性能功耗比提升几百倍。谈及芯片和开源的结合,包云岗表示,一枚芯片的诞生,包括设计、制造和封装等三个阶段,这和出版小说的过程很相似。 设计阶段,就好比把小说写出来;制造阶段,相当于写完后把电子稿发给印刷厂、并把它印出来;封装测试好比把它封装成一本书。 他举例称,以寒武纪公司为例,他们把人工智能、深度神经网络和机器学习的设计固化到硬件里面,最终做出的 AI 芯片,比通用芯片的各方面性能都高出一个数量级。 由于寒武纪芯片针对的是某一类大领域,公司需要投入上千研发人力。但还有很多场景,不需要面对复杂应用,也不需要投入过多人力,可能只是做窗帘里面一个小处理器,这个小处理器只需感知光线是强还是弱,并根据光的强弱、接收手机发来的请求,从而实现窗帘的自动开关。 而用多快好省的方式快速做出芯片,便是降低芯片门槛的主要意义所在。对于有较强应用需求的小芯片来说,它们将在未来实现门槛低、成本低、周期迭代的能力。这样,便能最大程度激发芯片领域的创新活跃度。 包云岗继续分析称,现在全中国有 400 多万个 App,App 拥有量位居世界首位,每个 App 都需要团队开发,未来这些 App 可直接跟芯片关联起来。仍以窗帘为例,假如开发一个 App 控制窗帘,那么与窗帘对应的芯片,也可以打包形成一个软硬结合的解决方案。 比如,一家窗帘公司不仅可以给用户提供智能窗帘,还能给用户一个 App,用户在手机上可以很容易地控制窗帘。与此同时,窗帘公司还能很快做出一款小芯片,并嵌入到的窗帘里面。 这样,窗帘跟 App 是紧耦合的关系,它们之间可以通信,App 里面的请求可以发送到芯片里面,进而通过芯片来控制窗帘。这类芯片的出货量会比较大,相应的场景需求也比较多。包云岗表示,希望未来能把门槛降低到连窗帘公司都可以自己做芯片。 相比中低端芯片,高端芯片的制造门槛更难以降低。以建筑为例,假如要造大兴机场,就不是以成本为中心来考虑,因为它是非常高端的明星项目,需要先进的工程设备来做。 而大量存在的普通居民楼和写字楼,会更加重视经济适用。而包云岗团队目前正在解决的问题,是怎么把量大面广的芯片生产门槛降下来。 他认为,假如造一个普通房子,都需要尖端人员来做,那么房子的推广成本就会非常高。而把制造量大面广的芯片,跟计算机体系结构(Computer Architecture)对应起来,事情就会更加容易。 在计算机体系结构领域中做开源,相当于把很多预制件都做好、并加以储备,以备随时使用。比如,仅用 10 天就可以造出雷神山和火神山医院,此前长沙还曾用 7 天造出 10 几层楼的酒店。 为什么能做到这一点?因为已经标准化,有了预制件就能很快构建出建筑。包云岗认为,当 AIoT(人工智能物联网)得到进一步普及后,芯片也应朝此方向发展,因为它跟建筑一样,也有量大面广的需求。届时,芯片制造就会更快更便宜,造出来的芯片也会更适用。开源芯片死结有望打开但就开源芯片的研发,还面临着“死结”。由于投入很大,大家不愿意开源,没有可用的开源资源,就只能花高价去买 IP。与此同时,大家又都希望一次流片成功,所以会花更多的时间去验证它,导致人力成本高企。如今,这个死结有望打破。 开源芯片设计平台 SERVE,相当于一群人合伙做出预制件,根据这些预制件就能快速搭出产品。从宏观角度来看,开源就像基建一样需要有投入,投入以后不见得能看到回报,因为做完以后就要贡献给大家使用。 从商业模式角度来看,开源芯片设计平台,就像是国家建设高速公路,前期投入很大,但是建好以后大家的出行会很方便。 正所谓要想富先修路,高速公路一旦建成,就可以促进很多产业的发展,这便是基础设施的作用。开源芯片设计平台也是同样的道理,芯片门槛降低以后,平台就可以变成公共设施,厂商就可以在平台上做自己的芯片。图 | 国科大组成原理教学实践(来源:受访者) 包云岗指出,构建开源芯片生态,需要四大元素:开源开放的指令集、开源的 EDA 工具链、敏捷开发语言、操作系统和编译器。 以开源开放的指令集这一元素为例,得益于开放和免费,RSIC-V(一个基于精简指令集原则的开源指令集架构)已经逐渐为人所知。打个比方,指令集相当于一种语言的语法和词汇,而每一种语言都有一本字典,去解释这种语言的语法和词汇的便是指令集手册。 指令集手册都比较厚,以 X86 指令集手册为例,页数多达 5000 多页,而 RISC-V 指令集手册只有 200 多页,本科生就可以读懂。页数少且浅显易懂,这样就可以用较少的人才投入,用它去做处理器芯片设计。不同指令集的规模差别也很大,X86 如今已有 3000 多条指令,但事实上并不需要这么多。而 RISC-V 基础指令只有 47 条,且可以完成很多功能。与此同时,RISC-V 是模块化的,虽然只有 47 条基础指令,但其可以像搭积木一样,根据需求构建出定制的处理器。 仍以高速公路为例,路面可以行驶各种各样的车辆,车主也可以基于不同的目的来使用高速公路,有的是做物流,有的是出去旅游。对于开源芯片设计平台来说,厂商也可以在上面发挥各种想象力和创造力,从 0 到 1 开拓出新业务。 可以说,开源芯片是一个生态基础,而包云岗的工作则是构建一个类似于公共服务的生态,让芯片设计可以有更多创新。芯片门槛降低以后,“良禽”才会“择木而栖”。相比如日中天的互联网行业,芯片行业研发人员收入普遍不高,但是芯片人才的要求却很高,他们既需要懂设计流程,又需要懂前端、后端等一系列技术。 包云岗认为,中国还没有像英特尔和英伟达这样的 GPU 纯设计公司,中国的 GPU 跟美国的差距也在十年以上。其中一个原因正是因为芯片门槛过高,人才很难保持活跃度,资本也不太愿意进去。只有降低芯片门槛,学生才会不再害怕做芯片,人才参与一旦增多,资本也更愿意加入。不过他同时指出,门槛也不能降得过低,移到中间某一个位置时,就会形成较好的业界态势,这时便可以创造更大价值。
道翰天琼CiGril认知智能机器人API用户需要按步骤获取基本信息:
在平台注册账号登录平台,进入后台管理页面,创建应用,然后查看应用,查看应用相关信息。在应用信息页面,找到appid,appkey秘钥等信息,然后写接口代码接入机器人应用。请求地址:http://www.weilaitec.com/cigirlrobot.cgr
请求方式:post
请求参数:
参数
类型
默认值
描述
userid
String
无
平台注册账号
appid
String
无
平台创建的应用id
key
String
无
平台应用生成的秘钥
msg
String
""
用户端消息内容
ip
String
""
客户端ip要求唯一性,无ip等可以用QQ账号,微信账号,手机MAC地址等代替。
接口连接示例:http://www.weilaitec.com/cigirlrobot.cgr?key=UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV&msg=你好&ip=119.25.36.48&userid=jackli&appid=52454214552 注意事项:参数名称都要小写,五个参数不能遗漏,参数名称都要写对,且各个参数的值不能为空字符串。否则无法请求成功。userid,appid,key三个参数要到平台注册登录创建应用之后,然后查看应用详情就可以看到。userid就是平台注册账号。
示例代码JAVA:
import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; public class apitest { /** * Get请求,获得返回数据 * @param urlStr * @return */ private static String opUrl(String urlStr) { URL url = null; HttpURLConnection conn = null; InputStream is = null; ByteArrayOutputStream baos = null; try { url = new URL(urlStr); conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(5 * 10000); conn.setConnectTimeout(5 * 10000); conn.setRequestMethod("POST"); if (conn.getResponseCode() == 200) { is = conn.getInputStream(); baos = new ByteArrayOutputStream(); int len = -1; byte[] buf = new byte[128]; while ((len = is.read(buf)) != -1) { baos.write(buf, 0, len); } baos.flush(); String result = baos.toString(); return result; } else { throw new Exception("服务器连接错误!"); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (is != null) is.close(); } catch (IOException e) { e.printStackTrace(); } try { if (baos != null) baos.close(); } catch (IOException e) { e.printStackTrace(); } conn.disconnect(); } return ""; } public static void main(String args []){ //msg参数就是传输过去的对话内容。 System.out.println(opUrl("http://www.weilaitec.com/cigirlrobot.cgr?key=UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV&msg=你好&ip=119.25.36.48&userid=jackli&appid=52454214552")); } }