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的一級緩存的帶寬都比這差得遠?,F在最先進的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的東西.