高性能汽车和FPGA?——共同点比您想象得多
2015-03-30
上世纪60年代以及70年代早期被认为是“肌肉车”时代。这是从中端汽车设计采用大型发动机开始的。最著名的例子包括Chevelles、Fairlanes、GTO、442、Chargers和Roadrunners。同一时期,福特Mustang开始发展“小马汽车”,很快就引来了竞争,例如Camaro、Firebird、Barracuda、AMX和Challenger等。那时发动机大小是由立方英寸表示的,明显的能看到车上的发动机。“396”、“429”、“440”或者“455”等数字代表了性能的高低。
这些发动机中最传奇的当属426 Hemi。该发动机自从1964年推出以来,先后发展了第一、第二、第三和第四代,NASCAR限制它后,名声大噪。从1966年直到1971年,要符合NASCAR的批准条款,或者产品质量制造要求,这促使著名的“Street Hemi”面市,部分道奇和普利茅斯采用了它。
Hemi发动机排量为7升,采用高转速气缸,上面是两个篮球大小的4缸化油器,具有非常保守的425 hp额定功率。很少有汽车能够比得上采用了Hemi的Cudas和Challengers;可能只有427 Corvette能够与其相匹敌。
肌肉车时代一直持续到今天,可选择的车型越来越有限了。其价格是可以接受的,大部分消费者都买得起Camaro、Mustang、Corvette、Challenger或者Charger,这些车有V8发动机,达到400+ hp,600-700 hp的发动机还有其他选择。
今天的FPGA生产商正在进行类似的竞争,这对于FPGA客户非常有好处。在过去几年中,逻辑密度、存储器容量、DSP模块、收发器速率和数量等,几乎所有的性能指标都在不断增长。当然,读者对此并不陌生。
一项对比是怎样实现这些性能,也就是理论和实际相联系。回到最初的肌肉车时代,既有手挡也有自动挡。忠实的发烧友选择了手挡。在一名好司机手里,4速手挡明显要好于低效的3速自动挡。手挡也更省油,但那时候不太关心这些。
然而,对于现代的肌肉车,情况正好相反。自动挡使用电子控制而不是油压控制,换挡的速度在100-200ms量级,比人快得多,转速匹配也是如此。电子控制功能帮助司机防止车轮打滑。含有换挡拨片是用于选择自己的档位,尽管这很难提高性能。自动挡现在也很省油,这在今天很重要。档位的相对数量现在反过来了。例如,现在的道奇挑战者有8速自动挡和6速手动挡。当然,很多纯粹主义者不论是出于传统还是手动换挡的直接感觉,还是喜欢手挡。但这再也不与提高性能有关了。
对于FPGA,也有同样的发展趋势,但不是那么众所周知。传统上,FPGA是在Verilog或者VHDL中手动进行编程的,使用定点(整数)数字表示,编程人员决定底层实现,例如,什么时候插入流水线寄存器等。即使是综合和适配器工具全部自动完成设计,最终设计的质量也基本取决于FPGA编程人员的技术水平。
新的FPGA体系结构开始改变这些。例如,现在的Altera Arria 10 FPGA在数千个DSP模块中内置了单精度浮点引擎。使用浮点,FPGA编程人员在每次数字运算后,不必再确定位宽、截断与饱和级,极大的简化了编程任务。浮点数字表示和实现自动完成这些工作。整数现在保留用于常见的功能,例如,循环计数、状态机和存储器索引等。这在算法仿真和实现之间建立了直接通路,保持了系统和FPGA工程师之间的一致性。
使用传统的Verilog和VHDL设计流程支持这些特性的实现,仍然会继续主导FPGA设计流程。但是,还有其他设计流程。OpenCL是GP-GPU编程人员的语言,现在针对FPGA进行了优化,提供真正的“按键式”编译体验。
采用基于模型的设计,设计人员可以继续留在Mathworks环境中,也能够获得最佳结果,很多复杂的大吞吐量参考设计证明了这一点。
与手挡相似,FPGA设计人员仍然可以选择像以前一样进行设计和优化,传统的设计也会跟以前一样工作。但是,FPGA设计人员会发现,新的自动的方法能够实现相同甚至更优的结果。而且,随着逻辑密度的快速增长,很多工程师会发现他们没有足够的时间像以前一样手动优化大规模FPGA设计。就像高性能肌肉车一样,在FPGA世界中,应该开始发挥自动化的优势了。