软件定义芯片(上)(精)
作者简介
内容简介
第1章 绪论
We are firmly convinced that when a special purpose configuration may be accomplished using available facilities,a new level of inventiveness will be exercisable.
我们坚信,当(电路)资源足够丰富从而能够实现任何特定目标的配置时,将会实现颠覆性的创新。—Gerald Estrin,Western Joint Computer Conference,1960
近年来,随着社会和科学技术快速发展,计算芯片对性能、能效和灵活性的需求不断增长。大量新兴应用对计算能力的需求远超从前。过去几十年,集成电路工艺技术的进步是提高计算结构能力的主要措施之一。然而,随着摩尔定律和登纳德缩放比例定律放缓甚至走向终结,这一方法正在逐渐失效。众所周知的功耗墙问题的出现使得集成电路的功耗约束在许多应用中变得更加严格。集成电路工艺进步带来的性能收益越来越小,这使得硬件架构可实现的计算能力受到严重限制。因此,计算机架构设计师不得不将注意力从性能转移到能效上。同时,计算电路的灵活性也成为不容忽视的设计考量。新兴应用不断涌现、用户需求持续增加以及科技能力快速进步,软件升级越来越快,不能适应软件变化的硬件实现形式将面临生命周期过短和一次性工程成本(non-recurring engineering,NRE)过高的难题。总体来说,能效和灵活性已成为计算架构最主要的评价标准。
然而,对于主流计算架构,满足这些新需求极具挑战性。专用集成电路(application specific integrated circuit,ASIC)能效虽高,但不具备灵活性;而冯 诺依曼处理器,如通用处理器(general purpose processor,GPP)、图形处理单元(graphics processing unit,GPU)、数字信号处理器(digital signal processor,DSP)虽足够灵活,但能效太低。现场可编程逻辑门阵列(field programmable gate array,FPGA)因具备定制实现大规模数字逻辑、快速完成产品定型等能力而被广为使用,在通信、网络、航天、国防等领域拥有牢固的重要地位。然而,其单比特编程粒度、静态配置等本征属性造成了能量效率低、容量受限、使用门槛高等问题,无法满足不断提高的应用需求。近年来,通过采用扩大硬件规模、异构计算、高级语言编程等方法,FPGA进行了持续的技术升级,但受其本征属性限制,上述问题始终未能从根本上得到解决。如果FPGA的基础架构不发生根本改变,其未来将困难重重。软件定义芯片采用以粗粒度为主的混合编程粒度与动态配置相结合的方式,可以从根本上解决以上制约 FPGA发展的技术难题,并同时满足能效和灵活性的需求。混合编程粒度能大幅减小资源冗余,提升芯片能效;动态配置通过时分复用能摆脱承载容量的限制,与高级语言配合可提高器件可编程性、降低使用门槛。美国国防高级研究计划局(Defense Advanced Research Projects Agency,DARPA)“电子振兴计划”2018年投入7100万美元,正组织全美最强力量开展软件定义芯片的联合攻关。欧盟“地平线2020”也对该方向给予了高度的重视和持续的研发支持。软件定义芯片已成为世界强国战略必争的研究方向。
本章首先从集成电路和计算架构的发展背景角度介绍软件定义芯片的概念演变,然后从传统可编程器件的发展、原理以及面临的问题出发论述软件定义芯片的颠覆性,最后介绍经典可编程器件和软件定义芯片的国内外研究及发展现状。
1.1 概念演变
软件定义芯片是一种关于“芯片架构(包括硬件层和软件层)设计”的新理念和新范式。传统的芯片架构设计范式总结如图1-1所示。通用处理器(中央处理器(central processing unit,CPU)、GPU、DSP)设计的模式是软件,通过将应用算法转化到命令式的软件指令串(或长指令、单指令多数据流(single instruction multiple data,SIMD)指令等),然后用硬件来实现每条指令及其流水、调度、控制机制,从而完成应用功能的物理实现。由于硬件本身的特性基本没有得到体现,无法充分发挥硬件本身的优势,因此这种方式的效率是最低的。传统可编程逻辑器件设计的本质是硬件,通过将硬件抽象为一个个空间分布的功能簇,由功能簇组合实现特定的功能需求。因为软件不包含硬件特性上的任何抽象,所以这种方式的编程易用性是比较差的。图1-2更深入地总结了芯片架构设计范式背后的问题。软件实现方式是串行的和时域切换的,灵活性高。硬件实现方式的计算模式则相反,是并行化的和空间展开的,性能与效率高。以通用处理器为代表的软件实现方式的设计路线忽略了硬件的空间并行性,而以传统可编程逻辑器件为代表的硬件实现方式则忽视了软件时分复用硬件资源的能力。总而言之,通用处理器可以看成“用硬件实现的软件”,而传统可编程器件就可看成“用户可配置的硬件”。
图1-1 芯片架构设计范式的对比(CGRA指粗粒度可重构计算结构,SoC指系统芯片,EPLD指可擦除可编辑逻辑器件)
图1-2 软件定义芯片的编程使用模式
软件定义芯片,作为一种新的芯片架构设计范式,希望能够打破软件和硬件间的隔阂,用软件直接定义硬件的运行时功能和规则,使硬件能够随着软件变化而实时改变功能(其硬件不仅可以在时域上不断切换功能,还可以在空域上支持电路功能的可编程),并能实现实时的功能优化,从而兼顾硬件的高效率和软件的高灵活性[1]。
与软件定义无线电(software defined radio,SDR)、软件定义网络(software defined network,SDN)等概念类似,软件定义芯片反映的是软件定义万物(software defined everything,SDE)的理念。在这些概念背后存在着更深层的动机,即信息社会发展速度已经远远超过许多底层设施更新的速度,人们逐渐希望底层设施可以变得灵活,从而降低底层设施的更新频率,避免其更新给设计和成本带来的庞大开销。例如,SDR概念从20世纪90年代就开始广泛流行,而那正是移动通信大发展的时代,多种数字无线通信标准(如全球移动通信系统(global system for mobile communications,GSM)标准和码分多址(code division multiple access,CDMA)标准)共存而且不能兼容,技术人员希望可以将不同频段信号转换成数字信号然后通过软件来统一处理,从而适应无线通信技术的发展。近年来流行的 OpenRAN概念本质就是软件定义无线网络,是 SDR和 SDN概念的延伸。伴随着5G技术的快速发展,市场上能够适应新技术、新标准并进行持续研发投入的厂家越来越少,而 OpenRAN正是应对这种情况的一种方法,并且已经得到不少国家(包括美国)和企业(O-RAN联盟)的支持。
软件定义芯片的出现是集成电路和计算架构技术发展速度赶不上社会发展需求的体现。下面从这两个角度出发介绍软件定义芯片出现的背景、原因和必然性。
1.1.1 半导体集成电路发展背景
集成电路制造工艺的发展使得硅芯片集成能力越来越强。从20世纪70年代晚期开始,基于金属氧化物半导体(metal oxide semiconductor,MOS)晶体管的集成电路工艺已经成为主流技术选择,开始是 N型金属氧化物半导体(n-type metal oxide semiconductor,NMOS)电路设计,然后是互补型金属氧化物半导体(complementary metal oxide semiconductor,CMOS)电路设计。集成电路技术的发展速度极为惊人,并成为提高芯片性能的关键因素。1965年,Gordon Moore预言,集成电路的晶体管数目每一年翻一倍,然后在1975年修改为每两年翻一番,并相当成功预测了半导体工艺迄今为止的发展[2]。然而,集成度的发展速度大概在2000年开始降低,在2018年已经与 Gordon Moore的预测值相差15倍以上,甚至还有扩大的趋势,如图1-3(a)所示[3],摩尔定律正在逐渐失效,距离物理极限已经越来越近[4]。而同时,另一个由 Robert Dennard做出的预测(登纳德缩放比例定律,Dennard scaling),即芯片功耗密度随着工艺尺寸下降而保持不变[5],则已经在2012年左右彻底失效,如图1-3(b)所示[3],使得功耗墙成为通用处理器的一个关键问题,能量效率成为集成电路设计的关键指标之一。
另外,集成电路制造工艺的发展还带来了设计和制造成本的飙升。如图1-3(c)所示,工艺线成本和设计费用的不断提高,使产业内具有最先进芯片研发能力的公司越来越少,目前5nm和7nm工艺基本只剩下苹果、英特尔、高通、英伟达等公司能够跟进设计(注意它们做的都是通用芯片)。同时芯片的一次性投入增加,也要求生产更多的数量来摊薄成本。所以芯片设计需要尽可能兼顾越来越高的性能需求和一定范围内的灵活性。
图1-3 集成电路的发展(见彩图)
1.1.2 计算芯片体系架构发展背景
在现代信息化社会中,大量新兴应用,如神经网络、云计算和生物信息学等,对计算能力的需求越来越高。如1.1.1节所述,集成电路工艺的发展在过去数十年带来了性能、效率、容量上的稳固提升,相比而言,计算机体系结构发展带来的进步要小得多。如今,计算芯片的主流架构设计如 CPU、GPU、DSP等仍然是以冯 诺依曼结构为基础,其指令流控制的计算过程是通用的和图灵完备的。但是,为了确保灵活性,通用处理器设计时包含了大量取指、译码等非算术逻辑单元,因此它在计算过程中的额外能量开销非常大,计算的能量效率比偏低。以14nm工艺下一个典型 CPU,Xeon E5-2620(4发射乱序执行处理器)为例,它完成 Smith-Waterman算法(用于基因分析)单次迭代需要消耗81nJ的能量。相比之下,40nm工艺下的领域定制处理器 Darwin只需要3.1pJ的能量就可以完成一次迭代,其中只有0.3pJ消耗在计算上,而2.8pJ消耗在访存和控制上[6]。可以看到,对于一个现代处理器,实际消耗在计算资源上的功耗非常低,甚至可能小于1%,大量的功耗都消耗在了取指、译码、乱序重排上。这些额外的能耗开销加剧了当今通用处理器的“功耗墙”问题:集成电路散热工艺决定了功耗的上限;登纳德定律的终结意味着最高工作频率已经难以提升,借助新工艺不断提升芯片性能的时代即将终结;而大量的额外计算开销意味着计算效率低,难以有效利用工艺提供的计算能力。因此,新型计算芯片架构设计已经迫在眉睫。
“牧村浪潮”是对计算芯片发展规律的一种归纳加预测。早在1987年原日立公司总工程师牧村次夫提出半导体产品将每十年按照“标准”与“定制”的方式波动一次,也就是说芯片的设计方法会在更倾向于灵活性即通用和更倾向于效率即专用之间波动。1991年他将该想法正式发表在Electronics Weekly上,称为“牧村浪潮”。它的正确性被近年来可编程芯片的快速发展所验证,进而得到了众多可编程器件公司的响应,产生广泛的影响力[7]。德国凯撒斯劳滕大学的Hartenstein教授把它进一步称为“牧村定律”。他修订了第五波(1997~2007年)为低效的现场可编程通用计算;第六波(2007年以后)为一个长波,以粗颗粒度可重构计算为主要特征[8]。Hartenstein教授认为在集成电路特征线宽逼近物理极限的情况下,“牧村定律”完全可以成为类似于摩尔定律的产业规律,指导集成电路技术继续高速发展。在“牧村浪潮”的基础上,中国工程院许居衍院士在200