.

能耗换取灵活性,今天的FPGA走错路了

北京哪家医院治疗白癜风治的好 https://mip.yyk.99.com.cn/fengtai/68389/jingyan-392913.html

选自康奈尔大学

作者:AdrianSampson

机器之心编译

参与:李诗萌、路

在FPGA广泛应用的今天,康奈尔大学计算机科学助理教授AdrianSampson思考它是否走在正确的路上,如何能够实现通用FPGA等问题。

计算FPGA

什么是FPGA?

我认为架构社区对这个概念没有一致的定义。我们来看三个可能的答案:

定义1:FPGA是一堆晶体管,你可以把它们连接(wireup)起来做出任何你想要的电路。它就像一个纳米级面包板。使用FPGA就像芯片流片,但是你只需要买这一张芯片就可以搭建不一样的设计,作为交换,你需要付出一些效率上的代价。

我不喜欢这个答案。因为它既没有从字面上解释清楚人们是如何使用FPGA的,也不是一个贴切的比喻。

从字面上讲这种说法并不对,因为你并不需要重连(rewire)FPGA,它实际上是一个通过路由网络(routingnetwork)连接的查找表2D网格,以及一些算术单元和内存。FPGA可以模拟任意电路,但它们实际上只是在模仿,就像软件电路仿真器模拟电路一样。

这个答案不恰当的地方在于,它过分简化了人们实际使用FPGA的方式。接下来的两个定义能更好地描述FPGA。

定义2:在原型设计和小批量生产中,FPGA相当于定制芯片的廉价替代方案。如果你要搭建一个路由器,你可以提供现成的FPGA,并根据你需要的功能编程,从而避免流片的巨大成本。或者如果你要设计一个CPU,你可以将FPGA作为原型:你可以围绕它构建一个真正可引导的系统,在把设计的CPU送到晶圆厂之前,用来测试和演示。

电路模拟是FPGA的经典主流用例,这也是FPGA最早出现的原因。FPGA的关键在于硬件设计是用HDL形式编码的,而且买一些便宜的硬件就可以得到和ASIC相同的效果。当然,你不可能在FPGA和真正的芯片上使用完全相同的Verilog代码,但至少它们的抽象范围是一样的。

定义3:FPGA是一种伪通用计算加速器,与GPGPU(通用GPU)类似,FPGA可以很好地卸载特定类型的计算。从编程角度上讲,FPGA比CPU更难,但从工作负载角度上讲FPGA是值得的:和CPU基线相比,好的FPGA实现可以提供数量级的性能和能量优势。

这是与ASIC原型设计不同的一个用例。和电路仿真不同,计算加速是FPGA的新兴用例。这也是微软最近成功加速搜索和深度神经网络的原因。而且关键的是,计算实例并不依赖于FPGA和真正ASIC之间的关系:开发人员针对基于FPGA的加速编写的Verilog代码不需要与用来流片的Verilog代码有任何的相似性。

这两种实例在编程、编译器和抽象方面存在巨大差异。我比较


转载请注明:http://www.abachildren.com/hbyx/6268.html