稍微吐槽了一下binggo小朋友,年轻人就开始激动了……
不过我发现了一个问题,binggo小朋友好像从来不投我的票,但是他的票我倒是经常投,这……。
可重构这玩意是10多年来可编程逻辑研究领域热议的话题,不过随着越来越多的人过来趟这趟浑水,这三个字已经被严重的滥用了。而且最初提出的reconfigurable这个英文直译应该是可重配置,reconstruction才应该直译为可重构。由于翻译上的混乱,软件也有重构,可编程逻辑也有重构,其它的硬件如天线也有重构,到了机械层面还是有重构(比如变形金刚,整个机械系统的传动结构就完全变了)。对于这个问题如果要扯开了讲可以讲很久,现在不是这个主题就不多说了。不过总而言之,如果ZYNQ仅仅停留在用可编程逻辑定义不同的接口的层面,很明显和现有方案比缺乏更明显的吸引力,定制专用逻辑从而实现算法加速才能更进一步的发挥其效能。
回过头来看看现实一点问题,上个月去杭州培训,ARM和Xilinx联合办了,上面演示了一下Vivado用C语言开发的XX算法的加速器(某种滤波算法,本人不是搞图像的,不甚了解),展示了如果只让软件在ARM上跑和用C语言映射成了专用加速器以后出来速度的差别。然后和他们的工程师交流了一下(其实就是两个实习生,不过能力确实不错,新生代的工程师学习新的设计方法接受速度确实很快),大致说了说All Programming的情况。提到了目前即使用C语言进行逻辑设计,仍然需要代码风格上面的注意之类的。但总的说来已经是一个很大的进步了。C to silicon喊了多少年,到目前来看确实已经慢慢的落地了。之前也出现过不少所谓的C to silicon,但是那些都是经过“扩展”或“变异”后的C,并不比Verilog方便多少,搞不好还得有更多的麻烦,因而也就是风吹而过,没有留下什么。这次如果能够有切实的进展,那是对电子系统设计设计方法的又一重大改进。但鉴于之前多次“C to silicon”的问题,这次我只能保持“谨慎乐观”的态度静观事态的发展。
前面说了N个应用领域,本来说要逐一解释,但我发现我其实漏掉了一个大领域:科学计算与数值分析。今天先说说这个。
科学技术与数值分析长期以来都是计算机科学研究的热点,若干次计算机领域的重大突破都是在研究科学计算时予以突破的。到目前为止,超级计算机也主要是用于各类科学计算。
以往的科学计算和数值分析属于是“阳春白雪”、“曲高和寡”,但随着人类社会进入了信息时代,信息的爆炸引发了数据的泛滥。如何抵御这滚滚的数据洪流,确实需要有更新的技术手段。当然,继续用传统的大型计算机或者超级计算机也可以,但是这不但成本高昂而且费时费电。这方面用ZYNQ可以搞点事情出来么?
科学计算和数值分析这类计算问题的特点是算法复杂而且数据量大。数据量大这个问题FPGA倒是不怕,但关键在于算法复杂。前面已经分析了FPGA的传统应用领域大多属于上电以后就按部就班吭哧吭哧干活的领域,而复杂算法往往是分支特多,循环嵌套,运算过程中需要复杂的控制,这类算法单纯靠FPGA来做是玩不转的。而研究科学计算或者数值分析的人,往往又缺乏FPGA设计的背景。这些人员要么是某个领域的科学家或数学家,要么是数据分析师、金融从业人员等……因而大家都愿意在传统的方法上面呆着。
其实用FPGA做数值分析在国外兴起的应该比较早。大家都知道老美早几年就不玩实体经济,大量的去搞所谓的“金融创新”。因而大量EE/CS的研究人员开始跨界到了金融的圈子里面去,也由此衍生出一个新的学科“金融信号处理”。而美国花旗之类的老牌银行也已开始采购FPGA用于数值分析,预测经济趋势和设计金融产品等。ZYNQ由于其ARM+FPGA的单片方案可以实现ARM与定制化逻辑之间的高速数据传输,如果Vivado的All Programming再往前一步走到比较实用的状态,让懂点C语言编程的数据分析师之类的也能用起来。加速以后的运算速度不用太快,一块或者两块板子只要干得过普通PC机就成。如果能达到这一步,估计这些非传统领域将是最早接收All Programming设计方法的。