(文章来源:雷锋网)
FPGA最早是从专用集成电路发展而来的半定制化的可编程电路。从诞生的那一天起它的身世就决定了它不像CPU那样可以灵活的处理各种没有见过的指令,而只能根据一个固定的模式来处理输入的数据然后输出,FPGA的结构是这样的。
很简单,绝大部分都是计算单元,但没有控制单元并不代表FPGA就不会执行指令了,事实上FPGA里控制单元的角色就是由图中的每个控制单元和单元之间可编程的逻辑连接线来完成的,通过FPGA编程,开发者可以更改FPGA的每个单元的运算逻辑和单元之间的连接方式,从而使其达到和一般的运行程序差不多的效果。它与CPU的不同,在于它无法应对没有被编程过的指令。
编程方式一旦确定,FPGA就只能根据被编程的处理逻辑和方式来处理特定的数据输入。但这样的架构换来的是FPGA内部几乎全是计算单元,因此FPGA的实际运算能力会比看起来强得多,尤其是在运行简单但重复性高的任务的时候,由于简单,因此很少的几个逻辑单元,甚至一个就能独立输出这个运算的结果。而由于省去了CPU的取指和译码两个步骤,FPGA重复运行相同代码的效率得到了极大的提高。
有一个比喻打得很恰当,CPU就像大学里一位德高望重的老教授,积分微分啥都会算,但毕竟它只有一个人,当计算任务太重的时候也会被累趴下,而FPGA这样的结构,就像是整个小学里所有小学生组成的队列,每个人都只会算简单的加减乘除,但有些量大但不复杂的运算任务交给他们就是会比较快。
具体表现在性能上,很明显的一点就是一般的CPU只能同时处理4到8个指令,而不算太差的只要FPGA优化得当,可以同时处理256个甚至更多的指令。其实GPU的设计思路同FPGA类似,都是为了处理大量简单重复的运算而出现的设备。但GPU的性能强悍的同时耗能也很高,而FPGA因为编程和优化都是直接在硬件层面进行的,能耗会低很多。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)