CPU硬件是定死的,你只能通过指令去完成你的算法。为了保证其通用性,CPU设计时采用了大量的冗余逻辑,针对其中某一种计算操作都不可能是最优的。
你一个指令需要好几个时钟周期,涉及到数据量大的算法,还有很多存储操作(Cache——内存——磁盘等几级存储的交互,开销一个比一个大,能差几个数量级),不是一般的慢。
FPGA纯硬件,不是软件指令级的操作能比的。这么说吧,FPGA设计是比汇编还要底层的设计层次,这个你能理解吧?
举个例子,我们用FPGA做的硬件下变换,可以做到超实时(正常的1080i转PAL的,每秒25帧,我们可以做到50帧,甚至更高。这里指的是一路),而软件部门做的算法做不到实时,经过大量优化后,在一个双6核平台上才能跑到实时(差不多35帧左右)。注意,我们做的是高质量下变换,不是简单的抽点、bob、weave这些的。 |