软件和硬件的联合设计在过去二十多年,一直是产业界关注的重点。从技术角度看,这种结合能够带来更好的性能提升,更低的功率损耗。但随之而来也会带来新的问题……
为了降低晶体管尺寸,提高性能,降低功耗和提供安全,芯片制造商越来越重视软件建模。 回溯半导体产业软件建模的演变,可以追溯到上世纪90年代的软硬件联合设计,当时的大型芯片制造商和系统公司采取了这种方案。尤其是随着客户对芯片需求的日益增加,这些日益复杂的SoC就必须内置驱动和嵌入式代码,导致软件的流行。 而随着晶体管尺寸的变小,带来了芯片功耗和热量的问题,除了大公司,很多小公司也开始将目光投向了半导体产业的软件建模。 有几个因素导致了技术“方程”的转变: (1)主流的工艺节点已经集中在65nm以下,这就让漏电电流成为产业关注的首要问题;
(2)越来越多依赖于电池供电的移动设备,让芯片功耗成为关注重点;
(3)很多芯片采用了异构系统设计,让其整体的功耗预算比过往更紧张,而新时代的设备需要频繁与外界通信,传输数据,这无疑加剧了功耗问题。
最初,我们解决问题的方式是增加芯片的核心数,但这会导致一个新的问题,那就是对大多数应用来说,究竟多少个核心才是正确的选择?在很多的应用方案里,即使在现在强调多线程和并行计算的大潮流下,两个或者四个核心是最优的选择。
从某个方面看,根据硬件内部“交流”方式的不同,可以引致软件的改变。例如可以在一个处理器周期内,通过软件让芯片执行更多的工作。同时它也能有两个核心,有可能多达八个核心。尤其当其中的一些工作能够被解析成不同的操作,这种方案就更有效了。
同时软件还能提供更高的弹性和可靠性,在设计周期早期阶段介入,给设计提供帮助,并在产品上市之前清理掉这些代码,而不是通过后期添加补丁的方式实现。
Cadence的Frank Schirrmeister表示,软件建模的目的是构造软件和硬件互相影响的新模式,例如包含了重组序列,减少缓存的重载,而这会对功耗造成很大的影响。
软件建模也会对设计流程产生重要的影响。软件的改善能够影响芯片设计过程中资源的选择,这包括了存储类型、处理器类型和硬件加速器。这种模型同样能够使得软件和硬件之间的“交流”变得更加高效。
而根据eSilicon Mike Gianfagna的观点,当中的关键就是系统级别的软硬件平衡。
“功耗将会是大家持续关注的问题,他们在上面做了很多的分析和改变。而在关于软件如何影响硬件上面,也有很多不同的做法和观点,所以说仿真在最近几年才变得越来越重要。”Mike接着说。
Mike认为,这将会是非常有用的。
相比于过去,现在的“消防演习”将会越来越少,尤其是在大型设计里面,客户的要求越来越复杂,且他们对于系统的需求也很具体,对于晶圆级别的功耗也有很明确的要求。这就推动了复杂的软硬件联合设计的发展。
对系统的重新思考在这种软件潮流背后,是一股转向更多系统级设计的趋势,而这种趋势已经在软件和硬件领域持续已久。但在很多例子中,软硬件的并向进步比两者的联合解决更受欢迎。但物联网的出现,推动了新的转变。
在物联网中,由于大多数情况下资源都是有限的,同时对这些设备来说,cost down的需求是很重要的。解决这些问题的一个重要方式就是提供系统本身的效率,这样就可以让架构师去设计更低成本的微处理器,转变存储的混合类型。
Mentor Graphics的Darrell Teegarden表示,这种转变不是说有更多更酷、更快的处理器,更重要的是这种方式对行业造成的影响。
现在有越来越多的高级别平台,这些平台通常都包括了计算硬件、传感器、执行硬件、控制传感器和执行器的软件,平台的战争也即将点燃。因此你需要对这些有一个大概的了解,为自己寻找最合适的解决方案。
Cadence的Schirrmeister也认同这种观点。他认为这种方式对某些应用来说非常有效。但对另一部分的应用,这可能就没那么强大了。假设你关注边缘计算,这就需要一个软件模型,一个营建模型,或者一个软硬件结合的模型。
这种软硬件模型的分析和探索已经存在一段时间了,但直到最近才流行起来的。
“有很多公司已经打造了应用负载模式,利用其去实现应用处理和通信需求”,Synopsys的Pat Sheridan说。当中包含了相关性、每个任务有不同处理器的处理器周期,还有对不同区域的执行读或写的内存访问等并行任务。
这类工具的一个好处就是它能够提高抽象层的级别,这样的话在功能测试的时候就不需要针对软件建模。当中的关键就是能将应用负载需求和resources分离开。你可以将任务映射到resources上,同时你也可以联合不同的CPU和加速器。
物联网和安防工具供应商表示,最初这些工具只是为移动市场准备,现在他们开始将其推广到其他市场,当中包括了汽车、物联网和服务器应用。
特别是在物联网领域,由于对安全有很高的需求,所以他们特别关注软件建模。
现在的软件涵盖了高端到低端。而那些经过验证的高端软件开始逐渐“入侵”简单的设备。ARM的Bill Neifert说。在物联网领域,这主要是安全驱动的。这些软件能够加强对攻击的防御。
安全问题是全球IC设计者关注的问题,它能够影响软件的每个层级。例如在一个通信芯片里,包括整个通信栈、IP、I/O、硬件元器件,还有芯片内外的存储和总线,都会有可能面临安全威胁。
安全和效率问题来到IoT上面,给开发者带来的问题更多了。这就带来了新一代MCU的设计。这些MCU能够应对多样化设计产品的功能需求和成本压力。
ARM的Neifert表示,在过去一年,MCU领域的软件建模需求快速增长。由于功耗限制,你在设计芯片的时候对PPA有严格的需求,另外还要着重考虑安全问题。
当然,关于软件建模和硬件联合设计能给设计带来多大的效率提升这个问题,是没有明确的答案的。三星在十几年曾经做过一个测试,测试结果显示性能提升了50%。从三星当时的报告开始,业界正在改变,但基本规则是不变,而安全是方程式需要平衡的另一个方面。由于现在逐渐开始流行的智能汽车和健康医疗对安全有更高的需求,安全也逐渐被导进到软件建模里。
在汽车电子里,考虑安全的话,芯片的设计有时候会比较冗余,有时候会导致芯片的集成电路的设计规模大50%。再过去的话,你可能会做这样的一个设计。但是现在,你需要确定你将要用哪一个版本的ASIL(汽车安全集成级别),再将其与性能、成本匹配,然后实现自己的目标。
大数据中心和高性能计算
发展到现在,半导体软件建模在大数据中心上起的作用也越来越重要。这主要是由需要在低功耗的情况下处理飞速增长的数据现状密切相关。
Cadence的Schirrmeister表示,他们正在针对包括大数据在内的某些特别任务做负载优化,而硬件和软件建模结合的模式很方便解决这个问题。
现在有很多人讨论FPGA在大数据中心的应用,因为在那里,软件和硬件的联合设计并不需要预先集成到芯片里。你可以额外添加一个数据处理算法到硬件架构里。当然在存储那边,也有操作的空间,因为你可以重构存储架构,改变数据出入的方式,这也可以称之为软件建模。
由于可以当做一个定制的加速器平台使用,FPGA近年来在大数据的应用越来越广泛。Rambus的Steven Woo说。FPGA的优势在于其有足够大的内存,其符合rack-scale架构。
在大数据中心,需要很多服务器。传统的配置会有CPU、I/O、硬盘和内存,这样会带来很大的成本。但这些服务器的负载并没有完美匹配,这样就会造成低效率的影响。因此如果能够完美匹配软件和硬件,并在两者之间做外媒的配置,那么大数据中心的效率就会显著提高。这就解析了为什么谷歌和Facebook这样的公司都在设计自己的硬件架构。例如谷歌的TPU,Facebook的Open Compute Project。
总 结
软件和硬件的联合设计在过去二十多年,一直是产业界关注的重点。从技术角度看,这种结合能够带来更好的性能提升,更低的功率损耗。但随之而来也会带来新的问题,那就是很难去衡量。
在很多的芯片公司,软件工程师是远超过硬件工程师的,他们对于通过购买什么类型的工具去协助改善功耗、性能和成本有重点的关注和见解。
最终的目标是降低时间和功耗。而最好的效果就是当你从Fab里把硬件拿回来的时候,所有的驱动就已经都内置好了。
|