近日从Intel传来消息,Intel FPGA上将推出新一代的Nios软核处理器Nios V。该软核处理器采用目前被广泛关注的RISC-V开源指令集,将在Quartus Prime Pro Edition 21.3版本中出现。
那什么是软核处理器?在FPGA中为什么需要使用软核处理器?软核处理器在FPGA中历经了怎样的发展历程?为什么后来Intel(Altera)和Xilinx都推出了基于Arm硬核处理器的SoC-FPGA?现在的FPGA中软核处理器是否还有用武之地?Intel此时推出使用RISC-V指令集的软核有何用意?对RISC-V指令集的前景有何影响?
本篇文章将尝试回答以上问题,由于时间仓促加上作者水平有限,部分信息来源自网络新闻。如有遗漏或错误,欢迎大家留言指正。
FPGA中使用软核的历史已经很长时间了,2000年开始Altera和Xilinx就分别推出了Nios和MicroBlaze这两种软核。到了2004年Altera推出了32位全新架构的Nios-II,而Xilinx也进一步推出了8位的PicoBlaze。至此,软核处理器及其开发工具作为FPGA产品中一个重要的谱系登上了历史舞台。
那么为什么FPGA中需要使用软核处理器呢?其实这是由两方面因素共同决定的。首要的因素还说要归结于摩尔定律的作用导致FPGA容量的持续提升。到2000年左右,FPGA已经由早期只能做简单逻辑的粘合器件发展为可以承载某个关键子系统的大规模逻辑器件。FPGA容量的增加使得在FPGA中利用查找表等可编程逻辑实现一个处理器不再是一件非常奢侈的事情。另外一方面的因素还是处理器本身所具备使用简单、操作灵活、易于开发的优势,让处理器在实现控制、决策类任务时有非常大的优势。
如果我们不在FPGA中使用软核处理器,那么对于这些控制、决策类任务要么需要自主构建一个复杂状态机来完成,要么需要额外在FPGA外部“外挂”一个小单片机来完成。这一类任务的特点是使用并不频繁,但流程、步骤较为繁琐。例如对于很多IP核在工作之前要对其进行一些初始化配置,又比如与FPGA配合的外围模拟、存储器等芯片的参数在某些时候需要简单的调节,FPGA实现运算过程中有部分操作需要取舍等等。
状态机无疑是数字系统中最关键也最难设计的子模块。复杂状态机的设计不但难还容易出错,一旦出现设计缺陷要及时纠正也是非常困难的。而处理器则不一样,处理器是一种经过多次验证确保正确的子系统,而且有非常成熟的Debug方式。使用处理器来实现对逻辑电路的初始化和状态控制,其难度要远远小于设计多个复杂状态机。因此,当FPGA的容量支持在实现了核心功能以外再增加一个处理器来作为辅助的时候,在FPGA中去嵌入一个处理器就变得非常的自然。
但在此后无论是Nios-II还是MicroBlaze发展的并不顺利,广大工程师们对软核处理器的抱怨并一直不断。这其中的详细问题我们可以在下一节具体分析。随着Xilinx在2010年发布Zynq系列以Arm硬核构造的新一代SoC-FPGA,FPGA与处理器融合风头被嵌入Arm高端硬核处理器所抢走并长期占据人们的视线,而软核仿佛被遗忘到了角落里。
但事实上软核并非没有进一步的发展。Altera以及后来的Intel一直不断的在对Nios II进行升级改造,在后来甚至融入了多核、片上网络等高端处理器才具备的特性。而Xilinx则在不断的丰富软核的生态,把一些MCU级别的处理器不断的构造成软核。其最新的一次“重要”进展是与Arm Design Start计划合作,将Arm的Cortex-M1核Cotex-M3版本的处理器核深度的整合到自己的工具链中。而随着Nios V的发布,表明软核处理器依然有着它独特的作用和强大的生命力。
软核处理器虽然出现比较久,但其一直处于不尴不尬的地位。究其原因无非性能、生态两部分的因素。
首先说性能,软核处理器是依靠FPGA内部资源构造的,以查找表、嵌入式乘法器、可编程互连线注定无法构造出高性能的处理器。如果对于处理器微架构本身不加以优化,即使在“高端”FPGA中也只能跑到不足100Mhz的时钟频率。在进行了深度优化以后,这个频率大概能到150Mhz-200Mhz,而在添加了外设以后再进行整体的布局布线,时钟频率很可能又掉下去了。
其实跑到100Mhz出头这样一个频率确实相当的尴尬。如果当MCU用呢,这个频率应该是够了。但问题是我换一块小容量点的FPGA然后再把节约出来的钱额外买一个便宜的MCU不行吗?如果是把软核处理器真的当“处理器”看,这点性能又真的有点“不够看”的。当年笔者在参加Altera金牌讲师培训的时候就这个问题和Altera的AE深入讨论过,AE给的答复是“不要为了用软核而去用软核”,这实际上还是没有真正回答问题。
面对性能不足的情况,Altera采取的办法是不断去加强和优化,但是FPGA本身的结构决定了再怎么优化其性能上限也是有限的。而让软核“多核化”更是有点“缘木求鱼”的意思。而Xilinx仿佛要更加“硬派”一些,对于性能不足的情况Xilinx给的办法就是“上硬核”。只是Xilinx早期一直受通信行业影响太深,使用的硬核是在通信行业很流行但在别的行业比较“非主流”的PowerPC。而直到Xilinx“想通了”开始集成Arm处理器以后,整个处理器+FPGA软硬件融合的市场才被引爆。
和性能不足相对,生态太差是导致软核处理器一直不火的另外一个推手。其实但凡涉及到处理器必谈生态。因为处理器不是普通的数字逻辑电路,没有整个软件工具链为核心的生态环境支撑,处理器是搞不起来的。无论是Nios II还是MicroBlaze,其本质都是在“自建生态”。那也必然是要面临生态竞争的问题。随着Arm在嵌入式领域的一家独大,类似MIPS这样的专业处理器公司都被竞争下去了,更何况两大FPGA公司这样的兼职玩家。
生态不行就意味着使用的人少,意味着提出的问题找不到人讨论,意味着没有很多现成的案例可以参考、学习、移植。这反过来又导致用的人更少。虽然软核属于“深度嵌入”应用,一般是程序开发者直面硬件进行编程,软件栈的深度浅。但这样一样要遇到以上问题。这就是在很多情况下,如果有的选择开发者宁愿在FPGA外面外挂一个小封装的单片机来完成软核的功能,也尽量少去碰软核。因为使用软核来进行开发的经历实在是让人感觉太难受了。
3.路在何方——Intel开发RISC-V指令集软核处理器的原因浅析
其实在两年前我就写过一篇讨论RISC-V目前适合的市场的文章:
https://zhuanlan.zhihu.com/p/54778540
其中提出“用户不可见处理器”市场是RISC-V必然会占领,而且Arm没有什么优势的市场。其中也举例说明了NVIDIA要用基于RISC-V的处理器替代的原来自有指令的Falcon。其实FPGA中的软核是非常符合“用户不可见处理器”这个场景的。软核本身就是FPGA中替代复杂状态机而存在的,运行预先设定好的软件,一般情况下不需要用户对其编程。因此做RISC-V指令集的软核处理器从市场层面是可行的。
从技术层面说,RISC-V指令集采用了结构化的指令集定义方式。其特点是非常方便的实现指令的裁剪核扩展。而FPGA恰恰就是一个非常适合于指令集裁剪/扩展的领域。由于FPGA的可编程特性,使用足够的资源就可以搭建出实现任意指令的软核处理器。而FPGA针对不同应用的定制性很强,对于指令的需求其实不是那么的大而全。针对特定的应用,定制合适的指令,最终以最小的额外开销实现了辅助功能。这才是软核处理器真正正确的用途。Nios II系列原本是有很好的指令定制的机制的,但在过去一直没有发挥出应有的效果。而这一次Nios V的发布有望结合RISC-V指令集特有的技术优势在这一点上实现突破。
而从战略层面上来说,随着Arm和NVIDIA的合并进程不断推进。Intel和Arm的关系正在从微妙走向诡异。Intel对于RISC-V指令集也是“觊觎已久”。在8月份的时候还传出过Intel要收购基于RISC-V指令集的处理器IP提供商SiFive的传闻。虽然最后传闻被证明不实,但空穴来风必有源头。而此时推出基于RISC-V指令集的软核未尝不是一种战略部署。如果再大胆设想一下,Intel未来是否会推出RISC-V指令集硬核处理器的SoC-FPGA其实也未可知。
不管怎么说,Intel对于Nios的革新即是软核处理器领域的一次变革,又是RISC-V指令集取得的又一重要进展。未来在嵌入式领域,
RISC-V指令集的影响力还会持续增强。
黄乐天,电子科技大学电子科学与工程学院,副教授, 电子科技大学博士。主要研究方向为计算机系统架构与系统级芯片设计、多芯粒集成微系统,已在IEEE Transactions on Computers (CCF A 类期刊)等高水平期刊和CODE+ISSS、FCCM、ASPDAC、ISCAS等顶级会议上发表高水平论文50 余篇,申请专利30余项,出版著作《FPGA异构计算》1部。参加工作以来主持和参与过国家级重点科研项目多项。曾荣获Altera公司(Intel PSG)金牌培训师、 第七、第八、第十二届研究生电子设计大赛优秀指导教师、电子科大网络名师等称号。
*免责声明:本文由作者原创。文章内容系作者个人观点,半导体行业观察转载仅为了传达一种不同的观点,不代表半导体行业观察对该观点赞同或支持,如果有任何异议,欢迎联系半导体行业观察。
今天是《半导体行业观察》为您分享的第2815内容,欢迎关注。
『
半导体第一垂直媒体
』
实时 专业 原创 深度
识别二维码
,回复下方关键词,阅读更多
晶圆|集成电路|设备
|汽车芯片|存储|台积电|AI|封装
回复
投稿
,看《如何成为“半导体行业观察”的一员 》
回复
搜索
,还能轻松找到其他你感兴趣的文章!