决胜HLS,算法先行-简述算法的重要性

本文转载自:ilovefpga微信公众号

什么是HLS

高层次综合(High-level Synthesis)简称 HLS,指的是使用C、C++、System C 等高层次语言描述电路设计的逻辑结构,以及编写对应的测试激励,借助高层次综合工具,配合高阶约束文件及优化指令自动转换成低抽象级语言(VHDL/Verilog)描述的电路模型的过程。

与传统单纯的RTL设计开发与验证流程相比,高层次综合可以在多种算法(如矩阵计算、图像处理、通信领域等)建模与开发应用方面带来数倍的设计与验证效率提升,可以有效的缩减研发周期,加速产品上市的时间。这也是HLS越来越被强调和重视的原因,也是当前拯救项目出现延期最有利的举措。

导读

相信大多数工程师都看到过这样一篇报道,国内知名科技公司华为曾花重金在国外一位小伙子的居住地附近修建了一所研发中心,起因是华为看上了一位俄罗斯的数学家,并以重金聘请来中国工作,却被这位小伙子婉拒,但是任大老板很惜才,于是就以数倍于薪资的花费在小伙子家的附近修建了一所华为研发中心,并聘请小伙子来上班,然而小伙子上班后就天天坐在电脑前敲击键盘自己捣鼓自己的,领导过去视察他也不理会也不和人交流。

当其他同事都觉得这次任大老板看走眼的时候,突然有一天这个小伙子汇报说自己突破了一个关键算法,然后任大老板派相关测试人员过去测试,发现这个小伙的算法运行效率要比当时对手的快一倍以上,后来这个关键算法就被用在了华为最新的通信算法领域,对华为的技术突破做出了重大贡献。

另据媒体报道,去年甚少露面的华为创始人任正非在接受媒体采访时表示,做芯片光砸钱是不行的,企业更需要物理学家、数学家。任大老板透漏,华为至少有700名数学家。

算法的重要性

算法是计算机科学中最重要的基石之一,Ta可以是一套解题思路,也可以是一段数学表达式/数学公式,还可以是一套逻辑思维或者策略机制。但是算法的研究都是带有革新或者创新价值,其真谛都是为了更好的优化性能参数,发现更多的特性,更多的采用串转并解题思路等,从而提高计算效率,降低成本。

在产品系统设计之初,关键算法的设计及选取至关重要,要求既能满足设定的系统指标,又要尽可能的降低对硬件性能的依赖,所以优秀算法的评判标准是性能资源比,即用最少的资源实现最好的性能。

同时硬件的性能会随着硬件加工工艺水平的发展而不断提高,而硬件资源的功能也会随之不断演化和推陈出新。比如XILINX的FPGA中乘法器的运算速度和结构就一直在变化,运算速度越来越快,结构也越来越复杂,增加了很多控制信号,内部的架构也发生了变化,已经不再是简简单单的乘法器,而是一个可配置成多个函数功能,并可以精确控制数据流延迟的DSP单元。相应的算法也需要随之进化并相适应,不但以前限于硬件性能而不能使用的算法会有新的应用空间,新的硬件资源的出现也会影响老算法的实现方式和效率,这都需要算法工程师紧跟系统需求的变化和硬件水平的发展的步伐。

算法革新的核心价值

对高新科技输出型服务公司来说,最核心的技术人员有三种,系统工程师、算法工程师以及测试工程师。系统工程师决定了公司能做什么产品以及软硬件系统分割,算法工程师往往决定了公司能不能做好产品,而测试工程师专注于整套系统的功能正确性以及可实现性。三者之间分工明确但又相辅相成,算法工程师在系统工程师层面扮演助演嘉宾,但在测试工程师层面担当导演角色。算法的革新直接影响到系统的性能、系统的测试规划,以及整个系统研发周期,还有产品的核心价值。

产品的设计过程就是解决一个个技术问题的过程,系统指标是算法选择和设计的目标,而算法可以反过来影响系统的架构和组成。

硬件应该是为系统和算法设计服务的,不能盲目的追求硬件平台的通用化设计。如果采用传统设计思路通过堆叠硬件/芯片用于满足系统的设计性能或者资源占用,而不做算法的更新,这种设计思路是不可取的。低效的算法可能会耗费大量人力物力,拖延产品的研发周期,让产品的研发陷入困境。而优秀的算法往往可以化腐朽为神奇,能大大降低产品的成本,增强公司的产品竞争力,直接在市场竞争中取得领先优势。

比如某些信号处理设备/产品,其信号处理系统对体积和功耗不敏感,只对高性能的计算能力和大的传输带宽有要求,所以就可以根据处理能力和传输带宽划分,按高中低档做成几款标准的板卡或机柜。而针对有些空间和功耗受限,甚至空间常常是异形的产品需求,标准的板卡设计就显得不合时宜,不能充分利用产品的空间结构,导致系统冗余性大,算法设计不能根据系统实际的性能需求进行优化。在这种情况下,算法设计实际上被硬件平台给绑架了,不能得到一个优化的系统设计。

算法实现和HLS的紧密联系

强悍的算法工程师可以根据设计功能要求及硬件特性,结合算法的本质手动编写出性能优越、资源占比符合要求的RTL代码,这一类算法工程师应该受到特殊“照顾”,他们是不可多得的人才;相反的,另一类算法工程师会借助业界流行的算法开发工具,然后使用高层次语言编写出符合以上要求的算法模型,接着交由FPGA开发人员手工翻译成RTL语言,往往这个工作量是非常巨大的,复杂算法甚至会出现无法完成,造成项目延期的后果。与此同时业内就诞生了HLS(高层次综合)设计服务的技术输出型公司,这类公司可以在较短的时间内完成对算法原型的性能评估或是到FPGA设计实现,直接可以交付RTL源代码,还可以做到有指向性的时序优化和资源优化,达到用户指定的设计性能要求。

HLS设计服务对算法革新带来了更加便捷的设计实现,可以在系统设计早期完成性能评估和资源评估,然后可以在较短时间内完成RTL代码的交付以及FPGA的设计实现,产出比更好,效率更高,从而节省财力物力以及人力成本。

总结

决胜HLS,算法先行,注重算法研发及算法革新的技术性公司,必然占有市场绝对的技术核心竞争力。

推荐阅读