老莫

论可重构计算的倒掉和云计算的兴起

0
阅读(6411) 评论(20)

 好久没有写技术性的博文了,今天有点时间,随便说两句。

 

哥们我做可重构计算的研究算下来也快5年了,经历了从懵懂到熟悉的过程。09年的时候还给研究生开讲座,讲了讲研究可重构计算的心得。

不过经过5年的研究,我不得不说:可重构计算的倒掉是必然的,而取而代之的是云计算的兴起。

为什么这么说呢?我们首先来看看可重构计算的提出是基于什么样一个目的和前提。可重构计算是的出发点是想让计算兼顾硬件的高效性和软件的灵活性,以可编程/可配置电路或芯片为基础,让硬件的电路结构随着计算的运行按需发生改变,从而实现算法加速。但注意这是基于以下前提:1、软件运算速度不够快,因此必须要用硬件加速的办法提高运算效果;2、硬件资源不足,所以不能直接把硬件做死,需要它灵活的变动以适应不同的算法。

那么我们来看第一点,软件运算速度不够快,这是永远都存在的问题。人们总是欲求不满,随时随地都想要更好的。现有的计算机都是电子计算机,其运算能力受限于基本的电子学定律,虽然这么多年速度一直在提升,但是总还是不断有新的需求出来赶超性能的提升。更何况同时期底层电子元器件技术的发展速度总是要慢于人们需求的发展,因此采用多种手段实现运算加速也是对的。那么再看看第二点,也就是硬件资源不足。什么时候会出现硬件资源不足呢,通常有以下三种情况:钱太少、体积小、功耗低。钱太少,这个好理解,任何硬件都是要花钱的,无论是一根电阻还是一个管子,都是要花真金白银的。体积小嘛,硬件是一个物理实体,既然是物理实体就会有体积,虽然现在的管子能够做到多少多少nm,但总归是有的。功耗低,有一个电子元器件就多了一个耗电的玩意,很多时候电子系统能量供应是受限的。那么综合这三点下来可重构计算最适合的其实是移动终端,尤其是需要很高性能的移动终端。首先,移动终端体积小,这个不说了。体积大的那个叫步话机。其次功耗要低,这是自然的,移动设备都是电池供电,用完就没了。第三点钱要少,这不是绝对的,但是如果不是给少数人用的高档货,终端的钱肯定是要大大少于局端的。

但是我前面说的这些还有一个前提,就是计算要在本机完成。因此才会在移动终端体积小、功耗低、价钱少所带来的硬件受限的条件下追求更高的计算性能。但是如果我们换一种思路,计算并不在本机完成,而是在云端完成,也就是现在常说的云计算。那么移动终端所需要提升的就不是计算能力,而只需要专注于提升通信能力即可。换言之,在云计算时代,移动终端不过是显示和输入设备,整个计算过程是在远端的计算中心完成的,对移动终端本身的计算能力的要求就大大降低了。换言之,可重构计算最大的一个应用场景就已经不存在了。

那么又会引出来两点问题,1、移动终端变成了输入和输出设备,那么对输入输出设备本身就没有进一步提高性能的需求了么?2、处于云端的计算中心的性能又如何解决,可重构计算是否有用武之地呢?对于这两个问题,我个人的理解是这样的。可重构计算之所以是要重构,追求的就是灵活性和性能兼顾,如果单独追求性能的话,完全不必要采用可重构计算这一模式。原来移动终端终端的计算是在本机完成的,这种计算是通用计算,也就是说计算任务是多种多样的。这就需要考虑灵活性的问题。而如果转变为单纯的输入输出设备了,那么其功能实际上上就变得更加固定了,对灵活性的要求也就大大降低了,完全可以采用固定硬件加速这一效率更高的模式来完成各项功能。对于计算中心而言,则基本不存在硬件受限的问题,可以大量使用硬件加速单元。对于计算中心这部分我研究得不多,就不好再说什么了。

最后要谈一点的是,可重构计算虽然必然倒掉,但是可重构设计方法学或者可重构技术却不会消亡。只是不再适用于提高硬件灵活性实现算法加速这一应用点而已。以后可重构技术可以用于提高系统可靠性、稳定性等其它应用上,对于此我们正在从事新方向上的研究,希望不久之后我能公布最新的研究成果。
  1. @老莫   

    现在的重构技术确实已经足够用了。且不说10年前Xilinx就推了部分重构(虽然工具极其难用),现在SoC-FPGA如果用基于OpenCL的开发流程。基本就是一条命令就可以完成重构。


    FPGA相对于GPU的优势是更接近于IO且定制化程度更高,所以能效会做得非常的高。云计算最大的消耗是电费,包括服务器耗掉的电费和为服务器制冷的空调电费。如果电费一年少掉一半,钱就是最大的竞争力。


    明白,但是最近调查FPGA和最新的GPU貌似能耗比没有想象中那么大啊?

  2. 百度https://www.taobao.com

  3. https://www.baidu.com/

  4. @aet_touch   

    了解

    我之前理解的静态重构是重新上电,重新烧板子或者是云用户要开发FPGA的工程。而动态重构是将相应算法放在SRAM里面,需要使用的时候直接拉出来用

    那其实,更多的是用来作为通用设施。

    虽然看来咱们说的重构意思不那么相同。但是可重构的技术和理论应该目前来说已经是足够用了。

    莫老师,那其实按现在FPGA使用的话,其实现在关键不是可重构的部分讨论,而是如何在操作系统层面去更好的使用,或者说就是异构的东西。

    但这样的话就又有一个问题,同样是并行计算,FPGA和GPU相比到底还有什么优势呢?毕竟GPU生态(语言,场景等)和速率上貌似强的太多了

    现在的重构技术确实已经足够用了。且不说10年前Xilinx就推了部分重构(虽然工具极其难用),现在SoC-FPGA如果用基于OpenCL的开发流程。基本就是一条命令就可以完成重构。


    FPGA相对于GPU的优势是更接近于IO且定制化程度更高,所以能效会做得非常的高。云计算最大的消耗是电费,包括服务器耗掉的电费和为服务器制冷的空调电费。如果电费一年少掉一半,钱就是最大的竞争力。

  5. 了解

    我之前理解的静态重构是重新上电,重新烧板子或者是云用户要开发FPGA的工程。而动态重构是将相应算法放在SRAM里面,需要使用的时候直接拉出来用

    那其实,更多的是用来作为通用设施。

    虽然看来咱们说的重构意思不那么相同。但是可重构的技术和理论应该目前来说已经是足够用了。

    莫老师,那其实按现在FPGA使用的话,其实现在关键不是可重构的部分讨论,而是如何在操作系统层面去更好的使用,或者说就是异构的东西。

    但这样的话就又有一个问题,同样是并行计算,FPGA和GPU相比到底还有什么优势呢?毕竟GPU生态(语言,场景等)和速率上貌似强的太多了

  6. @aet_touch   

    不好意思,之前的评论没有写到点上。我的意思是说

    越大规模的计算中心,可能需要数量极多的FPGA,如果静态重构下用于某种加速算法也就意味着和asic无异;动态可重构才是运算资源的最大化利用,当然也就意味着成本的下降。

    也就是说单纯的异构和流片asic应该差别不大吧,只有把重构放到异构中去用才是FPGA真正的竞争力所在吧。


    其实静态和动态都是相对的,到底是1分钟变一下叫动态,还是1秒钟变一下叫动态,还是1ms变一下叫动态?

    FPGA本身就具有可编程的能力,时不时去刷一下FPGA,调整适应一下负载均衡。这也没什么好说的。肯定是可以做到也早就可以用了。另外在云端业务有“聚集”效应,是不是需要很细粒度的重构?要不要非常频繁的动态重构?目前看来,依然是不需要的。

    而原来的那种“动态重构”追求的都是运行时重构。理想的状态是随着应用的变化而重构,以非常局限的资源来实现复杂运算的加速。很显然,这种追求到今天来看依然还是没有意义。

  7. 不好意思,之前的评论没有写到点上。我的意思是说

    越大规模的计算中心,可能需要数量极多的FPGA,如果静态重构下用于某种加速算法也就意味着和asic无异;动态可重构才是运算资源的最大化利用,当然也就意味着成本的下降。

    也就是说单纯的异构和流片asic应该差别不大吧,只有把重构放到异构中去用才是FPGA真正的竞争力所在吧。


  8. @aet_touch   

    请问莫老师,可重构计算正好又出现来解决问题了呢?

    1云计算的功耗问题呢(大规模的计算中心)

    2由于不同的加速算法用于云上导致用户的绝对数量增加,每个FPGA加速器的成本下降。

    现在关注的重点并不是“重构”,而是“异构”。可重构并不是指用FPGA来做加速器,用FPGA来做加速器那叫异构计算。

  9. 请问莫老师,可重构计算正好又出现来解决问题了呢?

    1云计算的功耗问题呢(大规模的计算中心)

    2由于不同的加速算法用于云上导致用户的绝对数量增加,每个FPGA加速器的成本下降。

  10. @老莫
    谢谢
  11. @ii04soc

    重构——核心是改变架构或者结构,而异构——只要有两种不同架构的计算设备就算是异构。异构不一定要变,只要存在不同即可。异构和重构作为修饰词用在不同的地方可能内涵和外延有所不同,但是这两点最核心的区别是有的。比如所谓的异构网络,有3G/4G和WiFi一起部署并协同的网络就叫异构网络。

    我猜你想说的是异构计算。异构计算本没有什么稀奇,用多种不同架构的计算设备来完成一个大型任务或者完整功能是早已有之的。其实嵌入式设备一直就是异构的,什么FPGA+MCU,DSP+MPU等等。异构这个概念只是做通用计算的人,原来只玩CPU,后来发现GPU拿来做做运算加速也很好。但是习惯了一套工具玩到底,于是想从开发方法上面统一去开发不同的计算设备。于是有了OpenCL这一套标准。

    如果说异构计算和可重构计算有什么关系的话,其实他们本来没什么关系。如果把一种具备可重构能力的器件作为整个异构计算系统的一部分,那么他们也就勉强扯上了一点关系。比如最新的DE1-SoC开发板,友晶公司提供了整合OpenCL和FPGA重编程能力的一套开发流程。在系统运行过程中通过内嵌的ARM处理器脚本命令将之前编译好的OpenCL代码对应文件“刷”进FPGA里面去,FPGA内部的电路结构被改变,相应的功能也被改变了。

    对于可重构的还有什么方法在当前的环境下发展,我认为暂时没啥发展。不过30年河东,30年河西。云计算也不过是当年主机-终端模式的复兴。再过10来年,云计算没落了以后也许可重构计算又会再回来。但也许也就彻底没有机会了——那是不知道是不是量子或者光子的时代了。

    还有的可能就是做点专用系统,面对非常特定任务。但那都是小众领域,属于个案处理。

  12. @ii04soc

    因为云计算提供了一种新的提高性能的方法——把计算卸载到云端上去。因此,以本地有限资源去“辗转腾挪”的重构进而提高性能的这一技术路线自然也就没落了——因为问题不在这里了。

    我博文都写清楚了,没读懂的话就多读几遍。

  13. 那可重构计算现在还有什么方法在当前环境下的发展方向呢,异构和可重构有联系么?
  14. 可重构计算不是因为提高性能才兴起的么,博主为什么说只能用在提高可靠性的方面?
  15. @superdianzifans
    目前最基本的一个应用是:在航天领域的星载设备中,FPGA定期“刷机”防止内部由于单粒子反转造成的逻辑故障……