Reconfigurable computing[可重构计算]

在实验室跟老师做一些硬件加速相关的东西,看文献时看到Reconfigurable computing,发现这个很有意思。
现在每天都有越来越多的数据产生,要处理这些数据如果单纯用CPU计算的话会耗费很多时间和能源,而用FPGA这样的硬件对其中可以并行处理的部分进行加速的话不仅处理速度快,而且更环保。某文章里提到

Itanium 处理器功耗约为 130 瓦特,而每个 Virtex-4 FPGA 的功耗仅约 1.25 W…
…如果数据中心能耗保持当前水平的话,那么预计数据中心的二氧化碳排放量到 2020 年将超过航空公司

为什么用FPGA做异构可以使计算加速呢?Wikipedia上的Reconfigurable computing词条里有个例子很好的解释了这个问题(虽然这个例子的情况比较极端):
有长度为256的数组A,B和C,A、B已经给出,数组C需要你按照C[i]=B[B[B[B[B[B[B[B[A[i]]]]]]]]]算出来。
如果用软件算法来算,大概是这样的:

1
2
3
4
5
6
7
for(int i=0;i<256;i++)
{
  char a=A[i];
  for(int j=0;j<8;j++)
    a=B[a];
  C[i]=a;
}

这需要256*10个CPU周期。
如果用FPGA来算的话,可以看下面这个图

每个周期A数组的一个元素进入电路,图中的B是B数组的ROM实现,图中B的输入代表地址,输出代表该地址的值,蓝色部分是临时存放数值的寄存器。C的元素从Output Stream输出。
用FPGA实现计算同样问题只需要256+8个周期。为什么是256+8?前256个周期是把A[i]都stream进入电路,送完之后还需要8个周期等待没走完的那八个数据。这几乎是CPU算法10倍的加速!(#FPGA设备主频比CPU低,所以实际效果比十倍低)

保护地球、降低碳排放什么的我们技术宅最喜欢了。

同步自:http://BillHsu.me

posted on 2011-10-02 10:16  Bill Hsu  阅读(294)  评论(0编辑  收藏  举报

导航