所以一定要让硅片上的晶体管不能同时工作,那怎么办呢?答案是多核。多核不是说我想搞多核,而是不得已而为之。但是如果我还想得到非常高的运算能力——1ms要做很多很多运算,但是我又不能把所有的晶体管全开开,是不是就矛盾了,没办法解决了?那我们再另辟蹊径。
大脑的启示
一个好消息是晶体管现在已经不值钱了,也就是说既然一块芯片里一定会有晶体管不开,我们就一定要大大地放纵我们的设计空间,我们宁肯用一大堆冗余的计算单元提前摆在那,用其中一两个跑,其它一百个都不用,这件事是对的,因为你不得不这么做。这思路慢慢清晰了。有一种计算机实际上就是这么干的,就是人的大脑。人脑的皮层90%是没用的,只用其中一小部分。
我们再回过来看目前的情况,CPU很有意思,它一天到晚都没在干正事,都在弄流水线,最后干了一件事啥事?就是做了一个加法。也就是说百分之七八十的硅片都在为了满足这一个高速运行的累加器,给它喂饱,喂饱这个累加器有好多分支预测,什么乱七八糟的读Cache(高速缓存),就是为了搞高速运算的一个单CPU。这件事情很不合逻辑,我用了这么多硅片,折腾了这么半天,最后算成个加法!原来,当初冯.诺依曼设计计算机的时候,晶体管和ALU(算数逻辑单元)很贵,因此利用便宜的memory是很划算的。冯.诺依曼计算机就这么一路走过来,大家也跟着吭哧哼哧地推一步走一步,也不想创新,CPU不停地增加它的时钟频率,结果到今天再怎么做也难以翻番了。
所以有人提出,最好把这套东西全推掉,我全都弄上运算单元,这些运算单元可根据计算的任务随意组合,马上就能做运算,动态组合、动态植入,那么整个面积都是运算单元在做事。这件事情实际上就是我们人类大脑干的活儿。人类的大脑实际上是一个并行的计算机。前段时间,IBM刚发表一个消息,说是做了一个人工神经元的超级计算机,最核心的特点就是其神经元可以动态存储,也就是说不同的信息他训练两天之后,它就连接成一个可操作的部分,而且功耗特别低。
没有处理器,还要做计算
因此,我们要做什么事呢?Computing without Processors(没有处理器,还要做计算),这就是我们今后十年或许能够应对挑战的法宝。也就是说我们能够通过硬件的可重组、可重构,能够在硬件层面重组出来正好适合计算的能力。我们不需要再为流水线、cache发愁了。
Xilinx有个Vivado-HLS工具,可从C实现FPGA。你可先做一些低层次的东西,就是所谓的HLS,Vivado-HLS能把算法直接变成硬件实现,也就说你的计算单元已经没有CPU了,但又是高效的。如果你嫌烦的话,可以用碎片来做,然后就被大量地收集了,然后它做线上的工具。
假设Xilinx的Zynq处理器就是大脑,有一大堆单元,你什么都想干,但是嫌设计太麻烦了,ultrascale构架把你要用的东西准备好,CPU有了,加密引擎一大堆,你要一百个,还是一万个加密引擎都行,还有浮点运算单元,你想要什么图形引擎(GPU),我给你放上三万个GPU进去,你再用可编程的逻辑把它们连到一起,满足你的需求。这个方案功耗既低,速度又快,还全是硬的东西,为什么?因为晶体管太便宜了,而且我做了一大堆,功能全放那儿,你想用哪一个都行,这就是Xilinx在做的。
当然在这上面,编程就是一项挑战了。异构计算一定是今后我们要掌握的,这样才能够为后面的事做准备。异构计算,Xilinx首推的是用OpenCL来做,因为它一次编程,你可以在PC机上跑,也可以再把它编程,也可以在CUP上跑,在任何地方跑,而且数量不限。其核心思想就是异构计算,它不是一个fancy(幻想)、要跟踪潮流的东西,而是我们如果不应用它,大家认为很难持续。Xilinx的Zynq目前是双核的,可能下一代还有更多核,有一万个加密单元,都是硬核的,让你在里面动态组合。
对大数据来讲,应该让分布式的存储用起来和RAM一样是随机地存储,也就是数据库我们一定要做得跟RAM一样。怎么做?如果还按照筛选,我要在1ms内把一大堆数据放到一起筛选,一个方法就是在它的所谓的控制器里再加上过滤逻辑,这样,我读写数据的时候,就可以把我的智能放进去,在网络上用传统的数据就可以实现你的功能。
小结
异构、多核、一大堆晶体管,在1ms内要完成大量计算,这是今后十年业界要面对的事。
这听起来很困难,似乎要很多的知识,什么硬件、软件知识,大家很发怵,认为跟踪该技术太艰难了。其实不难,我自己十多年没写Code,我专门试一下,我利用在火车、飞机上的时间看一看Zynq和Vivado的书和文档,后来做了实验,也差不多会做了。现在我们的课程,在中山大学珠海分校,用五天的时间教大学本科三年级的学生,让他们能够在短时间内掌握Zynq。实际上,Zynq和Vivado没什么了不起,只是工具而已。
因此,虽然挑战很大,今后会有革命性的变化。不过,一旦有新的开始,下决心去试、去做,也没什么难的。(本文根据谢凯年在”OpenHW2014开源硬件与嵌入式计算论坛“录音编写)