FPGA多数情况下相比ASIC而言,芯片成本大概是100倍的关系,最大的浪费在LUT这里,做出一个LUT-4需要16位存储单元,再加一个4-16译码器,以及其它的连线资源,做成一个LUT-4,至少需要16×6+8个晶体管。那么做一个4输入逻辑,设计的好的话如果用晶体管来做最多使用不超过8个晶体管。假设用LUT来做,相当于用了13倍的晶体管来做同样一件事。MUXF和MUXCY占的晶体管反而少很多,用这些部件速度会快很多。LUT本质上是一个16bit存储器,FD是1bit存储器,FPGA本质上大量的存储器,当把FPGA的LUT和FD尽量用于存储器时,资源利用率就高。
FPGA的优势就在存储带宽上,想想普通一个spartan-3A,20k个lut,每个运行到200MHz,相当于4000Gb/s的带宽,一个先进的CPU的一级缓存的带宽都比这差得远。现在最先进的FPGA,性能相当于这个性能的200倍,想想看这是怎么一个BT的野兽。我的思想是,做同一个设计,尽量把逻辑转化为分布式存储器操作。在一个最优化的逻辑设计里,把逻辑转化为存储器操作后,资源利用率差不多还可以可以提升10倍。当然这个转化过程就要靠悟了。一直以来我强调要学好内功,就是在这些转化过程中体现价值。
另外,那个存储的事情,由于公司政策和职务的关系,现在不能做出来,这不是技术问题,技术方案3年前就有了,但已经销毁,再等时机。顺便提一下,这个存储的基本思想是大家都知道的,类似LZW压缩,但是样本不是64k而是非常大,大到2的64次方,检索过程复杂度极大,我只是把复杂度最大的检索过程转移到最另一个问题的解决上去了。检索过程的思想是解决搜索引擎问题的,做存储只是把检索过程用在LZW压缩上。
最近验证了这个思想,资源利用率一下子提升了8倍,我都觉得很恐怖,在spartan-3A中,2000个silices相当于20万门可以实现16个带PLBDMA和PTP的以太网控制器MAC,以前最优化设计只能做2个,xilinx官方的只能做0.5个.第一次思想进步,资源利用率提高了4倍,第二次进步,又提高了8倍.思想这武器太强大了,我都觉得可怕.
下一步将利用这个思想做一些BT的东西.